diff --git a/pom.xml b/pom.xml
index 0290aea..8ff215d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -221,14 +221,15 @@
-
- ruoyi-admin
- ruoyi-framework
- ruoyi-system
- ruoyi-quartz
- ruoyi-generator
- ruoyi-common
-
+
+ ruoyi-admin
+ ruoyi-framework
+ ruoyi-system
+ ruoyi-quartz
+ ruoyi-generator
+ ruoyi-common
+ ruoyi-client
+
pom
diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml
index 434b5f0..b022da9 100644
--- a/ruoyi-admin/pom.xml
+++ b/ruoyi-admin/pom.xml
@@ -55,13 +55,14 @@
ruoyi-quartz
-
-
- com.ruoyi
- ruoyi-generator
-
+
+
+ com.ruoyi
+ ruoyi-generator
+
-
+
+
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fate/FateCharacterController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fate/FateCharacterController.java
new file mode 100644
index 0000000..694a6ae
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fate/FateCharacterController.java
@@ -0,0 +1,104 @@
+package com.ruoyi.web.controller.fate;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.system.domain.FateCharacter;
+import com.ruoyi.system.service.IFateCharacterService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 角色基础Controller
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+@RestController
+@RequestMapping("/fate/character")
+public class FateCharacterController extends BaseController
+{
+ @Autowired
+ private IFateCharacterService fateCharacterService;
+
+ /**
+ * 查询角色基础列表
+ */
+ @PreAuthorize("@ss.hasPermi('system:character:list')")
+ @GetMapping("/list")
+ public TableDataInfo list(FateCharacter fateCharacter)
+ {
+ startPage();
+ List list = fateCharacterService.selectFateCharacterList(fateCharacter);
+ return getDataTable(list);
+ }
+
+ /**
+ * 导出角色基础列表
+ */
+ @PreAuthorize("@ss.hasPermi('system:character:export')")
+ @Log(title = "角色基础", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(HttpServletResponse response, FateCharacter fateCharacter)
+ {
+ List list = fateCharacterService.selectFateCharacterList(fateCharacter);
+ ExcelUtil util = new ExcelUtil(FateCharacter.class);
+ util.exportExcel(response, list, "角色基础数据");
+ }
+
+ /**
+ * 获取角色基础详细信息
+ */
+ @PreAuthorize("@ss.hasPermi('system:character:query')")
+ @GetMapping(value = "/{characterId}")
+ public AjaxResult getInfo(@PathVariable("characterId") Long characterId)
+ {
+ return success(fateCharacterService.selectFateCharacterByCharacterId(characterId));
+ }
+
+ /**
+ * 新增角色基础
+ */
+ @PreAuthorize("@ss.hasPermi('system:character:add')")
+ @Log(title = "角色基础", businessType = BusinessType.INSERT)
+ @PostMapping
+ public AjaxResult add(@RequestBody FateCharacter fateCharacter)
+ {
+ return toAjax(fateCharacterService.insertFateCharacter(fateCharacter));
+ }
+
+ /**
+ * 修改角色基础
+ */
+ @PreAuthorize("@ss.hasPermi('system:character:edit')")
+ @Log(title = "角色基础", businessType = BusinessType.UPDATE)
+ @PutMapping
+ public AjaxResult edit(@RequestBody FateCharacter fateCharacter)
+ {
+ return toAjax(fateCharacterService.updateFateCharacter(fateCharacter));
+ }
+
+ /**
+ * 删除角色基础
+ */
+ @PreAuthorize("@ss.hasPermi('system:character:remove')")
+ @Log(title = "角色基础", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{characterIds}")
+ public AjaxResult remove(@PathVariable Long[] characterIds)
+ {
+ return toAjax(fateCharacterService.deleteFateCharacterByCharacterIds(characterIds));
+ }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fate/FateCharacterGrowthLogsController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fate/FateCharacterGrowthLogsController.java
new file mode 100644
index 0000000..533226d
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fate/FateCharacterGrowthLogsController.java
@@ -0,0 +1,104 @@
+package com.ruoyi.web.controller.fate;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.system.domain.FateCharacterGrowthLogs;
+import com.ruoyi.system.service.IFateCharacterGrowthLogsService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 角色属性成长记录Controller
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+@RestController
+@RequestMapping("/fate/logs")
+public class FateCharacterGrowthLogsController extends BaseController
+{
+ @Autowired
+ private IFateCharacterGrowthLogsService fateCharacterGrowthLogsService;
+
+ /**
+ * 查询角色属性成长记录列表
+ */
+ @PreAuthorize("@ss.hasPermi('system:logs:list')")
+ @GetMapping("/list")
+ public TableDataInfo list(FateCharacterGrowthLogs fateCharacterGrowthLogs)
+ {
+ startPage();
+ List list = fateCharacterGrowthLogsService.selectFateCharacterGrowthLogsList(fateCharacterGrowthLogs);
+ return getDataTable(list);
+ }
+
+ /**
+ * 导出角色属性成长记录列表
+ */
+ @PreAuthorize("@ss.hasPermi('system:logs:export')")
+ @Log(title = "角色属性成长记录", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(HttpServletResponse response, FateCharacterGrowthLogs fateCharacterGrowthLogs)
+ {
+ List list = fateCharacterGrowthLogsService.selectFateCharacterGrowthLogsList(fateCharacterGrowthLogs);
+ ExcelUtil util = new ExcelUtil(FateCharacterGrowthLogs.class);
+ util.exportExcel(response, list, "角色属性成长记录数据");
+ }
+
+ /**
+ * 获取角色属性成长记录详细信息
+ */
+ @PreAuthorize("@ss.hasPermi('system:logs:query')")
+ @GetMapping(value = "/{logId}")
+ public AjaxResult getInfo(@PathVariable("logId") Long logId)
+ {
+ return success(fateCharacterGrowthLogsService.selectFateCharacterGrowthLogsByLogId(logId));
+ }
+
+ /**
+ * 新增角色属性成长记录
+ */
+ @PreAuthorize("@ss.hasPermi('system:logs:add')")
+ @Log(title = "角色属性成长记录", businessType = BusinessType.INSERT)
+ @PostMapping
+ public AjaxResult add(@RequestBody FateCharacterGrowthLogs fateCharacterGrowthLogs)
+ {
+ return toAjax(fateCharacterGrowthLogsService.insertFateCharacterGrowthLogs(fateCharacterGrowthLogs));
+ }
+
+ /**
+ * 修改角色属性成长记录
+ */
+ @PreAuthorize("@ss.hasPermi('system:logs:edit')")
+ @Log(title = "角色属性成长记录", businessType = BusinessType.UPDATE)
+ @PutMapping
+ public AjaxResult edit(@RequestBody FateCharacterGrowthLogs fateCharacterGrowthLogs)
+ {
+ return toAjax(fateCharacterGrowthLogsService.updateFateCharacterGrowthLogs(fateCharacterGrowthLogs));
+ }
+
+ /**
+ * 删除角色属性成长记录
+ */
+ @PreAuthorize("@ss.hasPermi('system:logs:remove')")
+ @Log(title = "角色属性成长记录", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{logIds}")
+ public AjaxResult remove(@PathVariable Long[] logIds)
+ {
+ return toAjax(fateCharacterGrowthLogsService.deleteFateCharacterGrowthLogsByLogIds(logIds));
+ }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fate/FateCharacterJobsController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fate/FateCharacterJobsController.java
new file mode 100644
index 0000000..3feb769
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fate/FateCharacterJobsController.java
@@ -0,0 +1,104 @@
+package com.ruoyi.web.controller.fate;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.system.domain.FateCharacterJobs;
+import com.ruoyi.system.service.IFateCharacterJobsService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 角色职业Controller
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+@RestController
+@RequestMapping("/fate/charjobs")
+public class FateCharacterJobsController extends BaseController
+{
+ @Autowired
+ private IFateCharacterJobsService fateCharacterJobsService;
+
+ /**
+ * 查询角色职业列表
+ */
+ @PreAuthorize("@ss.hasPermi('system:jobs:list')")
+ @GetMapping("/list")
+ public TableDataInfo list(FateCharacterJobs fateCharacterJobs)
+ {
+ startPage();
+ List list = fateCharacterJobsService.selectFateCharacterJobsList(fateCharacterJobs);
+ return getDataTable(list);
+ }
+
+ /**
+ * 导出角色职业列表
+ */
+ @PreAuthorize("@ss.hasPermi('system:jobs:export')")
+ @Log(title = "角色职业", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(HttpServletResponse response, FateCharacterJobs fateCharacterJobs)
+ {
+ List list = fateCharacterJobsService.selectFateCharacterJobsList(fateCharacterJobs);
+ ExcelUtil util = new ExcelUtil(FateCharacterJobs.class);
+ util.exportExcel(response, list, "角色职业数据");
+ }
+
+ /**
+ * 获取角色职业详细信息
+ */
+ @PreAuthorize("@ss.hasPermi('system:jobs:query')")
+ @GetMapping(value = "/{characterJobId}")
+ public AjaxResult getInfo(@PathVariable("characterJobId") Long characterJobId)
+ {
+ return success(fateCharacterJobsService.selectFateCharacterJobsByCharacterJobId(characterJobId));
+ }
+
+ /**
+ * 新增角色职业
+ */
+ @PreAuthorize("@ss.hasPermi('system:jobs:add')")
+ @Log(title = "角色职业", businessType = BusinessType.INSERT)
+ @PostMapping
+ public AjaxResult add(@RequestBody FateCharacterJobs fateCharacterJobs)
+ {
+ return toAjax(fateCharacterJobsService.insertFateCharacterJobs(fateCharacterJobs));
+ }
+
+ /**
+ * 修改角色职业
+ */
+ @PreAuthorize("@ss.hasPermi('system:jobs:edit')")
+ @Log(title = "角色职业", businessType = BusinessType.UPDATE)
+ @PutMapping
+ public AjaxResult edit(@RequestBody FateCharacterJobs fateCharacterJobs)
+ {
+ return toAjax(fateCharacterJobsService.updateFateCharacterJobs(fateCharacterJobs));
+ }
+
+ /**
+ * 删除角色职业
+ */
+ @PreAuthorize("@ss.hasPermi('system:jobs:remove')")
+ @Log(title = "角色职业", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{characterJobIds}")
+ public AjaxResult remove(@PathVariable Long[] characterJobIds)
+ {
+ return toAjax(fateCharacterJobsService.deleteFateCharacterJobsByCharacterJobIds(characterJobIds));
+ }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fate/FateEquipmentAttributesController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fate/FateEquipmentAttributesController.java
new file mode 100644
index 0000000..13f3d8b
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fate/FateEquipmentAttributesController.java
@@ -0,0 +1,105 @@
+package com.ruoyi.web.controller.fate;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.ruoyi.system.domain.FateEquipmentAttributes;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.system.service.IFateEquipmentAttributesService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 装备附加属性Controller
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+@RestController
+@RequestMapping("/fate/attributes")
+public class FateEquipmentAttributesController extends BaseController
+{
+ @Autowired
+ private IFateEquipmentAttributesService fateEquipmentAttributesService;
+
+ /**
+ * 查询装备附加属性列表
+ */
+ @PreAuthorize("@ss.hasPermi('system:attributes:list')")
+ @GetMapping("/list")
+ public TableDataInfo list(FateEquipmentAttributes fateEquipmentAttributes)
+ {
+ startPage();
+ List list = fateEquipmentAttributesService.selectFateEquipmentAttributesList(fateEquipmentAttributes);
+ return getDataTable(list);
+ }
+
+ /**
+ * 导出装备附加属性列表
+ */
+ @PreAuthorize("@ss.hasPermi('system:attributes:export')")
+ @Log(title = "装备附加属性", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(HttpServletResponse response, FateEquipmentAttributes fateEquipmentAttributes)
+ {
+ List list = fateEquipmentAttributesService.selectFateEquipmentAttributesList(fateEquipmentAttributes);
+ ExcelUtil util = new ExcelUtil(FateEquipmentAttributes.class);
+ util.exportExcel(response, list, "装备附加属性数据");
+ }
+
+ /**
+ * 获取装备附加属性详细信息
+ */
+ @PreAuthorize("@ss.hasPermi('system:attributes:query')")
+ @GetMapping(value = "/{attributeId}")
+ public AjaxResult getInfo(@PathVariable("attributeId") Long attributeId)
+ {
+ return success(fateEquipmentAttributesService.selectFateEquipmentAttributesByAttributeId(attributeId));
+ }
+
+ /**
+ * 新增装备附加属性
+ */
+ @PreAuthorize("@ss.hasPermi('system:attributes:add')")
+ @Log(title = "装备附加属性", businessType = BusinessType.INSERT)
+ @PostMapping
+ public AjaxResult add(@RequestBody FateEquipmentAttributes fateEquipmentAttributes)
+ {
+ return toAjax(fateEquipmentAttributesService.insertFateEquipmentAttributes(fateEquipmentAttributes));
+ }
+
+ /**
+ * 修改装备附加属性
+ */
+ @PreAuthorize("@ss.hasPermi('system:attributes:edit')")
+ @Log(title = "装备附加属性", businessType = BusinessType.UPDATE)
+ @PutMapping
+ public AjaxResult edit(@RequestBody FateEquipmentAttributes fateEquipmentAttributes)
+ {
+ return toAjax(fateEquipmentAttributesService.updateFateEquipmentAttributes(fateEquipmentAttributes));
+ }
+
+ /**
+ * 删除装备附加属性
+ */
+ @PreAuthorize("@ss.hasPermi('system:attributes:remove')")
+ @Log(title = "装备附加属性", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{attributeIds}")
+ public AjaxResult remove(@PathVariable Long[] attributeIds)
+ {
+ return toAjax(fateEquipmentAttributesService.deleteFateEquipmentAttributesByAttributeIds(attributeIds));
+ }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fate/FateEquipmentPossibleAttributesController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fate/FateEquipmentPossibleAttributesController.java
new file mode 100644
index 0000000..fdecf6a
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fate/FateEquipmentPossibleAttributesController.java
@@ -0,0 +1,104 @@
+package com.ruoyi.web.controller.fate;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.system.domain.FateEquipmentPossibleAttributes;
+import com.ruoyi.system.service.IFateEquipmentPossibleAttributesService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 装备可能拥有的属性Controller
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+@RestController
+@RequestMapping("/fate/possible")
+public class FateEquipmentPossibleAttributesController extends BaseController
+{
+ @Autowired
+ private IFateEquipmentPossibleAttributesService fateEquipmentPossibleAttributesService;
+
+ /**
+ * 查询装备可能拥有的属性列表
+ */
+ @PreAuthorize("@ss.hasPermi('system:attributes:list')")
+ @GetMapping("/list")
+ public TableDataInfo list(FateEquipmentPossibleAttributes fateEquipmentPossibleAttributes)
+ {
+ startPage();
+ List list = fateEquipmentPossibleAttributesService.selectFateEquipmentPossibleAttributesList(fateEquipmentPossibleAttributes);
+ return getDataTable(list);
+ }
+
+ /**
+ * 导出装备可能拥有的属性列表
+ */
+ @PreAuthorize("@ss.hasPermi('system:attributes:export')")
+ @Log(title = "装备可能拥有的属性", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(HttpServletResponse response, FateEquipmentPossibleAttributes fateEquipmentPossibleAttributes)
+ {
+ List list = fateEquipmentPossibleAttributesService.selectFateEquipmentPossibleAttributesList(fateEquipmentPossibleAttributes);
+ ExcelUtil util = new ExcelUtil(FateEquipmentPossibleAttributes.class);
+ util.exportExcel(response, list, "装备可能拥有的属性数据");
+ }
+
+ /**
+ * 获取装备可能拥有的属性详细信息
+ */
+ @PreAuthorize("@ss.hasPermi('system:attributes:query')")
+ @GetMapping(value = "/{id}")
+ public AjaxResult getInfo(@PathVariable("id") Long id)
+ {
+ return success(fateEquipmentPossibleAttributesService.selectFateEquipmentPossibleAttributesById(id));
+ }
+
+ /**
+ * 新增装备可能拥有的属性
+ */
+ @PreAuthorize("@ss.hasPermi('system:attributes:add')")
+ @Log(title = "装备可能拥有的属性", businessType = BusinessType.INSERT)
+ @PostMapping
+ public AjaxResult add(@RequestBody FateEquipmentPossibleAttributes fateEquipmentPossibleAttributes)
+ {
+ return toAjax(fateEquipmentPossibleAttributesService.insertFateEquipmentPossibleAttributes(fateEquipmentPossibleAttributes));
+ }
+
+ /**
+ * 修改装备可能拥有的属性
+ */
+ @PreAuthorize("@ss.hasPermi('system:attributes:edit')")
+ @Log(title = "装备可能拥有的属性", businessType = BusinessType.UPDATE)
+ @PutMapping
+ public AjaxResult edit(@RequestBody FateEquipmentPossibleAttributes fateEquipmentPossibleAttributes)
+ {
+ return toAjax(fateEquipmentPossibleAttributesService.updateFateEquipmentPossibleAttributes(fateEquipmentPossibleAttributes));
+ }
+
+ /**
+ * 删除装备可能拥有的属性
+ */
+ @PreAuthorize("@ss.hasPermi('system:attributes:remove')")
+ @Log(title = "装备可能拥有的属性", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public AjaxResult remove(@PathVariable Long[] ids)
+ {
+ return toAjax(fateEquipmentPossibleAttributesService.deleteFateEquipmentPossibleAttributesByIds(ids));
+ }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fate/FateEquipmentQualitiesController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fate/FateEquipmentQualitiesController.java
new file mode 100644
index 0000000..fef25df
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fate/FateEquipmentQualitiesController.java
@@ -0,0 +1,104 @@
+package com.ruoyi.web.controller.fate;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.system.domain.FateEquipmentQualities;
+import com.ruoyi.system.service.IFateEquipmentQualitiesService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 装备品质Controller
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+@RestController
+@RequestMapping("/fate/qualities")
+public class FateEquipmentQualitiesController extends BaseController
+{
+ @Autowired
+ private IFateEquipmentQualitiesService fateEquipmentQualitiesService;
+
+ /**
+ * 查询装备品质列表
+ */
+ @PreAuthorize("@ss.hasPermi('system:qualities:list')")
+ @GetMapping("/list")
+ public TableDataInfo list(FateEquipmentQualities fateEquipmentQualities)
+ {
+ startPage();
+ List list = fateEquipmentQualitiesService.selectFateEquipmentQualitiesList(fateEquipmentQualities);
+ return getDataTable(list);
+ }
+
+ /**
+ * 导出装备品质列表
+ */
+ @PreAuthorize("@ss.hasPermi('system:qualities:export')")
+ @Log(title = "装备品质", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(HttpServletResponse response, FateEquipmentQualities fateEquipmentQualities)
+ {
+ List list = fateEquipmentQualitiesService.selectFateEquipmentQualitiesList(fateEquipmentQualities);
+ ExcelUtil util = new ExcelUtil(FateEquipmentQualities.class);
+ util.exportExcel(response, list, "装备品质数据");
+ }
+
+ /**
+ * 获取装备品质详细信息
+ */
+ @PreAuthorize("@ss.hasPermi('system:qualities:query')")
+ @GetMapping(value = "/{qualityId}")
+ public AjaxResult getInfo(@PathVariable("qualityId") Long qualityId)
+ {
+ return success(fateEquipmentQualitiesService.selectFateEquipmentQualitiesByQualityId(qualityId));
+ }
+
+ /**
+ * 新增装备品质
+ */
+ @PreAuthorize("@ss.hasPermi('system:qualities:add')")
+ @Log(title = "装备品质", businessType = BusinessType.INSERT)
+ @PostMapping
+ public AjaxResult add(@RequestBody FateEquipmentQualities fateEquipmentQualities)
+ {
+ return toAjax(fateEquipmentQualitiesService.insertFateEquipmentQualities(fateEquipmentQualities));
+ }
+
+ /**
+ * 修改装备品质
+ */
+ @PreAuthorize("@ss.hasPermi('system:qualities:edit')")
+ @Log(title = "装备品质", businessType = BusinessType.UPDATE)
+ @PutMapping
+ public AjaxResult edit(@RequestBody FateEquipmentQualities fateEquipmentQualities)
+ {
+ return toAjax(fateEquipmentQualitiesService.updateFateEquipmentQualities(fateEquipmentQualities));
+ }
+
+ /**
+ * 删除装备品质
+ */
+ @PreAuthorize("@ss.hasPermi('system:qualities:remove')")
+ @Log(title = "装备品质", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{qualityIds}")
+ public AjaxResult remove(@PathVariable Long[] qualityIds)
+ {
+ return toAjax(fateEquipmentQualitiesService.deleteFateEquipmentQualitiesByQualityIds(qualityIds));
+ }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fate/FateEquipmentSetItemsController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fate/FateEquipmentSetItemsController.java
new file mode 100644
index 0000000..d2200a7
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fate/FateEquipmentSetItemsController.java
@@ -0,0 +1,104 @@
+package com.ruoyi.web.controller.fate;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.system.domain.FateEquipmentSetItems;
+import com.ruoyi.system.service.IFateEquipmentSetItemsService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 装备套装包含Controller
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+@RestController
+@RequestMapping("/fate/items")
+public class FateEquipmentSetItemsController extends BaseController
+{
+ @Autowired
+ private IFateEquipmentSetItemsService fateEquipmentSetItemsService;
+
+ /**
+ * 查询装备套装包含列表
+ */
+ @PreAuthorize("@ss.hasPermi('system:items:list')")
+ @GetMapping("/list")
+ public TableDataInfo list(FateEquipmentSetItems fateEquipmentSetItems)
+ {
+ startPage();
+ List list = fateEquipmentSetItemsService.selectFateEquipmentSetItemsList(fateEquipmentSetItems);
+ return getDataTable(list);
+ }
+
+ /**
+ * 导出装备套装包含列表
+ */
+ @PreAuthorize("@ss.hasPermi('system:items:export')")
+ @Log(title = "装备套装包含", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(HttpServletResponse response, FateEquipmentSetItems fateEquipmentSetItems)
+ {
+ List list = fateEquipmentSetItemsService.selectFateEquipmentSetItemsList(fateEquipmentSetItems);
+ ExcelUtil util = new ExcelUtil(FateEquipmentSetItems.class);
+ util.exportExcel(response, list, "装备套装包含数据");
+ }
+
+ /**
+ * 获取装备套装包含详细信息
+ */
+ @PreAuthorize("@ss.hasPermi('system:items:query')")
+ @GetMapping(value = "/{id}")
+ public AjaxResult getInfo(@PathVariable("id") Long id)
+ {
+ return success(fateEquipmentSetItemsService.selectFateEquipmentSetItemsById(id));
+ }
+
+ /**
+ * 新增装备套装包含
+ */
+ @PreAuthorize("@ss.hasPermi('system:items:add')")
+ @Log(title = "装备套装包含", businessType = BusinessType.INSERT)
+ @PostMapping
+ public AjaxResult add(@RequestBody FateEquipmentSetItems fateEquipmentSetItems)
+ {
+ return toAjax(fateEquipmentSetItemsService.insertFateEquipmentSetItems(fateEquipmentSetItems));
+ }
+
+ /**
+ * 修改装备套装包含
+ */
+ @PreAuthorize("@ss.hasPermi('system:items:edit')")
+ @Log(title = "装备套装包含", businessType = BusinessType.UPDATE)
+ @PutMapping
+ public AjaxResult edit(@RequestBody FateEquipmentSetItems fateEquipmentSetItems)
+ {
+ return toAjax(fateEquipmentSetItemsService.updateFateEquipmentSetItems(fateEquipmentSetItems));
+ }
+
+ /**
+ * 删除装备套装包含
+ */
+ @PreAuthorize("@ss.hasPermi('system:items:remove')")
+ @Log(title = "装备套装包含", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public AjaxResult remove(@PathVariable Long[] ids)
+ {
+ return toAjax(fateEquipmentSetItemsService.deleteFateEquipmentSetItemsByIds(ids));
+ }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fate/FateEquipmentSetsController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fate/FateEquipmentSetsController.java
new file mode 100644
index 0000000..fd969a9
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fate/FateEquipmentSetsController.java
@@ -0,0 +1,104 @@
+package com.ruoyi.web.controller.fate;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.system.domain.FateEquipmentSets;
+import com.ruoyi.system.service.IFateEquipmentSetsService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 装备套装Controller
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+@RestController
+@RequestMapping("/fate/sets")
+public class FateEquipmentSetsController extends BaseController
+{
+ @Autowired
+ private IFateEquipmentSetsService fateEquipmentSetsService;
+
+ /**
+ * 查询装备套装列表
+ */
+ @PreAuthorize("@ss.hasPermi('system:sets:list')")
+ @GetMapping("/list")
+ public TableDataInfo list(FateEquipmentSets fateEquipmentSets)
+ {
+ startPage();
+ List list = fateEquipmentSetsService.selectFateEquipmentSetsList(fateEquipmentSets);
+ return getDataTable(list);
+ }
+
+ /**
+ * 导出装备套装列表
+ */
+ @PreAuthorize("@ss.hasPermi('system:sets:export')")
+ @Log(title = "装备套装", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(HttpServletResponse response, FateEquipmentSets fateEquipmentSets)
+ {
+ List list = fateEquipmentSetsService.selectFateEquipmentSetsList(fateEquipmentSets);
+ ExcelUtil util = new ExcelUtil(FateEquipmentSets.class);
+ util.exportExcel(response, list, "装备套装数据");
+ }
+
+ /**
+ * 获取装备套装详细信息
+ */
+ @PreAuthorize("@ss.hasPermi('system:sets:query')")
+ @GetMapping(value = "/{setId}")
+ public AjaxResult getInfo(@PathVariable("setId") Long setId)
+ {
+ return success(fateEquipmentSetsService.selectFateEquipmentSetsBySetId(setId));
+ }
+
+ /**
+ * 新增装备套装
+ */
+ @PreAuthorize("@ss.hasPermi('system:sets:add')")
+ @Log(title = "装备套装", businessType = BusinessType.INSERT)
+ @PostMapping
+ public AjaxResult add(@RequestBody FateEquipmentSets fateEquipmentSets)
+ {
+ return toAjax(fateEquipmentSetsService.insertFateEquipmentSets(fateEquipmentSets));
+ }
+
+ /**
+ * 修改装备套装
+ */
+ @PreAuthorize("@ss.hasPermi('system:sets:edit')")
+ @Log(title = "装备套装", businessType = BusinessType.UPDATE)
+ @PutMapping
+ public AjaxResult edit(@RequestBody FateEquipmentSets fateEquipmentSets)
+ {
+ return toAjax(fateEquipmentSetsService.updateFateEquipmentSets(fateEquipmentSets));
+ }
+
+ /**
+ * 删除装备套装
+ */
+ @PreAuthorize("@ss.hasPermi('system:sets:remove')")
+ @Log(title = "装备套装", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{setIds}")
+ public AjaxResult remove(@PathVariable Long[] setIds)
+ {
+ return toAjax(fateEquipmentSetsService.deleteFateEquipmentSetsBySetIds(setIds));
+ }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fate/FateEquipmentTypesController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fate/FateEquipmentTypesController.java
new file mode 100644
index 0000000..ca99476
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fate/FateEquipmentTypesController.java
@@ -0,0 +1,104 @@
+package com.ruoyi.web.controller.fate;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.system.domain.FateEquipmentTypes;
+import com.ruoyi.system.service.IFateEquipmentTypesService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 装备类型Controller
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+@RestController
+@RequestMapping("/fate/types")
+public class FateEquipmentTypesController extends BaseController
+{
+ @Autowired
+ private IFateEquipmentTypesService fateEquipmentTypesService;
+
+ /**
+ * 查询装备类型列表
+ */
+ @PreAuthorize("@ss.hasPermi('system:types:list')")
+ @GetMapping("/list")
+ public TableDataInfo list(FateEquipmentTypes fateEquipmentTypes)
+ {
+ startPage();
+ List list = fateEquipmentTypesService.selectFateEquipmentTypesList(fateEquipmentTypes);
+ return getDataTable(list);
+ }
+
+ /**
+ * 导出装备类型列表
+ */
+ @PreAuthorize("@ss.hasPermi('system:types:export')")
+ @Log(title = "装备类型", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(HttpServletResponse response, FateEquipmentTypes fateEquipmentTypes)
+ {
+ List list = fateEquipmentTypesService.selectFateEquipmentTypesList(fateEquipmentTypes);
+ ExcelUtil util = new ExcelUtil(FateEquipmentTypes.class);
+ util.exportExcel(response, list, "装备类型数据");
+ }
+
+ /**
+ * 获取装备类型详细信息
+ */
+ @PreAuthorize("@ss.hasPermi('system:types:query')")
+ @GetMapping(value = "/{typeId}")
+ public AjaxResult getInfo(@PathVariable("typeId") Long typeId)
+ {
+ return success(fateEquipmentTypesService.selectFateEquipmentTypesByTypeId(typeId));
+ }
+
+ /**
+ * 新增装备类型
+ */
+ @PreAuthorize("@ss.hasPermi('system:types:add')")
+ @Log(title = "装备类型", businessType = BusinessType.INSERT)
+ @PostMapping
+ public AjaxResult add(@RequestBody FateEquipmentTypes fateEquipmentTypes)
+ {
+ return toAjax(fateEquipmentTypesService.insertFateEquipmentTypes(fateEquipmentTypes));
+ }
+
+ /**
+ * 修改装备类型
+ */
+ @PreAuthorize("@ss.hasPermi('system:types:edit')")
+ @Log(title = "装备类型", businessType = BusinessType.UPDATE)
+ @PutMapping
+ public AjaxResult edit(@RequestBody FateEquipmentTypes fateEquipmentTypes)
+ {
+ return toAjax(fateEquipmentTypesService.updateFateEquipmentTypes(fateEquipmentTypes));
+ }
+
+ /**
+ * 删除装备类型
+ */
+ @PreAuthorize("@ss.hasPermi('system:types:remove')")
+ @Log(title = "装备类型", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{typeIds}")
+ public AjaxResult remove(@PathVariable Long[] typeIds)
+ {
+ return toAjax(fateEquipmentTypesService.deleteFateEquipmentTypesByTypeIds(typeIds));
+ }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fate/FateEquipmentsController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fate/FateEquipmentsController.java
new file mode 100644
index 0000000..a886fee
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fate/FateEquipmentsController.java
@@ -0,0 +1,104 @@
+package com.ruoyi.web.controller.fate;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.system.domain.FateEquipments;
+import com.ruoyi.system.service.IFateEquipmentsService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 装备基础Controller
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+@RestController
+@RequestMapping("/fate/equipments")
+public class FateEquipmentsController extends BaseController
+{
+ @Autowired
+ private IFateEquipmentsService fateEquipmentsService;
+
+ /**
+ * 查询装备基础列表
+ */
+ @PreAuthorize("@ss.hasPermi('system:equipments:list')")
+ @GetMapping("/list")
+ public TableDataInfo list(FateEquipments fateEquipments)
+ {
+ startPage();
+ List list = fateEquipmentsService.selectFateEquipmentsList(fateEquipments);
+ return getDataTable(list);
+ }
+
+ /**
+ * 导出装备基础列表
+ */
+ @PreAuthorize("@ss.hasPermi('system:equipments:export')")
+ @Log(title = "装备基础", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(HttpServletResponse response, FateEquipments fateEquipments)
+ {
+ List list = fateEquipmentsService.selectFateEquipmentsList(fateEquipments);
+ ExcelUtil util = new ExcelUtil(FateEquipments.class);
+ util.exportExcel(response, list, "装备基础数据");
+ }
+
+ /**
+ * 获取装备基础详细信息
+ */
+ @PreAuthorize("@ss.hasPermi('system:equipments:query')")
+ @GetMapping(value = "/{equipmentId}")
+ public AjaxResult getInfo(@PathVariable("equipmentId") Long equipmentId)
+ {
+ return success(fateEquipmentsService.selectFateEquipmentsByEquipmentId(equipmentId));
+ }
+
+ /**
+ * 新增装备基础
+ */
+ @PreAuthorize("@ss.hasPermi('system:equipments:add')")
+ @Log(title = "装备基础", businessType = BusinessType.INSERT)
+ @PostMapping
+ public AjaxResult add(@RequestBody FateEquipments fateEquipments)
+ {
+ return toAjax(fateEquipmentsService.insertFateEquipments(fateEquipments));
+ }
+
+ /**
+ * 修改装备基础
+ */
+ @PreAuthorize("@ss.hasPermi('system:equipments:edit')")
+ @Log(title = "装备基础", businessType = BusinessType.UPDATE)
+ @PutMapping
+ public AjaxResult edit(@RequestBody FateEquipments fateEquipments)
+ {
+ return toAjax(fateEquipmentsService.updateFateEquipments(fateEquipments));
+ }
+
+ /**
+ * 删除装备基础
+ */
+ @PreAuthorize("@ss.hasPermi('system:equipments:remove')")
+ @Log(title = "装备基础", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{equipmentIds}")
+ public AjaxResult remove(@PathVariable Long[] equipmentIds)
+ {
+ return toAjax(fateEquipmentsService.deleteFateEquipmentsByEquipmentIds(equipmentIds));
+ }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fate/FateJobLevelBonusController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fate/FateJobLevelBonusController.java
new file mode 100644
index 0000000..bb062ed
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fate/FateJobLevelBonusController.java
@@ -0,0 +1,104 @@
+package com.ruoyi.web.controller.fate;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.system.domain.FateJobLevelBonus;
+import com.ruoyi.system.service.IFateJobLevelBonusService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 职业等级加成Controller
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+@RestController
+@RequestMapping("/fate/bonus")
+public class FateJobLevelBonusController extends BaseController
+{
+ @Autowired
+ private IFateJobLevelBonusService fateJobLevelBonusService;
+
+ /**
+ * 查询职业等级加成列表
+ */
+ @PreAuthorize("@ss.hasPermi('system:bonus:list')")
+ @GetMapping("/list")
+ public TableDataInfo list(FateJobLevelBonus fateJobLevelBonus)
+ {
+ startPage();
+ List list = fateJobLevelBonusService.selectFateJobLevelBonusList(fateJobLevelBonus);
+ return getDataTable(list);
+ }
+
+ /**
+ * 导出职业等级加成列表
+ */
+ @PreAuthorize("@ss.hasPermi('system:bonus:export')")
+ @Log(title = "职业等级加成", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(HttpServletResponse response, FateJobLevelBonus fateJobLevelBonus)
+ {
+ List list = fateJobLevelBonusService.selectFateJobLevelBonusList(fateJobLevelBonus);
+ ExcelUtil util = new ExcelUtil(FateJobLevelBonus.class);
+ util.exportExcel(response, list, "职业等级加成数据");
+ }
+
+ /**
+ * 获取职业等级加成详细信息
+ */
+ @PreAuthorize("@ss.hasPermi('system:bonus:query')")
+ @GetMapping(value = "/{bonusId}")
+ public AjaxResult getInfo(@PathVariable("bonusId") Long bonusId)
+ {
+ return success(fateJobLevelBonusService.selectFateJobLevelBonusByBonusId(bonusId));
+ }
+
+ /**
+ * 新增职业等级加成
+ */
+ @PreAuthorize("@ss.hasPermi('system:bonus:add')")
+ @Log(title = "职业等级加成", businessType = BusinessType.INSERT)
+ @PostMapping
+ public AjaxResult add(@RequestBody FateJobLevelBonus fateJobLevelBonus)
+ {
+ return toAjax(fateJobLevelBonusService.insertFateJobLevelBonus(fateJobLevelBonus));
+ }
+
+ /**
+ * 修改职业等级加成
+ */
+ @PreAuthorize("@ss.hasPermi('system:bonus:edit')")
+ @Log(title = "职业等级加成", businessType = BusinessType.UPDATE)
+ @PutMapping
+ public AjaxResult edit(@RequestBody FateJobLevelBonus fateJobLevelBonus)
+ {
+ return toAjax(fateJobLevelBonusService.updateFateJobLevelBonus(fateJobLevelBonus));
+ }
+
+ /**
+ * 删除职业等级加成
+ */
+ @PreAuthorize("@ss.hasPermi('system:bonus:remove')")
+ @Log(title = "职业等级加成", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{bonusIds}")
+ public AjaxResult remove(@PathVariable Long[] bonusIds)
+ {
+ return toAjax(fateJobLevelBonusService.deleteFateJobLevelBonusByBonusIds(bonusIds));
+ }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fate/FateJobPromotionsController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fate/FateJobPromotionsController.java
new file mode 100644
index 0000000..ce07322
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fate/FateJobPromotionsController.java
@@ -0,0 +1,104 @@
+package com.ruoyi.web.controller.fate;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.system.domain.FateJobPromotions;
+import com.ruoyi.system.service.IFateJobPromotionsService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 职业进阶关系Controller
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+@RestController
+@RequestMapping("/fate/promotions")
+public class FateJobPromotionsController extends BaseController
+{
+ @Autowired
+ private IFateJobPromotionsService fateJobPromotionsService;
+
+ /**
+ * 查询职业进阶关系列表
+ */
+ @PreAuthorize("@ss.hasPermi('system:promotions:list')")
+ @GetMapping("/list")
+ public TableDataInfo list(FateJobPromotions fateJobPromotions)
+ {
+ startPage();
+ List list = fateJobPromotionsService.selectFateJobPromotionsList(fateJobPromotions);
+ return getDataTable(list);
+ }
+
+ /**
+ * 导出职业进阶关系列表
+ */
+ @PreAuthorize("@ss.hasPermi('system:promotions:export')")
+ @Log(title = "职业进阶关系", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(HttpServletResponse response, FateJobPromotions fateJobPromotions)
+ {
+ List list = fateJobPromotionsService.selectFateJobPromotionsList(fateJobPromotions);
+ ExcelUtil util = new ExcelUtil(FateJobPromotions.class);
+ util.exportExcel(response, list, "职业进阶关系数据");
+ }
+
+ /**
+ * 获取职业进阶关系详细信息
+ */
+ @PreAuthorize("@ss.hasPermi('system:promotions:query')")
+ @GetMapping(value = "/{promotionId}")
+ public AjaxResult getInfo(@PathVariable("promotionId") Long promotionId)
+ {
+ return success(fateJobPromotionsService.selectFateJobPromotionsByPromotionId(promotionId));
+ }
+
+ /**
+ * 新增职业进阶关系
+ */
+ @PreAuthorize("@ss.hasPermi('system:promotions:add')")
+ @Log(title = "职业进阶关系", businessType = BusinessType.INSERT)
+ @PostMapping
+ public AjaxResult add(@RequestBody FateJobPromotions fateJobPromotions)
+ {
+ return toAjax(fateJobPromotionsService.insertFateJobPromotions(fateJobPromotions));
+ }
+
+ /**
+ * 修改职业进阶关系
+ */
+ @PreAuthorize("@ss.hasPermi('system:promotions:edit')")
+ @Log(title = "职业进阶关系", businessType = BusinessType.UPDATE)
+ @PutMapping
+ public AjaxResult edit(@RequestBody FateJobPromotions fateJobPromotions)
+ {
+ return toAjax(fateJobPromotionsService.updateFateJobPromotions(fateJobPromotions));
+ }
+
+ /**
+ * 删除职业进阶关系
+ */
+ @PreAuthorize("@ss.hasPermi('system:promotions:remove')")
+ @Log(title = "职业进阶关系", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{promotionIds}")
+ public AjaxResult remove(@PathVariable Long[] promotionIds)
+ {
+ return toAjax(fateJobPromotionsService.deleteFateJobPromotionsByPromotionIds(promotionIds));
+ }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fate/FateJobSkillsController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fate/FateJobSkillsController.java
new file mode 100644
index 0000000..1b03504
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fate/FateJobSkillsController.java
@@ -0,0 +1,105 @@
+package com.ruoyi.web.controller.fate;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.ruoyi.system.domain.FateJobSkills;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.system.service.IFateJobSkillsService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 职业可学技能Controller
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+@RestController
+@RequestMapping("/fate/skills")
+public class FateJobSkillsController extends BaseController
+{
+ @Autowired
+ private IFateJobSkillsService fateJobSkillsService;
+
+ /**
+ * 查询职业可学技能列表
+ */
+ @PreAuthorize("@ss.hasPermi('system:skills:list')")
+ @GetMapping("/list")
+ public TableDataInfo list(FateJobSkills fateJobSkills)
+ {
+ startPage();
+ List list = fateJobSkillsService.selectFateJobSkillsList(fateJobSkills);
+ return getDataTable(list);
+ }
+
+ /**
+ * 导出职业可学技能列表
+ */
+ @PreAuthorize("@ss.hasPermi('system:skills:export')")
+ @Log(title = "职业可学技能", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(HttpServletResponse response, FateJobSkills fateJobSkills)
+ {
+ List list = fateJobSkillsService.selectFateJobSkillsList(fateJobSkills);
+ ExcelUtil util = new ExcelUtil(FateJobSkills.class);
+ util.exportExcel(response, list, "职业可学技能数据");
+ }
+
+ /**
+ * 获取职业可学技能详细信息
+ */
+ @PreAuthorize("@ss.hasPermi('system:skills:query')")
+ @GetMapping(value = "/{jobSkillId}")
+ public AjaxResult getInfo(@PathVariable("jobSkillId") Long jobSkillId)
+ {
+ return success(fateJobSkillsService.selectFateJobSkillsByJobSkillId(jobSkillId));
+ }
+
+ /**
+ * 新增职业可学技能
+ */
+ @PreAuthorize("@ss.hasPermi('system:skills:add')")
+ @Log(title = "职业可学技能", businessType = BusinessType.INSERT)
+ @PostMapping
+ public AjaxResult add(@RequestBody FateJobSkills fateJobSkills)
+ {
+ return toAjax(fateJobSkillsService.insertFateJobSkills(fateJobSkills));
+ }
+
+ /**
+ * 修改职业可学技能
+ */
+ @PreAuthorize("@ss.hasPermi('system:skills:edit')")
+ @Log(title = "职业可学技能", businessType = BusinessType.UPDATE)
+ @PutMapping
+ public AjaxResult edit(@RequestBody FateJobSkills fateJobSkills)
+ {
+ return toAjax(fateJobSkillsService.updateFateJobSkills(fateJobSkills));
+ }
+
+ /**
+ * 删除职业可学技能
+ */
+ @PreAuthorize("@ss.hasPermi('system:skills:remove')")
+ @Log(title = "职业可学技能", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{jobSkillIds}")
+ public AjaxResult remove(@PathVariable Long[] jobSkillIds)
+ {
+ return toAjax(fateJobSkillsService.deleteFateJobSkillsByJobSkillIds(jobSkillIds));
+ }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fate/FateJobsController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fate/FateJobsController.java
new file mode 100644
index 0000000..4edad95
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fate/FateJobsController.java
@@ -0,0 +1,104 @@
+package com.ruoyi.web.controller.fate;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.system.domain.FateJobs;
+import com.ruoyi.system.service.IFateJobsService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 职业基础Controller
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+@RestController
+@RequestMapping("/fate/jobs")
+public class FateJobsController extends BaseController
+{
+ @Autowired
+ private IFateJobsService fateJobsService;
+
+ /**
+ * 查询职业基础列表
+ */
+ @PreAuthorize("@ss.hasPermi('fate:jobs:list')")
+ @GetMapping("/list")
+ public TableDataInfo list(FateJobs fateJobs)
+ {
+ startPage();
+ List list = fateJobsService.selectFateJobsList(fateJobs);
+ return getDataTable(list);
+ }
+
+ /**
+ * 导出职业基础列表
+ */
+ @PreAuthorize("@ss.hasPermi('fate:jobs:export')")
+ @Log(title = "职业基础", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(HttpServletResponse response, FateJobs fateJobs)
+ {
+ List list = fateJobsService.selectFateJobsList(fateJobs);
+ ExcelUtil util = new ExcelUtil(FateJobs.class);
+ util.exportExcel(response, list, "职业基础数据");
+ }
+
+ /**
+ * 获取职业基础详细信息
+ */
+ @PreAuthorize("@ss.hasPermi('fate:jobs:query')")
+ @GetMapping(value = "/{jobId}")
+ public AjaxResult getInfo(@PathVariable("jobId") Long jobId)
+ {
+ return success(fateJobsService.selectFateJobsByJobId(jobId));
+ }
+
+ /**
+ * 新增职业基础
+ */
+ @PreAuthorize("@ss.hasPermi('fate:jobs:add')")
+ @Log(title = "职业基础", businessType = BusinessType.INSERT)
+ @PostMapping
+ public AjaxResult add(@RequestBody FateJobs fateJobs)
+ {
+ return toAjax(fateJobsService.insertFateJobs(fateJobs));
+ }
+
+ /**
+ * 修改职业基础
+ */
+ @PreAuthorize("@ss.hasPermi('fate:jobs:edit')")
+ @Log(title = "职业基础", businessType = BusinessType.UPDATE)
+ @PutMapping
+ public AjaxResult edit(@RequestBody FateJobs fateJobs)
+ {
+ return toAjax(fateJobsService.updateFateJobs(fateJobs));
+ }
+
+ /**
+ * 删除职业基础
+ */
+ @PreAuthorize("@ss.hasPermi('fate:jobs:remove')")
+ @Log(title = "职业基础", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{jobIds}")
+ public AjaxResult remove(@PathVariable Long[] jobIds)
+ {
+ return toAjax(fateJobsService.deleteFateJobsByJobIds(jobIds));
+ }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fate/FateUserCharacterController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fate/FateUserCharacterController.java
new file mode 100644
index 0000000..2b1e05d
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fate/FateUserCharacterController.java
@@ -0,0 +1,104 @@
+package com.ruoyi.web.controller.fate;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.system.domain.FateUserCharacter;
+import com.ruoyi.system.service.IFateUserCharacterService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 用户角色Controller
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+@RestController
+@RequestMapping("/fate/userchar")
+public class FateUserCharacterController extends BaseController
+{
+ @Autowired
+ private IFateUserCharacterService fateUserCharacterService;
+
+ /**
+ * 查询用户角色列表
+ */
+ @PreAuthorize("@ss.hasPermi('system:character:list')")
+ @GetMapping("/list")
+ public TableDataInfo list(FateUserCharacter fateUserCharacter)
+ {
+ startPage();
+ List list = fateUserCharacterService.selectFateUserCharacterList(fateUserCharacter);
+ return getDataTable(list);
+ }
+
+ /**
+ * 导出用户角色列表
+ */
+ @PreAuthorize("@ss.hasPermi('system:character:export')")
+ @Log(title = "用户角色", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(HttpServletResponse response, FateUserCharacter fateUserCharacter)
+ {
+ List list = fateUserCharacterService.selectFateUserCharacterList(fateUserCharacter);
+ ExcelUtil util = new ExcelUtil(FateUserCharacter.class);
+ util.exportExcel(response, list, "用户角色数据");
+ }
+
+ /**
+ * 获取用户角色详细信息
+ */
+ @PreAuthorize("@ss.hasPermi('system:character:query')")
+ @GetMapping(value = "/{userCharacterId}")
+ public AjaxResult getInfo(@PathVariable("userCharacterId") Long userCharacterId)
+ {
+ return success(fateUserCharacterService.selectFateUserCharacterByUserCharacterId(userCharacterId));
+ }
+
+ /**
+ * 新增用户角色
+ */
+ @PreAuthorize("@ss.hasPermi('system:character:add')")
+ @Log(title = "用户角色", businessType = BusinessType.INSERT)
+ @PostMapping
+ public AjaxResult add(@RequestBody FateUserCharacter fateUserCharacter)
+ {
+ return toAjax(fateUserCharacterService.insertFateUserCharacter(fateUserCharacter));
+ }
+
+ /**
+ * 修改用户角色
+ */
+ @PreAuthorize("@ss.hasPermi('system:character:edit')")
+ @Log(title = "用户角色", businessType = BusinessType.UPDATE)
+ @PutMapping
+ public AjaxResult edit(@RequestBody FateUserCharacter fateUserCharacter)
+ {
+ return toAjax(fateUserCharacterService.updateFateUserCharacter(fateUserCharacter));
+ }
+
+ /**
+ * 删除用户角色
+ */
+ @PreAuthorize("@ss.hasPermi('system:character:remove')")
+ @Log(title = "用户角色", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{userCharacterIds}")
+ public AjaxResult remove(@PathVariable Long[] userCharacterIds)
+ {
+ return toAjax(fateUserCharacterService.deleteFateUserCharacterByUserCharacterIds(userCharacterIds));
+ }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fate/FateUserEquipmentsController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fate/FateUserEquipmentsController.java
new file mode 100644
index 0000000..9825403
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fate/FateUserEquipmentsController.java
@@ -0,0 +1,104 @@
+package com.ruoyi.web.controller.fate;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.system.domain.FateUserEquipments;
+import com.ruoyi.system.service.IFateUserEquipmentsService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 用户装备Controller
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+@RestController
+@RequestMapping("/fate/userequipments")
+public class FateUserEquipmentsController extends BaseController
+{
+ @Autowired
+ private IFateUserEquipmentsService fateUserEquipmentsService;
+
+ /**
+ * 查询用户装备列表
+ */
+ @PreAuthorize("@ss.hasPermi('system:equipments:list')")
+ @GetMapping("/list")
+ public TableDataInfo list(FateUserEquipments fateUserEquipments)
+ {
+ startPage();
+ List list = fateUserEquipmentsService.selectFateUserEquipmentsList(fateUserEquipments);
+ return getDataTable(list);
+ }
+
+ /**
+ * 导出用户装备列表
+ */
+ @PreAuthorize("@ss.hasPermi('system:equipments:export')")
+ @Log(title = "用户装备", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(HttpServletResponse response, FateUserEquipments fateUserEquipments)
+ {
+ List list = fateUserEquipmentsService.selectFateUserEquipmentsList(fateUserEquipments);
+ ExcelUtil util = new ExcelUtil(FateUserEquipments.class);
+ util.exportExcel(response, list, "用户装备数据");
+ }
+
+ /**
+ * 获取用户装备详细信息
+ */
+ @PreAuthorize("@ss.hasPermi('system:equipments:query')")
+ @GetMapping(value = "/{userEquipmentId}")
+ public AjaxResult getInfo(@PathVariable("userEquipmentId") Long userEquipmentId)
+ {
+ return success(fateUserEquipmentsService.selectFateUserEquipmentsByUserEquipmentId(userEquipmentId));
+ }
+
+ /**
+ * 新增用户装备
+ */
+ @PreAuthorize("@ss.hasPermi('system:equipments:add')")
+ @Log(title = "用户装备", businessType = BusinessType.INSERT)
+ @PostMapping
+ public AjaxResult add(@RequestBody FateUserEquipments fateUserEquipments)
+ {
+ return toAjax(fateUserEquipmentsService.insertFateUserEquipments(fateUserEquipments));
+ }
+
+ /**
+ * 修改用户装备
+ */
+ @PreAuthorize("@ss.hasPermi('system:equipments:edit')")
+ @Log(title = "用户装备", businessType = BusinessType.UPDATE)
+ @PutMapping
+ public AjaxResult edit(@RequestBody FateUserEquipments fateUserEquipments)
+ {
+ return toAjax(fateUserEquipmentsService.updateFateUserEquipments(fateUserEquipments));
+ }
+
+ /**
+ * 删除用户装备
+ */
+ @PreAuthorize("@ss.hasPermi('system:equipments:remove')")
+ @Log(title = "用户装备", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{userEquipmentIds}")
+ public AjaxResult remove(@PathVariable Long[] userEquipmentIds)
+ {
+ return toAjax(fateUserEquipmentsService.deleteFateUserEquipmentsByUserEquipmentIds(userEquipmentIds));
+ }
+}
diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml
index cf88cde..fbdac0e 100644
--- a/ruoyi-admin/src/main/resources/application.yml
+++ b/ruoyi-admin/src/main/resources/application.yml
@@ -6,8 +6,8 @@ ruoyi:
version: 3.9.0
# 版权年份
copyrightYear: 2025
- # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)
- profile: D:/ruoyi/uploadPath
+ # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)
+ profile: /Users/zxf/Documents/fate/upload
# 获取ip地址开关
addressEnabled: false
# 验证码类型 math 数字计算 char 字符验证
@@ -97,14 +97,36 @@ token:
# 令牌有效期(默认30分钟)
expireTime: 30
-# MyBatis配置
-mybatis:
- # 搜索指定包别名
- typeAliasesPackage: com.ruoyi.**.domain
- # 配置mapper的扫描,找到所有的mapper.xml映射文件
- mapperLocations: classpath*:mapper/**/*Mapper.xml
- # 加载全局的配置文件
- configLocation: classpath:mybatis/mybatis-config.xml
+# MyBatis配置
+mybatis:
+ # 搜索指定包别名
+ typeAliasesPackage: com.ruoyi.**.domain
+ # 配置mapper的扫描,找到所有的mapper.xml映射文件
+ mapperLocations: classpath*:mapper/**/*Mapper.xml
+ # 加载全局的配置文件
+ configLocation: classpath:mybatis/mybatis-config.xml
+
+# 微信小程序配置
+wx:
+ miniapp:
+ appid: your-wechat-appid
+ secret: your-wechat-secret
+
+# 支付宝配置
+alipay:
+ app-id: your-alipay-appid
+ private-key: your-alipay-private-key
+ alipay-public-key: your-alipay-public-key
+ server-url: https://openapi.alipay.com/gateway.do
+ charset: UTF-8
+ sign-type: RSA2
+
+# 抖音配置
+douyin:
+ app-id: your-douyin-appid
+ app-secret: your-douyin-secret
+ access-token-url: https://developer.toutiao.com/api/apps/v2/token
+ user-info-url: https://developer.toutiao.com/api/apps/v2/user/info
# PageHelper分页插件
pagehelper:
diff --git a/ruoyi-system/pom.xml b/ruoyi-system/pom.xml
index ba8b1a8..130a0d2 100644
--- a/ruoyi-system/pom.xml
+++ b/ruoyi-system/pom.xml
@@ -15,14 +15,42 @@
system系统模块
-
-
-
-
- com.ruoyi
- ruoyi-common
-
-
-
+
+
+
+
+ com.ruoyi
+ ruoyi-common
+
+
+
+
+ com.github.binarywang
+ weixin-java-miniapp
+ 4.5.0
+
+
+
+
+ com.alipay.sdk
+ alipay-sdk-java
+ 4.38.157.ALL
+
+
+
+
+ org.apache.httpcomponents
+ httpclient
+ 4.5.13
+
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.83
+
+
+
\ No newline at end of file
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/FateCharacter.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/FateCharacter.java
new file mode 100644
index 0000000..bcb4cae
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/FateCharacter.java
@@ -0,0 +1,409 @@
+package com.ruoyi.system.domain;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 角色基础对象 fate_character
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+public class FateCharacter extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /** $column.columnComment */
+ private Long characterId;
+
+ /** 角色名称 */
+ @Excel(name = "角色名称")
+ private String name;
+
+ /** 稀有度(1-5星) */
+ @Excel(name = "稀有度(1-5星)")
+ private Long rarity;
+
+ /** 稀有度描述 */
+ private transient String rarityDesc;
+
+ /** 基础生命值最小值 */
+ @Excel(name = "基础生命值最小值")
+ private BigDecimal baseHpMin;
+
+ /** 基础生命值最大值 */
+ @Excel(name = "基础生命值最大值")
+ private BigDecimal baseHpMax;
+
+ /** 基础攻击力最小值 */
+ @Excel(name = "基础攻击力最小值")
+ private BigDecimal baseAtkMin;
+
+ /** 基础攻击力最大值 */
+ @Excel(name = "基础攻击力最大值")
+ private BigDecimal baseAtkMax;
+
+ /** 基础防御力最小值 */
+ @Excel(name = "基础防御力最小值")
+ private BigDecimal baseDefMin;
+
+ /** 基础防御力最大值 */
+ @Excel(name = "基础防御力最大值")
+ private BigDecimal baseDefMax;
+
+ /** 基础魔防最小值 */
+ @Excel(name = "基础魔防最小值")
+ private BigDecimal baseResMin;
+
+ /** 基础魔防最大值 */
+ @Excel(name = "基础魔防最大值")
+ private BigDecimal baseResMax;
+
+ /** 基础速度最小值 */
+ @Excel(name = "基础速度最小值")
+ private BigDecimal baseSpdMin;
+
+ /** 基础速度最大值 */
+ @Excel(name = "基础速度最大值")
+ private BigDecimal baseSpdMax;
+
+ /** HP成长率 */
+ @Excel(name = "HP成长率")
+ private BigDecimal growthHp;
+
+ /** 攻击成长率 */
+ @Excel(name = "攻击成长率")
+ private BigDecimal growthAtk;
+
+ /** 防御成长率 */
+ @Excel(name = "防御成长率")
+ private BigDecimal growthDef;
+
+ /** 魔防成长率 */
+ @Excel(name = "魔防成长率")
+ private BigDecimal growthRes;
+
+ /** 速度成长率 */
+ @Excel(name = "速度成长率")
+ private BigDecimal growthSpd;
+
+ /** 移动类型 */
+ @Excel(name = "移动类型")
+ private String moveType;
+
+ /** 移动类型描述 */
+ private transient String moveTypeDesc;
+
+ /** 武器类型 */
+ @Excel(name = "武器类型")
+ private String weaponType;
+
+ /** 武器类型描述 */
+ private transient String weaponTypeDesc;
+
+ /** 角色描述 */
+ @Excel(name = "角色描述")
+ private String description;
+
+ /** 角色头像 */
+ @Excel(name = "角色头像")
+ private String avatarUrl;
+
+ /** $column.columnComment */
+ @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+ private Date createdAt;
+
+ public void setCharacterId(Long characterId)
+ {
+ this.characterId = characterId;
+ }
+
+ public Long getCharacterId()
+ {
+ return characterId;
+ }
+
+ public void setName(String name)
+ {
+ this.name = name;
+ }
+
+ public String getName()
+ {
+ return name;
+ }
+
+ public void setRarity(Long rarity)
+ {
+ this.rarity = rarity;
+ }
+
+ public Long getRarity()
+ {
+ return rarity;
+ }
+
+ public String getRarityDesc()
+ {
+ return com.ruoyi.system.domain.enums.RarityEnum.getDescByCode(rarity);
+ }
+
+ public void setRarityDesc(String rarityDesc)
+ {
+ this.rarityDesc = rarityDesc;
+ }
+
+ public void setBaseHpMin(BigDecimal baseHpMin)
+ {
+ this.baseHpMin = baseHpMin;
+ }
+
+ public BigDecimal getBaseHpMin()
+ {
+ return baseHpMin;
+ }
+
+ public void setBaseHpMax(BigDecimal baseHpMax)
+ {
+ this.baseHpMax = baseHpMax;
+ }
+
+ public BigDecimal getBaseHpMax()
+ {
+ return baseHpMax;
+ }
+
+ public void setBaseAtkMin(BigDecimal baseAtkMin)
+ {
+ this.baseAtkMin = baseAtkMin;
+ }
+
+ public BigDecimal getBaseAtkMin()
+ {
+ return baseAtkMin;
+ }
+
+ public void setBaseAtkMax(BigDecimal baseAtkMax)
+ {
+ this.baseAtkMax = baseAtkMax;
+ }
+
+ public BigDecimal getBaseAtkMax()
+ {
+ return baseAtkMax;
+ }
+
+ public void setBaseDefMin(BigDecimal baseDefMin)
+ {
+ this.baseDefMin = baseDefMin;
+ }
+
+ public BigDecimal getBaseDefMin()
+ {
+ return baseDefMin;
+ }
+
+ public void setBaseDefMax(BigDecimal baseDefMax)
+ {
+ this.baseDefMax = baseDefMax;
+ }
+
+ public BigDecimal getBaseDefMax()
+ {
+ return baseDefMax;
+ }
+
+ public void setBaseResMin(BigDecimal baseResMin)
+ {
+ this.baseResMin = baseResMin;
+ }
+
+ public BigDecimal getBaseResMin()
+ {
+ return baseResMin;
+ }
+
+ public void setBaseResMax(BigDecimal baseResMax)
+ {
+ this.baseResMax = baseResMax;
+ }
+
+ public BigDecimal getBaseResMax()
+ {
+ return baseResMax;
+ }
+
+ public void setBaseSpdMin(BigDecimal baseSpdMin)
+ {
+ this.baseSpdMin = baseSpdMin;
+ }
+
+ public BigDecimal getBaseSpdMin()
+ {
+ return baseSpdMin;
+ }
+
+ public void setBaseSpdMax(BigDecimal baseSpdMax)
+ {
+ this.baseSpdMax = baseSpdMax;
+ }
+
+ public BigDecimal getBaseSpdMax()
+ {
+ return baseSpdMax;
+ }
+
+ public void setGrowthHp(BigDecimal growthHp)
+ {
+ this.growthHp = growthHp;
+ }
+
+ public BigDecimal getGrowthHp()
+ {
+ return growthHp;
+ }
+
+ public void setGrowthAtk(BigDecimal growthAtk)
+ {
+ this.growthAtk = growthAtk;
+ }
+
+ public BigDecimal getGrowthAtk()
+ {
+ return growthAtk;
+ }
+
+ public void setGrowthDef(BigDecimal growthDef)
+ {
+ this.growthDef = growthDef;
+ }
+
+ public BigDecimal getGrowthDef()
+ {
+ return growthDef;
+ }
+
+ public void setGrowthRes(BigDecimal growthRes)
+ {
+ this.growthRes = growthRes;
+ }
+
+ public BigDecimal getGrowthRes()
+ {
+ return growthRes;
+ }
+
+ public void setGrowthSpd(BigDecimal growthSpd)
+ {
+ this.growthSpd = growthSpd;
+ }
+
+ public BigDecimal getGrowthSpd()
+ {
+ return growthSpd;
+ }
+
+ public void setMoveType(String moveType)
+ {
+ this.moveType = moveType;
+ }
+
+ public String getMoveType()
+ {
+ return moveType;
+ }
+
+ public String getMoveTypeDesc()
+ {
+ return com.ruoyi.system.domain.enums.MoveTypeEnum.getDescByCode(moveType);
+ }
+
+ public void setMoveTypeDesc(String moveTypeDesc)
+ {
+ this.moveTypeDesc = moveTypeDesc;
+ }
+
+ public void setWeaponType(String weaponType)
+ {
+ this.weaponType = weaponType;
+ }
+
+ public String getWeaponType()
+ {
+ return weaponType;
+ }
+
+ public String getWeaponTypeDesc()
+ {
+ return com.ruoyi.system.domain.enums.WeaponTypeEnum.getDescByCode(weaponType);
+ }
+
+ public void setWeaponTypeDesc(String weaponTypeDesc)
+ {
+ this.weaponTypeDesc = weaponTypeDesc;
+ }
+
+ public void setDescription(String description)
+ {
+ this.description = description;
+ }
+
+ public String getDescription()
+ {
+ return description;
+ }
+
+ public void setAvatarUrl(String avatarUrl)
+ {
+ this.avatarUrl = avatarUrl;
+ }
+
+ public String getAvatarUrl()
+ {
+ return avatarUrl;
+ }
+
+ public void setCreatedAt(Date createdAt)
+ {
+ this.createdAt = createdAt;
+ }
+
+ public Date getCreatedAt()
+ {
+ return createdAt;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+ .append("characterId", getCharacterId())
+ .append("name", getName())
+ .append("rarity", getRarity())
+ .append("baseHpMin", getBaseHpMin())
+ .append("baseHpMax", getBaseHpMax())
+ .append("baseAtkMin", getBaseAtkMin())
+ .append("baseAtkMax", getBaseAtkMax())
+ .append("baseDefMin", getBaseDefMin())
+ .append("baseDefMax", getBaseDefMax())
+ .append("baseResMin", getBaseResMin())
+ .append("baseResMax", getBaseResMax())
+ .append("baseSpdMin", getBaseSpdMin())
+ .append("baseSpdMax", getBaseSpdMax())
+ .append("growthHp", getGrowthHp())
+ .append("growthAtk", getGrowthAtk())
+ .append("growthDef", getGrowthDef())
+ .append("growthRes", getGrowthRes())
+ .append("growthSpd", getGrowthSpd())
+ .append("moveType", getMoveType())
+ .append("weaponType", getWeaponType())
+ .append("description", getDescription())
+ .append("avatarUrl", getAvatarUrl())
+ .append("createdAt", getCreatedAt())
+ .toString();
+ }
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/FateCharacterGrowthLogs.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/FateCharacterGrowthLogs.java
new file mode 100644
index 0000000..aaea8ed
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/FateCharacterGrowthLogs.java
@@ -0,0 +1,175 @@
+package com.ruoyi.system.domain;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 角色属性成长记录对象 fate_character_growth_logs
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+public class FateCharacterGrowthLogs extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /** $column.columnComment */
+ private Long logId;
+
+ /** 用户角色ID */
+ @Excel(name = "用户角色ID")
+ private Long userCharacterId;
+
+ /** 升级前等级 */
+ @Excel(name = "升级前等级")
+ private Long levelUpFrom;
+
+ /** 升级后等级 */
+ @Excel(name = "升级后等级")
+ private Long levelUpTo;
+
+ /** HP增长值 */
+ @Excel(name = "HP增长值")
+ private BigDecimal hpIncrease;
+
+ /** 攻击增长值 */
+ @Excel(name = "攻击增长值")
+ private BigDecimal atkIncrease;
+
+ /** 防御增长值 */
+ @Excel(name = "防御增长值")
+ private BigDecimal defIncrease;
+
+ /** 魔防增长值 */
+ @Excel(name = "魔防增长值")
+ private BigDecimal resIncrease;
+
+ /** 速度增长值 */
+ @Excel(name = "速度增长值")
+ private BigDecimal spdIncrease;
+
+ /** $column.columnComment */
+ @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+ private Date growthDate;
+
+ public void setLogId(Long logId)
+ {
+ this.logId = logId;
+ }
+
+ public Long getLogId()
+ {
+ return logId;
+ }
+
+ public void setUserCharacterId(Long userCharacterId)
+ {
+ this.userCharacterId = userCharacterId;
+ }
+
+ public Long getUserCharacterId()
+ {
+ return userCharacterId;
+ }
+
+ public void setLevelUpFrom(Long levelUpFrom)
+ {
+ this.levelUpFrom = levelUpFrom;
+ }
+
+ public Long getLevelUpFrom()
+ {
+ return levelUpFrom;
+ }
+
+ public void setLevelUpTo(Long levelUpTo)
+ {
+ this.levelUpTo = levelUpTo;
+ }
+
+ public Long getLevelUpTo()
+ {
+ return levelUpTo;
+ }
+
+ public void setHpIncrease(BigDecimal hpIncrease)
+ {
+ this.hpIncrease = hpIncrease;
+ }
+
+ public BigDecimal getHpIncrease()
+ {
+ return hpIncrease;
+ }
+
+ public void setAtkIncrease(BigDecimal atkIncrease)
+ {
+ this.atkIncrease = atkIncrease;
+ }
+
+ public BigDecimal getAtkIncrease()
+ {
+ return atkIncrease;
+ }
+
+ public void setDefIncrease(BigDecimal defIncrease)
+ {
+ this.defIncrease = defIncrease;
+ }
+
+ public BigDecimal getDefIncrease()
+ {
+ return defIncrease;
+ }
+
+ public void setResIncrease(BigDecimal resIncrease)
+ {
+ this.resIncrease = resIncrease;
+ }
+
+ public BigDecimal getResIncrease()
+ {
+ return resIncrease;
+ }
+
+ public void setSpdIncrease(BigDecimal spdIncrease)
+ {
+ this.spdIncrease = spdIncrease;
+ }
+
+ public BigDecimal getSpdIncrease()
+ {
+ return spdIncrease;
+ }
+
+ public void setGrowthDate(Date growthDate)
+ {
+ this.growthDate = growthDate;
+ }
+
+ public Date getGrowthDate()
+ {
+ return growthDate;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+ .append("logId", getLogId())
+ .append("userCharacterId", getUserCharacterId())
+ .append("levelUpFrom", getLevelUpFrom())
+ .append("levelUpTo", getLevelUpTo())
+ .append("hpIncrease", getHpIncrease())
+ .append("atkIncrease", getAtkIncrease())
+ .append("defIncrease", getDefIncrease())
+ .append("resIncrease", getResIncrease())
+ .append("spdIncrease", getSpdIncrease())
+ .append("growthDate", getGrowthDate())
+ .toString();
+ }
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/FateCharacterJobs.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/FateCharacterJobs.java
new file mode 100644
index 0000000..52b42a8
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/FateCharacterJobs.java
@@ -0,0 +1,159 @@
+package com.ruoyi.system.domain;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 角色职业对象 fate_character_jobs
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+public class FateCharacterJobs extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /** $column.columnComment */
+ private Long characterJobId;
+
+ /** 用户角色ID */
+ @Excel(name = "用户角色ID")
+ private Long userCharacterId;
+
+ /** 职业ID */
+ @Excel(name = "职业ID")
+ private Long jobId;
+
+ /** 职业等级 */
+ @Excel(name = "职业等级")
+ private Long jobLevel;
+
+ /** 职业经验 */
+ @Excel(name = "职业经验")
+ private Long jobExperience;
+
+ /** 是否为当前职业 */
+ @Excel(name = "是否为当前职业")
+ private Integer isCurrent;
+
+ /** 已学习技能[skill_id] */
+ @Excel(name = "已学习技能[skill_id]")
+ private String learnedSkills;
+
+ /** $column.columnComment */
+ @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+ private Date createdAt;
+
+ /** $column.columnComment */
+ @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+ private Date updatedAt;
+
+ public void setCharacterJobId(Long characterJobId)
+ {
+ this.characterJobId = characterJobId;
+ }
+
+ public Long getCharacterJobId()
+ {
+ return characterJobId;
+ }
+
+ public void setUserCharacterId(Long userCharacterId)
+ {
+ this.userCharacterId = userCharacterId;
+ }
+
+ public Long getUserCharacterId()
+ {
+ return userCharacterId;
+ }
+
+ public void setJobId(Long jobId)
+ {
+ this.jobId = jobId;
+ }
+
+ public Long getJobId()
+ {
+ return jobId;
+ }
+
+ public void setJobLevel(Long jobLevel)
+ {
+ this.jobLevel = jobLevel;
+ }
+
+ public Long getJobLevel()
+ {
+ return jobLevel;
+ }
+
+ public void setJobExperience(Long jobExperience)
+ {
+ this.jobExperience = jobExperience;
+ }
+
+ public Long getJobExperience()
+ {
+ return jobExperience;
+ }
+
+ public void setIsCurrent(Integer isCurrent)
+ {
+ this.isCurrent = isCurrent;
+ }
+
+ public Integer getIsCurrent()
+ {
+ return isCurrent;
+ }
+
+ public void setLearnedSkills(String learnedSkills)
+ {
+ this.learnedSkills = learnedSkills;
+ }
+
+ public String getLearnedSkills()
+ {
+ return learnedSkills;
+ }
+
+ public void setCreatedAt(Date createdAt)
+ {
+ this.createdAt = createdAt;
+ }
+
+ public Date getCreatedAt()
+ {
+ return createdAt;
+ }
+
+ public void setUpdatedAt(Date updatedAt)
+ {
+ this.updatedAt = updatedAt;
+ }
+
+ public Date getUpdatedAt()
+ {
+ return updatedAt;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+ .append("characterJobId", getCharacterJobId())
+ .append("userCharacterId", getUserCharacterId())
+ .append("jobId", getJobId())
+ .append("jobLevel", getJobLevel())
+ .append("jobExperience", getJobExperience())
+ .append("isCurrent", getIsCurrent())
+ .append("learnedSkills", getLearnedSkills())
+ .append("createdAt", getCreatedAt())
+ .append("updatedAt", getUpdatedAt())
+ .toString();
+ }
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/FateEquipmentAttributes.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/FateEquipmentAttributes.java
new file mode 100644
index 0000000..baa536b
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/FateEquipmentAttributes.java
@@ -0,0 +1,145 @@
+package com.ruoyi.system.domain;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 装备附加属性对象 fate_equipment_attributes
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+public class FateEquipmentAttributes extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /** $column.columnComment */
+ private Long attributeId;
+
+ /** 属性名称 */
+ @Excel(name = "属性名称")
+ private String attributeName;
+
+ /** 属性代码 */
+ @Excel(name = "属性代码")
+ private String attributeCode;
+
+ /** 属性类型 */
+ @Excel(name = "属性类型")
+ private String attributeType;
+
+ /** 最小值 */
+ @Excel(name = "最小值")
+ private BigDecimal minValue;
+
+ /** 最大值 */
+ @Excel(name = "最大值")
+ private BigDecimal maxValue;
+
+ /** 属性描述 */
+ @Excel(name = "属性描述")
+ private String description;
+
+ /** $column.columnComment */
+ @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+ private Date createdAt;
+
+ public void setAttributeId(Long attributeId)
+ {
+ this.attributeId = attributeId;
+ }
+
+ public Long getAttributeId()
+ {
+ return attributeId;
+ }
+
+ public void setAttributeName(String attributeName)
+ {
+ this.attributeName = attributeName;
+ }
+
+ public String getAttributeName()
+ {
+ return attributeName;
+ }
+
+ public void setAttributeCode(String attributeCode)
+ {
+ this.attributeCode = attributeCode;
+ }
+
+ public String getAttributeCode()
+ {
+ return attributeCode;
+ }
+
+ public void setAttributeType(String attributeType)
+ {
+ this.attributeType = attributeType;
+ }
+
+ public String getAttributeType()
+ {
+ return attributeType;
+ }
+
+ public void setMinValue(BigDecimal minValue)
+ {
+ this.minValue = minValue;
+ }
+
+ public BigDecimal getMinValue()
+ {
+ return minValue;
+ }
+
+ public void setMaxValue(BigDecimal maxValue)
+ {
+ this.maxValue = maxValue;
+ }
+
+ public BigDecimal getMaxValue()
+ {
+ return maxValue;
+ }
+
+ public void setDescription(String description)
+ {
+ this.description = description;
+ }
+
+ public String getDescription()
+ {
+ return description;
+ }
+
+ public void setCreatedAt(Date createdAt)
+ {
+ this.createdAt = createdAt;
+ }
+
+ public Date getCreatedAt()
+ {
+ return createdAt;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+ .append("attributeId", getAttributeId())
+ .append("attributeName", getAttributeName())
+ .append("attributeCode", getAttributeCode())
+ .append("attributeType", getAttributeType())
+ .append("minValue", getMinValue())
+ .append("maxValue", getMaxValue())
+ .append("description", getDescription())
+ .append("createdAt", getCreatedAt())
+ .toString();
+ }
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/FateEquipmentPossibleAttributes.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/FateEquipmentPossibleAttributes.java
new file mode 100644
index 0000000..763a9bc
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/FateEquipmentPossibleAttributes.java
@@ -0,0 +1,129 @@
+package com.ruoyi.system.domain;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 装备可能拥有的属性对象 fate_equipment_possible_attributes
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+public class FateEquipmentPossibleAttributes extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /** $column.columnComment */
+ private Long id;
+
+ /** 装备ID */
+ @Excel(name = "装备ID")
+ private Long equipmentId;
+
+ /** 属性ID */
+ @Excel(name = "属性ID")
+ private Long attributeId;
+
+ /** 出现权重 */
+ @Excel(name = "出现权重")
+ private Long weight;
+
+ /** 最小出现次数 */
+ @Excel(name = "最小出现次数")
+ private Long minRolls;
+
+ /** 最大出现次数 */
+ @Excel(name = "最大出现次数")
+ private Long maxRolls;
+
+ /** $column.columnComment */
+ @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+ private Date createdAt;
+
+ public void setId(Long id)
+ {
+ this.id = id;
+ }
+
+ public Long getId()
+ {
+ return id;
+ }
+
+ public void setEquipmentId(Long equipmentId)
+ {
+ this.equipmentId = equipmentId;
+ }
+
+ public Long getEquipmentId()
+ {
+ return equipmentId;
+ }
+
+ public void setAttributeId(Long attributeId)
+ {
+ this.attributeId = attributeId;
+ }
+
+ public Long getAttributeId()
+ {
+ return attributeId;
+ }
+
+ public void setWeight(Long weight)
+ {
+ this.weight = weight;
+ }
+
+ public Long getWeight()
+ {
+ return weight;
+ }
+
+ public void setMinRolls(Long minRolls)
+ {
+ this.minRolls = minRolls;
+ }
+
+ public Long getMinRolls()
+ {
+ return minRolls;
+ }
+
+ public void setMaxRolls(Long maxRolls)
+ {
+ this.maxRolls = maxRolls;
+ }
+
+ public Long getMaxRolls()
+ {
+ return maxRolls;
+ }
+
+ public void setCreatedAt(Date createdAt)
+ {
+ this.createdAt = createdAt;
+ }
+
+ public Date getCreatedAt()
+ {
+ return createdAt;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+ .append("id", getId())
+ .append("equipmentId", getEquipmentId())
+ .append("attributeId", getAttributeId())
+ .append("weight", getWeight())
+ .append("minRolls", getMinRolls())
+ .append("maxRolls", getMaxRolls())
+ .append("createdAt", getCreatedAt())
+ .toString();
+ }
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/FateEquipmentQualities.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/FateEquipmentQualities.java
new file mode 100644
index 0000000..99c3e38
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/FateEquipmentQualities.java
@@ -0,0 +1,129 @@
+package com.ruoyi.system.domain;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 装备品质对象 fate_equipment_qualities
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+public class FateEquipmentQualities extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /** $column.columnComment */
+ private Long qualityId;
+
+ /** 品质名称 */
+ @Excel(name = "品质名称")
+ private String qualityName;
+
+ /** 品质代码 */
+ @Excel(name = "品质代码")
+ private String qualityCode;
+
+ /** 颜色代码 */
+ @Excel(name = "颜色代码")
+ private String colorCode;
+
+ /** 最低装备等级 */
+ @Excel(name = "最低装备等级")
+ private Long minLevel;
+
+ /** 最高装备等级 */
+ @Excel(name = "最高装备等级")
+ private Long maxLevel;
+
+ /** $column.columnComment */
+ @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+ private Date createdAt;
+
+ public void setQualityId(Long qualityId)
+ {
+ this.qualityId = qualityId;
+ }
+
+ public Long getQualityId()
+ {
+ return qualityId;
+ }
+
+ public void setQualityName(String qualityName)
+ {
+ this.qualityName = qualityName;
+ }
+
+ public String getQualityName()
+ {
+ return qualityName;
+ }
+
+ public void setQualityCode(String qualityCode)
+ {
+ this.qualityCode = qualityCode;
+ }
+
+ public String getQualityCode()
+ {
+ return qualityCode;
+ }
+
+ public void setColorCode(String colorCode)
+ {
+ this.colorCode = colorCode;
+ }
+
+ public String getColorCode()
+ {
+ return colorCode;
+ }
+
+ public void setMinLevel(Long minLevel)
+ {
+ this.minLevel = minLevel;
+ }
+
+ public Long getMinLevel()
+ {
+ return minLevel;
+ }
+
+ public void setMaxLevel(Long maxLevel)
+ {
+ this.maxLevel = maxLevel;
+ }
+
+ public Long getMaxLevel()
+ {
+ return maxLevel;
+ }
+
+ public void setCreatedAt(Date createdAt)
+ {
+ this.createdAt = createdAt;
+ }
+
+ public Date getCreatedAt()
+ {
+ return createdAt;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+ .append("qualityId", getQualityId())
+ .append("qualityName", getQualityName())
+ .append("qualityCode", getQualityCode())
+ .append("colorCode", getColorCode())
+ .append("minLevel", getMinLevel())
+ .append("maxLevel", getMaxLevel())
+ .append("createdAt", getCreatedAt())
+ .toString();
+ }
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/FateEquipmentSetItems.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/FateEquipmentSetItems.java
new file mode 100644
index 0000000..25b835e
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/FateEquipmentSetItems.java
@@ -0,0 +1,84 @@
+package com.ruoyi.system.domain;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 装备套装包含对象 fate_equipment_set_items
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+public class FateEquipmentSetItems extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /** $column.columnComment */
+ private Long id;
+
+ /** 套装ID */
+ @Excel(name = "套装ID")
+ private Long setId;
+
+ /** 装备ID */
+ @Excel(name = "装备ID")
+ private Long equipmentId;
+
+ /** $column.columnComment */
+ @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+ private Date createdAt;
+
+ public void setId(Long id)
+ {
+ this.id = id;
+ }
+
+ public Long getId()
+ {
+ return id;
+ }
+
+ public void setSetId(Long setId)
+ {
+ this.setId = setId;
+ }
+
+ public Long getSetId()
+ {
+ return setId;
+ }
+
+ public void setEquipmentId(Long equipmentId)
+ {
+ this.equipmentId = equipmentId;
+ }
+
+ public Long getEquipmentId()
+ {
+ return equipmentId;
+ }
+
+ public void setCreatedAt(Date createdAt)
+ {
+ this.createdAt = createdAt;
+ }
+
+ public Date getCreatedAt()
+ {
+ return createdAt;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+ .append("id", getId())
+ .append("setId", getSetId())
+ .append("equipmentId", getEquipmentId())
+ .append("createdAt", getCreatedAt())
+ .toString();
+ }
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/FateEquipmentSets.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/FateEquipmentSets.java
new file mode 100644
index 0000000..c53ed9f
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/FateEquipmentSets.java
@@ -0,0 +1,190 @@
+package com.ruoyi.system.domain;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 装备套装对象 fate_equipment_sets
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+public class FateEquipmentSets extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /** $column.columnComment */
+ private Long setId;
+
+ /** 套装名称 */
+ @Excel(name = "套装名称")
+ private String setName;
+
+ /** 需求件数 */
+ @Excel(name = "需求件数")
+ private Long requiredPieces;
+
+ /** 加成描述 */
+ @Excel(name = "加成描述")
+ private String bonusDescription;
+
+ /** 生命值加成 */
+ @Excel(name = "生命值加成")
+ private BigDecimal hpBonus;
+
+ /** 攻击力加成 */
+ @Excel(name = "攻击力加成")
+ private BigDecimal atkBonus;
+
+ /** 防御力加成 */
+ @Excel(name = "防御力加成")
+ private BigDecimal defBonus;
+
+ /** 魔防加成 */
+ @Excel(name = "魔防加成")
+ private BigDecimal resBonus;
+
+ /** 速度加成 */
+ @Excel(name = "速度加成")
+ private BigDecimal spdBonus;
+
+ /** 暴击率加成 */
+ @Excel(name = "暴击率加成")
+ private BigDecimal critRateBonus;
+
+ /** $column.columnComment */
+ @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+ private Date createdAt;
+
+ public void setSetId(Long setId)
+ {
+ this.setId = setId;
+ }
+
+ public Long getSetId()
+ {
+ return setId;
+ }
+
+ public void setSetName(String setName)
+ {
+ this.setName = setName;
+ }
+
+ public String getSetName()
+ {
+ return setName;
+ }
+
+ public void setRequiredPieces(Long requiredPieces)
+ {
+ this.requiredPieces = requiredPieces;
+ }
+
+ public Long getRequiredPieces()
+ {
+ return requiredPieces;
+ }
+
+ public void setBonusDescription(String bonusDescription)
+ {
+ this.bonusDescription = bonusDescription;
+ }
+
+ public String getBonusDescription()
+ {
+ return bonusDescription;
+ }
+
+ public void setHpBonus(BigDecimal hpBonus)
+ {
+ this.hpBonus = hpBonus;
+ }
+
+ public BigDecimal getHpBonus()
+ {
+ return hpBonus;
+ }
+
+ public void setAtkBonus(BigDecimal atkBonus)
+ {
+ this.atkBonus = atkBonus;
+ }
+
+ public BigDecimal getAtkBonus()
+ {
+ return atkBonus;
+ }
+
+ public void setDefBonus(BigDecimal defBonus)
+ {
+ this.defBonus = defBonus;
+ }
+
+ public BigDecimal getDefBonus()
+ {
+ return defBonus;
+ }
+
+ public void setResBonus(BigDecimal resBonus)
+ {
+ this.resBonus = resBonus;
+ }
+
+ public BigDecimal getResBonus()
+ {
+ return resBonus;
+ }
+
+ public void setSpdBonus(BigDecimal spdBonus)
+ {
+ this.spdBonus = spdBonus;
+ }
+
+ public BigDecimal getSpdBonus()
+ {
+ return spdBonus;
+ }
+
+ public void setCritRateBonus(BigDecimal critRateBonus)
+ {
+ this.critRateBonus = critRateBonus;
+ }
+
+ public BigDecimal getCritRateBonus()
+ {
+ return critRateBonus;
+ }
+
+ public void setCreatedAt(Date createdAt)
+ {
+ this.createdAt = createdAt;
+ }
+
+ public Date getCreatedAt()
+ {
+ return createdAt;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+ .append("setId", getSetId())
+ .append("setName", getSetName())
+ .append("requiredPieces", getRequiredPieces())
+ .append("bonusDescription", getBonusDescription())
+ .append("hpBonus", getHpBonus())
+ .append("atkBonus", getAtkBonus())
+ .append("defBonus", getDefBonus())
+ .append("resBonus", getResBonus())
+ .append("spdBonus", getSpdBonus())
+ .append("critRateBonus", getCritRateBonus())
+ .append("createdAt", getCreatedAt())
+ .toString();
+ }
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/FateEquipmentTypes.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/FateEquipmentTypes.java
new file mode 100644
index 0000000..d97c339
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/FateEquipmentTypes.java
@@ -0,0 +1,114 @@
+package com.ruoyi.system.domain;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 装备类型对象 fate_equipment_types
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+public class FateEquipmentTypes extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /** $column.columnComment */
+ private Long typeId;
+
+ /** 装备类型名称 */
+ @Excel(name = "装备类型名称")
+ private String typeName;
+
+ /** 装备类型代码 */
+ @Excel(name = "装备类型代码")
+ private String typeCode;
+
+ /** 装备栏位索引 */
+ @Excel(name = "装备栏位索引")
+ private Long slotIndex;
+
+ /** 类型描述 */
+ @Excel(name = "类型描述")
+ private String description;
+
+ /** $column.columnComment */
+ @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+ private Date createdAt;
+
+ public void setTypeId(Long typeId)
+ {
+ this.typeId = typeId;
+ }
+
+ public Long getTypeId()
+ {
+ return typeId;
+ }
+
+ public void setTypeName(String typeName)
+ {
+ this.typeName = typeName;
+ }
+
+ public String getTypeName()
+ {
+ return typeName;
+ }
+
+ public void setTypeCode(String typeCode)
+ {
+ this.typeCode = typeCode;
+ }
+
+ public String getTypeCode()
+ {
+ return typeCode;
+ }
+
+ public void setSlotIndex(Long slotIndex)
+ {
+ this.slotIndex = slotIndex;
+ }
+
+ public Long getSlotIndex()
+ {
+ return slotIndex;
+ }
+
+ public void setDescription(String description)
+ {
+ this.description = description;
+ }
+
+ public String getDescription()
+ {
+ return description;
+ }
+
+ public void setCreatedAt(Date createdAt)
+ {
+ this.createdAt = createdAt;
+ }
+
+ public Date getCreatedAt()
+ {
+ return createdAt;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+ .append("typeId", getTypeId())
+ .append("typeName", getTypeName())
+ .append("typeCode", getTypeCode())
+ .append("slotIndex", getSlotIndex())
+ .append("description", getDescription())
+ .append("createdAt", getCreatedAt())
+ .toString();
+ }
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/FateEquipments.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/FateEquipments.java
new file mode 100644
index 0000000..8341ef8
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/FateEquipments.java
@@ -0,0 +1,415 @@
+package com.ruoyi.system.domain;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 装备基础对象 fate_equipments
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+public class FateEquipments extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /** $column.columnComment */
+ private Long equipmentId;
+
+ /** 装备名称 */
+ @Excel(name = "装备名称")
+ private String name;
+
+ /** 装备类型ID */
+ @Excel(name = "装备类型ID")
+ private Long typeId;
+
+ /** 品质ID */
+ @Excel(name = "品质ID")
+ private Long qualityId;
+
+ /** 需求等级 */
+ @Excel(name = "需求等级")
+ private Long requiredLevel;
+
+ /** 基础生命值最小值 */
+ @Excel(name = "基础生命值最小值")
+ private BigDecimal baseHpMin;
+
+ /** 基础生命值最大值 */
+ @Excel(name = "基础生命值最大值")
+ private BigDecimal baseHpMax;
+
+ /** 基础攻击力最小值 */
+ @Excel(name = "基础攻击力最小值")
+ private BigDecimal baseAtkMin;
+
+ /** 基础攻击力最大值 */
+ @Excel(name = "基础攻击力最大值")
+ private BigDecimal baseAtkMax;
+
+ /** 基础防御力最小值 */
+ @Excel(name = "基础防御力最小值")
+ private BigDecimal baseDefMin;
+
+ /** 基础防御力最大值 */
+ @Excel(name = "基础防御力最大值")
+ private BigDecimal baseDefMax;
+
+ /** 基础魔防最小值 */
+ @Excel(name = "基础魔防最小值")
+ private BigDecimal baseResMin;
+
+ /** 基础魔防最大值 */
+ @Excel(name = "基础魔防最大值")
+ private BigDecimal baseResMax;
+
+ /** 基础速度最小值 */
+ @Excel(name = "基础速度最小值")
+ private BigDecimal baseSpdMin;
+
+ /** 基础速度最大值 */
+ @Excel(name = "基础速度最大值")
+ private BigDecimal baseSpdMax;
+
+ /** 基础暴击率 */
+ @Excel(name = "基础暴击率")
+ private BigDecimal baseCritRate;
+
+ /** 基础暴击伤害 */
+ @Excel(name = "基础暴击伤害")
+ private BigDecimal baseCritDamage;
+
+ /** 基础闪避率 */
+ @Excel(name = "基础闪避率")
+ private BigDecimal baseDodgeRate;
+
+ /** 武器类型(仅武器有效) */
+ @Excel(name = "武器类型(仅武器有效)")
+ private String weaponType;
+
+ /** 是否双手武器 */
+ @Excel(name = "是否双手武器")
+ private Integer isTwoHanded;
+
+ /** 装备重量 */
+ @Excel(name = "装备重量")
+ private Long weight;
+
+ /** 耐久度 */
+ @Excel(name = "耐久度")
+ private Long durability;
+
+ /** 出售价格 */
+ @Excel(name = "出售价格")
+ private Long sellPrice;
+
+ /** 装备描述 */
+ @Excel(name = "装备描述")
+ private String description;
+
+ /** 图标URL */
+ @Excel(name = "图标URL")
+ private String iconUrl;
+
+ /** $column.columnComment */
+ @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+ private Date createdAt;
+
+ public void setEquipmentId(Long equipmentId)
+ {
+ this.equipmentId = equipmentId;
+ }
+
+ public Long getEquipmentId()
+ {
+ return equipmentId;
+ }
+
+ public void setName(String name)
+ {
+ this.name = name;
+ }
+
+ public String getName()
+ {
+ return name;
+ }
+
+ public void setTypeId(Long typeId)
+ {
+ this.typeId = typeId;
+ }
+
+ public Long getTypeId()
+ {
+ return typeId;
+ }
+
+ public void setQualityId(Long qualityId)
+ {
+ this.qualityId = qualityId;
+ }
+
+ public Long getQualityId()
+ {
+ return qualityId;
+ }
+
+ public void setRequiredLevel(Long requiredLevel)
+ {
+ this.requiredLevel = requiredLevel;
+ }
+
+ public Long getRequiredLevel()
+ {
+ return requiredLevel;
+ }
+
+ public void setBaseHpMin(BigDecimal baseHpMin)
+ {
+ this.baseHpMin = baseHpMin;
+ }
+
+ public BigDecimal getBaseHpMin()
+ {
+ return baseHpMin;
+ }
+
+ public void setBaseHpMax(BigDecimal baseHpMax)
+ {
+ this.baseHpMax = baseHpMax;
+ }
+
+ public BigDecimal getBaseHpMax()
+ {
+ return baseHpMax;
+ }
+
+ public void setBaseAtkMin(BigDecimal baseAtkMin)
+ {
+ this.baseAtkMin = baseAtkMin;
+ }
+
+ public BigDecimal getBaseAtkMin()
+ {
+ return baseAtkMin;
+ }
+
+ public void setBaseAtkMax(BigDecimal baseAtkMax)
+ {
+ this.baseAtkMax = baseAtkMax;
+ }
+
+ public BigDecimal getBaseAtkMax()
+ {
+ return baseAtkMax;
+ }
+
+ public void setBaseDefMin(BigDecimal baseDefMin)
+ {
+ this.baseDefMin = baseDefMin;
+ }
+
+ public BigDecimal getBaseDefMin()
+ {
+ return baseDefMin;
+ }
+
+ public void setBaseDefMax(BigDecimal baseDefMax)
+ {
+ this.baseDefMax = baseDefMax;
+ }
+
+ public BigDecimal getBaseDefMax()
+ {
+ return baseDefMax;
+ }
+
+ public void setBaseResMin(BigDecimal baseResMin)
+ {
+ this.baseResMin = baseResMin;
+ }
+
+ public BigDecimal getBaseResMin()
+ {
+ return baseResMin;
+ }
+
+ public void setBaseResMax(BigDecimal baseResMax)
+ {
+ this.baseResMax = baseResMax;
+ }
+
+ public BigDecimal getBaseResMax()
+ {
+ return baseResMax;
+ }
+
+ public void setBaseSpdMin(BigDecimal baseSpdMin)
+ {
+ this.baseSpdMin = baseSpdMin;
+ }
+
+ public BigDecimal getBaseSpdMin()
+ {
+ return baseSpdMin;
+ }
+
+ public void setBaseSpdMax(BigDecimal baseSpdMax)
+ {
+ this.baseSpdMax = baseSpdMax;
+ }
+
+ public BigDecimal getBaseSpdMax()
+ {
+ return baseSpdMax;
+ }
+
+ public void setBaseCritRate(BigDecimal baseCritRate)
+ {
+ this.baseCritRate = baseCritRate;
+ }
+
+ public BigDecimal getBaseCritRate()
+ {
+ return baseCritRate;
+ }
+
+ public void setBaseCritDamage(BigDecimal baseCritDamage)
+ {
+ this.baseCritDamage = baseCritDamage;
+ }
+
+ public BigDecimal getBaseCritDamage()
+ {
+ return baseCritDamage;
+ }
+
+ public void setBaseDodgeRate(BigDecimal baseDodgeRate)
+ {
+ this.baseDodgeRate = baseDodgeRate;
+ }
+
+ public BigDecimal getBaseDodgeRate()
+ {
+ return baseDodgeRate;
+ }
+
+ public void setWeaponType(String weaponType)
+ {
+ this.weaponType = weaponType;
+ }
+
+ public String getWeaponType()
+ {
+ return weaponType;
+ }
+
+ public void setIsTwoHanded(Integer isTwoHanded)
+ {
+ this.isTwoHanded = isTwoHanded;
+ }
+
+ public Integer getIsTwoHanded()
+ {
+ return isTwoHanded;
+ }
+
+ public void setWeight(Long weight)
+ {
+ this.weight = weight;
+ }
+
+ public Long getWeight()
+ {
+ return weight;
+ }
+
+ public void setDurability(Long durability)
+ {
+ this.durability = durability;
+ }
+
+ public Long getDurability()
+ {
+ return durability;
+ }
+
+ public void setSellPrice(Long sellPrice)
+ {
+ this.sellPrice = sellPrice;
+ }
+
+ public Long getSellPrice()
+ {
+ return sellPrice;
+ }
+
+ public void setDescription(String description)
+ {
+ this.description = description;
+ }
+
+ public String getDescription()
+ {
+ return description;
+ }
+
+ public void setIconUrl(String iconUrl)
+ {
+ this.iconUrl = iconUrl;
+ }
+
+ public String getIconUrl()
+ {
+ return iconUrl;
+ }
+
+ public void setCreatedAt(Date createdAt)
+ {
+ this.createdAt = createdAt;
+ }
+
+ public Date getCreatedAt()
+ {
+ return createdAt;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+ .append("equipmentId", getEquipmentId())
+ .append("name", getName())
+ .append("typeId", getTypeId())
+ .append("qualityId", getQualityId())
+ .append("requiredLevel", getRequiredLevel())
+ .append("baseHpMin", getBaseHpMin())
+ .append("baseHpMax", getBaseHpMax())
+ .append("baseAtkMin", getBaseAtkMin())
+ .append("baseAtkMax", getBaseAtkMax())
+ .append("baseDefMin", getBaseDefMin())
+ .append("baseDefMax", getBaseDefMax())
+ .append("baseResMin", getBaseResMin())
+ .append("baseResMax", getBaseResMax())
+ .append("baseSpdMin", getBaseSpdMin())
+ .append("baseSpdMax", getBaseSpdMax())
+ .append("baseCritRate", getBaseCritRate())
+ .append("baseCritDamage", getBaseCritDamage())
+ .append("baseDodgeRate", getBaseDodgeRate())
+ .append("weaponType", getWeaponType())
+ .append("isTwoHanded", getIsTwoHanded())
+ .append("weight", getWeight())
+ .append("durability", getDurability())
+ .append("sellPrice", getSellPrice())
+ .append("description", getDescription())
+ .append("iconUrl", getIconUrl())
+ .append("createdAt", getCreatedAt())
+ .toString();
+ }
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/FateJobLevelBonus.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/FateJobLevelBonus.java
new file mode 100644
index 0000000..6e586a2
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/FateJobLevelBonus.java
@@ -0,0 +1,160 @@
+package com.ruoyi.system.domain;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 职业等级加成对象 fate_job_level_bonus
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+public class FateJobLevelBonus extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /** $column.columnComment */
+ private Long bonusId;
+
+ /** 职业ID */
+ @Excel(name = "职业ID")
+ private Long jobId;
+
+ /** 职业等级 */
+ @Excel(name = "职业等级")
+ private Long level;
+
+ /** 生命加成 */
+ @Excel(name = "生命加成")
+ private BigDecimal hpBonus;
+
+ /** 攻击加成 */
+ @Excel(name = "攻击加成")
+ private BigDecimal atkBonus;
+
+ /** 防御加成 */
+ @Excel(name = "防御加成")
+ private BigDecimal defBonus;
+
+ /** 魔防加成 */
+ @Excel(name = "魔防加成")
+ private BigDecimal resBonus;
+
+ /** 速度加成 */
+ @Excel(name = "速度加成")
+ private BigDecimal spdBonus;
+
+ /** $column.columnComment */
+ @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+ private Date createdAt;
+
+ public void setBonusId(Long bonusId)
+ {
+ this.bonusId = bonusId;
+ }
+
+ public Long getBonusId()
+ {
+ return bonusId;
+ }
+
+ public void setJobId(Long jobId)
+ {
+ this.jobId = jobId;
+ }
+
+ public Long getJobId()
+ {
+ return jobId;
+ }
+
+ public void setLevel(Long level)
+ {
+ this.level = level;
+ }
+
+ public Long getLevel()
+ {
+ return level;
+ }
+
+ public void setHpBonus(BigDecimal hpBonus)
+ {
+ this.hpBonus = hpBonus;
+ }
+
+ public BigDecimal getHpBonus()
+ {
+ return hpBonus;
+ }
+
+ public void setAtkBonus(BigDecimal atkBonus)
+ {
+ this.atkBonus = atkBonus;
+ }
+
+ public BigDecimal getAtkBonus()
+ {
+ return atkBonus;
+ }
+
+ public void setDefBonus(BigDecimal defBonus)
+ {
+ this.defBonus = defBonus;
+ }
+
+ public BigDecimal getDefBonus()
+ {
+ return defBonus;
+ }
+
+ public void setResBonus(BigDecimal resBonus)
+ {
+ this.resBonus = resBonus;
+ }
+
+ public BigDecimal getResBonus()
+ {
+ return resBonus;
+ }
+
+ public void setSpdBonus(BigDecimal spdBonus)
+ {
+ this.spdBonus = spdBonus;
+ }
+
+ public BigDecimal getSpdBonus()
+ {
+ return spdBonus;
+ }
+
+ public void setCreatedAt(Date createdAt)
+ {
+ this.createdAt = createdAt;
+ }
+
+ public Date getCreatedAt()
+ {
+ return createdAt;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+ .append("bonusId", getBonusId())
+ .append("jobId", getJobId())
+ .append("level", getLevel())
+ .append("hpBonus", getHpBonus())
+ .append("atkBonus", getAtkBonus())
+ .append("defBonus", getDefBonus())
+ .append("resBonus", getResBonus())
+ .append("spdBonus", getSpdBonus())
+ .append("createdAt", getCreatedAt())
+ .toString();
+ }
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/FateJobPromotions.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/FateJobPromotions.java
new file mode 100644
index 0000000..6a49d49
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/FateJobPromotions.java
@@ -0,0 +1,160 @@
+package com.ruoyi.system.domain;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 职业进阶关系对象 fate_job_promotions
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+public class FateJobPromotions extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /** $column.columnComment */
+ private Long promotionId;
+
+ /** 原职业ID */
+ @Excel(name = "原职业ID")
+ private Long fromJobId;
+
+ /** 目标职业ID */
+ @Excel(name = "目标职业ID")
+ private Long toJobId;
+
+ /** 转职需求等级 */
+ @Excel(name = "转职需求等级")
+ private Long requiredLevel;
+
+ /** 需求物品[{item_id:数量}] */
+ @Excel(name = "需求物品[{item_id:数量}]")
+ private String requiredItems;
+
+ /** 需求技能[skill_id] */
+ @Excel(name = "需求技能[skill_id]")
+ private String requiredSkills;
+
+ /** 转职成功率 */
+ @Excel(name = "转职成功率")
+ private BigDecimal successRate;
+
+ /** 转职描述 */
+ @Excel(name = "转职描述")
+ private String description;
+
+ /** $column.columnComment */
+ @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+ private Date createdAt;
+
+ public void setPromotionId(Long promotionId)
+ {
+ this.promotionId = promotionId;
+ }
+
+ public Long getPromotionId()
+ {
+ return promotionId;
+ }
+
+ public void setFromJobId(Long fromJobId)
+ {
+ this.fromJobId = fromJobId;
+ }
+
+ public Long getFromJobId()
+ {
+ return fromJobId;
+ }
+
+ public void setToJobId(Long toJobId)
+ {
+ this.toJobId = toJobId;
+ }
+
+ public Long getToJobId()
+ {
+ return toJobId;
+ }
+
+ public void setRequiredLevel(Long requiredLevel)
+ {
+ this.requiredLevel = requiredLevel;
+ }
+
+ public Long getRequiredLevel()
+ {
+ return requiredLevel;
+ }
+
+ public void setRequiredItems(String requiredItems)
+ {
+ this.requiredItems = requiredItems;
+ }
+
+ public String getRequiredItems()
+ {
+ return requiredItems;
+ }
+
+ public void setRequiredSkills(String requiredSkills)
+ {
+ this.requiredSkills = requiredSkills;
+ }
+
+ public String getRequiredSkills()
+ {
+ return requiredSkills;
+ }
+
+ public void setSuccessRate(BigDecimal successRate)
+ {
+ this.successRate = successRate;
+ }
+
+ public BigDecimal getSuccessRate()
+ {
+ return successRate;
+ }
+
+ public void setDescription(String description)
+ {
+ this.description = description;
+ }
+
+ public String getDescription()
+ {
+ return description;
+ }
+
+ public void setCreatedAt(Date createdAt)
+ {
+ this.createdAt = createdAt;
+ }
+
+ public Date getCreatedAt()
+ {
+ return createdAt;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+ .append("promotionId", getPromotionId())
+ .append("fromJobId", getFromJobId())
+ .append("toJobId", getToJobId())
+ .append("requiredLevel", getRequiredLevel())
+ .append("requiredItems", getRequiredItems())
+ .append("requiredSkills", getRequiredSkills())
+ .append("successRate", getSuccessRate())
+ .append("description", getDescription())
+ .append("createdAt", getCreatedAt())
+ .toString();
+ }
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/FateJobSkills.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/FateJobSkills.java
new file mode 100644
index 0000000..28f481a
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/FateJobSkills.java
@@ -0,0 +1,129 @@
+package com.ruoyi.system.domain;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 职业可学技能对象 fate_job_skills
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+public class FateJobSkills extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /** $column.columnComment */
+ private Long jobSkillId;
+
+ /** 职业ID */
+ @Excel(name = "职业ID")
+ private Long jobId;
+
+ /** 技能ID */
+ @Excel(name = "技能ID")
+ private Long skillId;
+
+ /** 学习等级 */
+ @Excel(name = "学习等级")
+ private Long learnLevel;
+
+ /** 是否专属技能 */
+ @Excel(name = "是否专属技能")
+ private Integer isExclusive;
+
+ /** 学习条件描述 */
+ @Excel(name = "学习条件描述")
+ private String description;
+
+ /** $column.columnComment */
+ @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+ private Date createdAt;
+
+ public void setJobSkillId(Long jobSkillId)
+ {
+ this.jobSkillId = jobSkillId;
+ }
+
+ public Long getJobSkillId()
+ {
+ return jobSkillId;
+ }
+
+ public void setJobId(Long jobId)
+ {
+ this.jobId = jobId;
+ }
+
+ public Long getJobId()
+ {
+ return jobId;
+ }
+
+ public void setSkillId(Long skillId)
+ {
+ this.skillId = skillId;
+ }
+
+ public Long getSkillId()
+ {
+ return skillId;
+ }
+
+ public void setLearnLevel(Long learnLevel)
+ {
+ this.learnLevel = learnLevel;
+ }
+
+ public Long getLearnLevel()
+ {
+ return learnLevel;
+ }
+
+ public void setIsExclusive(Integer isExclusive)
+ {
+ this.isExclusive = isExclusive;
+ }
+
+ public Integer getIsExclusive()
+ {
+ return isExclusive;
+ }
+
+ public void setDescription(String description)
+ {
+ this.description = description;
+ }
+
+ public String getDescription()
+ {
+ return description;
+ }
+
+ public void setCreatedAt(Date createdAt)
+ {
+ this.createdAt = createdAt;
+ }
+
+ public Date getCreatedAt()
+ {
+ return createdAt;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+ .append("jobSkillId", getJobSkillId())
+ .append("jobId", getJobId())
+ .append("skillId", getSkillId())
+ .append("learnLevel", getLearnLevel())
+ .append("isExclusive", getIsExclusive())
+ .append("description", getDescription())
+ .append("createdAt", getCreatedAt())
+ .toString();
+ }
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/FateJobs.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/FateJobs.java
new file mode 100644
index 0000000..ff0c4d8
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/FateJobs.java
@@ -0,0 +1,351 @@
+package com.ruoyi.system.domain;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 职业基础对象 fate_jobs
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+public class FateJobs extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /** $column.columnComment */
+ private Long jobId;
+
+ /** 职业名称 */
+ @Excel(name = "职业名称")
+ private String jobName;
+
+ /** 职业阶位(1-基础, 2-进阶, 3-高级) */
+ @Excel(name = "职业阶位(1-基础, 2-进阶, 3-高级)")
+ private Long jobTier;
+
+ /** 职业阶位描述 */
+ private transient String jobTierDesc;
+
+ /** 基础生命加成 */
+ @Excel(name = "基础生命加成")
+ private BigDecimal baseHpBonus;
+
+ /** 基础攻击加成 */
+ @Excel(name = "基础攻击加成")
+ private BigDecimal baseAtkBonus;
+
+ /** 基础防御加成 */
+ @Excel(name = "基础防御加成")
+ private BigDecimal baseDefBonus;
+
+ /** 基础魔防加成 */
+ @Excel(name = "基础魔防加成")
+ private BigDecimal baseResBonus;
+
+ /** 基础速度加成 */
+ @Excel(name = "基础速度加成")
+ private BigDecimal baseSpdBonus;
+
+ /** HP成长率加成 */
+ @Excel(name = "HP成长率加成")
+ private BigDecimal growthHpBonus;
+
+ /** 攻击成长率加成 */
+ @Excel(name = "攻击成长率加成")
+ private BigDecimal growthAtkBonus;
+
+ /** 防御成长率加成 */
+ @Excel(name = "防御成长率加成")
+ private BigDecimal growthDefBonus;
+
+ /** 魔防成长率加成 */
+ @Excel(name = "魔防成长率加成")
+ private BigDecimal growthResBonus;
+
+ /** 速度成长率加成 */
+ @Excel(name = "速度成长率加成")
+ private BigDecimal growthSpdBonus;
+
+ /** 移动类型 */
+ @Excel(name = "移动类型")
+ private String moveType;
+
+ /** 移动类型描述 */
+ private transient String moveTypeDesc;
+
+ /** 武器熟练度{武器类型:熟练度等级} */
+ @Excel(name = "武器熟练度{武器类型:熟练度等级}")
+ private String weaponProficiencies;
+
+ /** 该职业最大等级 */
+ @Excel(name = "该职业最大等级")
+ private Long maxLevel;
+
+ /** 转职需求等级 */
+ @Excel(name = "转职需求等级")
+ private Long requiredLevel;
+
+ /** 职业描述 */
+ @Excel(name = "职业描述")
+ private String description;
+
+ /** 职业图标 */
+ @Excel(name = "职业图标")
+ private String iconUrl;
+
+ /** $column.columnComment */
+ @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+ private Date createdAt;
+
+ public void setJobId(Long jobId)
+ {
+ this.jobId = jobId;
+ }
+
+ public Long getJobId()
+ {
+ return jobId;
+ }
+
+ public void setJobName(String jobName)
+ {
+ this.jobName = jobName;
+ }
+
+ public String getJobName()
+ {
+ return jobName;
+ }
+
+ public void setJobTier(Long jobTier)
+ {
+ this.jobTier = jobTier;
+ }
+
+ public Long getJobTier()
+ {
+ return jobTier;
+ }
+
+ public String getJobTierDesc()
+ {
+ return com.ruoyi.system.domain.enums.JobTierEnum.getDescByCode(jobTier);
+ }
+
+ public void setJobTierDesc(String jobTierDesc)
+ {
+ this.jobTierDesc = jobTierDesc;
+ }
+
+ public void setBaseHpBonus(BigDecimal baseHpBonus)
+ {
+ this.baseHpBonus = baseHpBonus;
+ }
+
+ public BigDecimal getBaseHpBonus()
+ {
+ return baseHpBonus;
+ }
+
+ public void setBaseAtkBonus(BigDecimal baseAtkBonus)
+ {
+ this.baseAtkBonus = baseAtkBonus;
+ }
+
+ public BigDecimal getBaseAtkBonus()
+ {
+ return baseAtkBonus;
+ }
+
+ public void setBaseDefBonus(BigDecimal baseDefBonus)
+ {
+ this.baseDefBonus = baseDefBonus;
+ }
+
+ public BigDecimal getBaseDefBonus()
+ {
+ return baseDefBonus;
+ }
+
+ public void setBaseResBonus(BigDecimal baseResBonus)
+ {
+ this.baseResBonus = baseResBonus;
+ }
+
+ public BigDecimal getBaseResBonus()
+ {
+ return baseResBonus;
+ }
+
+ public void setBaseSpdBonus(BigDecimal baseSpdBonus)
+ {
+ this.baseSpdBonus = baseSpdBonus;
+ }
+
+ public BigDecimal getBaseSpdBonus()
+ {
+ return baseSpdBonus;
+ }
+
+ public void setGrowthHpBonus(BigDecimal growthHpBonus)
+ {
+ this.growthHpBonus = growthHpBonus;
+ }
+
+ public BigDecimal getGrowthHpBonus()
+ {
+ return growthHpBonus;
+ }
+
+ public void setGrowthAtkBonus(BigDecimal growthAtkBonus)
+ {
+ this.growthAtkBonus = growthAtkBonus;
+ }
+
+ public BigDecimal getGrowthAtkBonus()
+ {
+ return growthAtkBonus;
+ }
+
+ public void setGrowthDefBonus(BigDecimal growthDefBonus)
+ {
+ this.growthDefBonus = growthDefBonus;
+ }
+
+ public BigDecimal getGrowthDefBonus()
+ {
+ return growthDefBonus;
+ }
+
+ public void setGrowthResBonus(BigDecimal growthResBonus)
+ {
+ this.growthResBonus = growthResBonus;
+ }
+
+ public BigDecimal getGrowthResBonus()
+ {
+ return growthResBonus;
+ }
+
+ public void setGrowthSpdBonus(BigDecimal growthSpdBonus)
+ {
+ this.growthSpdBonus = growthSpdBonus;
+ }
+
+ public BigDecimal getGrowthSpdBonus()
+ {
+ return growthSpdBonus;
+ }
+
+ public void setMoveType(String moveType)
+ {
+ this.moveType = moveType;
+ }
+
+ public String getMoveType()
+ {
+ return moveType;
+ }
+
+ public String getMoveTypeDesc()
+ {
+ return com.ruoyi.system.domain.enums.MoveTypeEnum.getDescByCode(moveType);
+ }
+
+ public void setMoveTypeDesc(String moveTypeDesc)
+ {
+ this.moveTypeDesc = moveTypeDesc;
+ }
+
+ public void setWeaponProficiencies(String weaponProficiencies)
+ {
+ this.weaponProficiencies = weaponProficiencies;
+ }
+
+ public String getWeaponProficiencies()
+ {
+ return weaponProficiencies;
+ }
+
+ public void setMaxLevel(Long maxLevel)
+ {
+ this.maxLevel = maxLevel;
+ }
+
+ public Long getMaxLevel()
+ {
+ return maxLevel;
+ }
+
+ public void setRequiredLevel(Long requiredLevel)
+ {
+ this.requiredLevel = requiredLevel;
+ }
+
+ public Long getRequiredLevel()
+ {
+ return requiredLevel;
+ }
+
+ public void setDescription(String description)
+ {
+ this.description = description;
+ }
+
+ public String getDescription()
+ {
+ return description;
+ }
+
+ public void setIconUrl(String iconUrl)
+ {
+ this.iconUrl = iconUrl;
+ }
+
+ public String getIconUrl()
+ {
+ return iconUrl;
+ }
+
+ public void setCreatedAt(Date createdAt)
+ {
+ this.createdAt = createdAt;
+ }
+
+ public Date getCreatedAt()
+ {
+ return createdAt;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+ .append("jobId", getJobId())
+ .append("jobName", getJobName())
+ .append("jobTier", getJobTier())
+ .append("baseHpBonus", getBaseHpBonus())
+ .append("baseAtkBonus", getBaseAtkBonus())
+ .append("baseDefBonus", getBaseDefBonus())
+ .append("baseResBonus", getBaseResBonus())
+ .append("baseSpdBonus", getBaseSpdBonus())
+ .append("growthHpBonus", getGrowthHpBonus())
+ .append("growthAtkBonus", getGrowthAtkBonus())
+ .append("growthDefBonus", getGrowthDefBonus())
+ .append("growthResBonus", getGrowthResBonus())
+ .append("growthSpdBonus", getGrowthSpdBonus())
+ .append("moveType", getMoveType())
+ .append("weaponProficiencies", getWeaponProficiencies())
+ .append("maxLevel", getMaxLevel())
+ .append("requiredLevel", getRequiredLevel())
+ .append("description", getDescription())
+ .append("iconUrl", getIconUrl())
+ .append("createdAt", getCreatedAt())
+ .toString();
+ }
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/FateUserCharacter.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/FateUserCharacter.java
new file mode 100644
index 0000000..87d05a2
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/FateUserCharacter.java
@@ -0,0 +1,370 @@
+package com.ruoyi.system.domain;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 用户角色对象 fate_user_character
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+public class FateUserCharacter extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /** $column.columnComment */
+ private Long userCharacterId;
+
+ /** 用户ID */
+ @Excel(name = "用户ID")
+ private Long userId;
+
+ /** 角色ID */
+ @Excel(name = "角色ID")
+ private Long characterId;
+
+ /** 实际生命值 */
+ @Excel(name = "实际生命值")
+ private BigDecimal actualHp;
+
+ /** 实际攻击力 */
+ @Excel(name = "实际攻击力")
+ private BigDecimal actualAtk;
+
+ /** 实际防御力 */
+ @Excel(name = "实际防御力")
+ private BigDecimal actualDef;
+
+ /** 实际魔防 */
+ @Excel(name = "实际魔防")
+ private BigDecimal actualRes;
+
+ /** 实际速度 */
+ @Excel(name = "实际速度")
+ private BigDecimal actualSpd;
+
+ /** HP个体值(-10 to +10) */
+ @Excel(name = "HP个体值(-10 to +10)")
+ private Long ivHp;
+
+ /** 攻击个体值 */
+ @Excel(name = "攻击个体值")
+ private Long ivAtk;
+
+ /** 防御个体值 */
+ @Excel(name = "防御个体值")
+ private Long ivDef;
+
+ /** 魔防个体值 */
+ @Excel(name = "魔防个体值")
+ private Long ivRes;
+
+ /** 速度个体值 */
+ @Excel(name = "速度个体值")
+ private Long ivSpd;
+
+ /** HP努力值(0-255) */
+ @Excel(name = "HP努力值(0-255)")
+ private Long evHp;
+
+ /** 攻击努力值 */
+ @Excel(name = "攻击努力值")
+ private Long evAtk;
+
+ /** 防御努力值 */
+ @Excel(name = "防御努力值")
+ private Long evDef;
+
+ /** 魔防努力值 */
+ @Excel(name = "魔防努力值")
+ private Long evRes;
+
+ /** 速度努力值 */
+ @Excel(name = "速度努力值")
+ private Long evSpd;
+
+ /** 角色等级 */
+ @Excel(name = "角色等级")
+ private Long level;
+
+ /** 角色经验 */
+ @Excel(name = "角色经验")
+ private BigDecimal experience;
+
+ /** 好感度 */
+ @Excel(name = "好感度")
+ private Long favorability;
+
+ /** $column.columnComment */
+ @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+ private Date createdAt;
+
+ /** $column.columnComment */
+ @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+ private Date updatedAt;
+
+ public void setUserCharacterId(Long userCharacterId)
+ {
+ this.userCharacterId = userCharacterId;
+ }
+
+ public Long getUserCharacterId()
+ {
+ return userCharacterId;
+ }
+
+ public void setUserId(Long userId)
+ {
+ this.userId = userId;
+ }
+
+ public Long getUserId()
+ {
+ return userId;
+ }
+
+ public void setCharacterId(Long characterId)
+ {
+ this.characterId = characterId;
+ }
+
+ public Long getCharacterId()
+ {
+ return characterId;
+ }
+
+ public void setActualHp(BigDecimal actualHp)
+ {
+ this.actualHp = actualHp;
+ }
+
+ public BigDecimal getActualHp()
+ {
+ return actualHp;
+ }
+
+ public void setActualAtk(BigDecimal actualAtk)
+ {
+ this.actualAtk = actualAtk;
+ }
+
+ public BigDecimal getActualAtk()
+ {
+ return actualAtk;
+ }
+
+ public void setActualDef(BigDecimal actualDef)
+ {
+ this.actualDef = actualDef;
+ }
+
+ public BigDecimal getActualDef()
+ {
+ return actualDef;
+ }
+
+ public void setActualRes(BigDecimal actualRes)
+ {
+ this.actualRes = actualRes;
+ }
+
+ public BigDecimal getActualRes()
+ {
+ return actualRes;
+ }
+
+ public void setActualSpd(BigDecimal actualSpd)
+ {
+ this.actualSpd = actualSpd;
+ }
+
+ public BigDecimal getActualSpd()
+ {
+ return actualSpd;
+ }
+
+ public void setIvHp(Long ivHp)
+ {
+ this.ivHp = ivHp;
+ }
+
+ public Long getIvHp()
+ {
+ return ivHp;
+ }
+
+ public void setIvAtk(Long ivAtk)
+ {
+ this.ivAtk = ivAtk;
+ }
+
+ public Long getIvAtk()
+ {
+ return ivAtk;
+ }
+
+ public void setIvDef(Long ivDef)
+ {
+ this.ivDef = ivDef;
+ }
+
+ public Long getIvDef()
+ {
+ return ivDef;
+ }
+
+ public void setIvRes(Long ivRes)
+ {
+ this.ivRes = ivRes;
+ }
+
+ public Long getIvRes()
+ {
+ return ivRes;
+ }
+
+ public void setIvSpd(Long ivSpd)
+ {
+ this.ivSpd = ivSpd;
+ }
+
+ public Long getIvSpd()
+ {
+ return ivSpd;
+ }
+
+ public void setEvHp(Long evHp)
+ {
+ this.evHp = evHp;
+ }
+
+ public Long getEvHp()
+ {
+ return evHp;
+ }
+
+ public void setEvAtk(Long evAtk)
+ {
+ this.evAtk = evAtk;
+ }
+
+ public Long getEvAtk()
+ {
+ return evAtk;
+ }
+
+ public void setEvDef(Long evDef)
+ {
+ this.evDef = evDef;
+ }
+
+ public Long getEvDef()
+ {
+ return evDef;
+ }
+
+ public void setEvRes(Long evRes)
+ {
+ this.evRes = evRes;
+ }
+
+ public Long getEvRes()
+ {
+ return evRes;
+ }
+
+ public void setEvSpd(Long evSpd)
+ {
+ this.evSpd = evSpd;
+ }
+
+ public Long getEvSpd()
+ {
+ return evSpd;
+ }
+
+ public void setLevel(Long level)
+ {
+ this.level = level;
+ }
+
+ public Long getLevel()
+ {
+ return level;
+ }
+
+ public void setExperience(BigDecimal experience)
+ {
+ this.experience = experience;
+ }
+
+ public BigDecimal getExperience()
+ {
+ return experience;
+ }
+
+ public void setFavorability(Long favorability)
+ {
+ this.favorability = favorability;
+ }
+
+ public Long getFavorability()
+ {
+ return favorability;
+ }
+
+ public void setCreatedAt(Date createdAt)
+ {
+ this.createdAt = createdAt;
+ }
+
+ public Date getCreatedAt()
+ {
+ return createdAt;
+ }
+
+ public void setUpdatedAt(Date updatedAt)
+ {
+ this.updatedAt = updatedAt;
+ }
+
+ public Date getUpdatedAt()
+ {
+ return updatedAt;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+ .append("userCharacterId", getUserCharacterId())
+ .append("userId", getUserId())
+ .append("characterId", getCharacterId())
+ .append("actualHp", getActualHp())
+ .append("actualAtk", getActualAtk())
+ .append("actualDef", getActualDef())
+ .append("actualRes", getActualRes())
+ .append("actualSpd", getActualSpd())
+ .append("ivHp", getIvHp())
+ .append("ivAtk", getIvAtk())
+ .append("ivDef", getIvDef())
+ .append("ivRes", getIvRes())
+ .append("ivSpd", getIvSpd())
+ .append("evHp", getEvHp())
+ .append("evAtk", getEvAtk())
+ .append("evDef", getEvDef())
+ .append("evRes", getEvRes())
+ .append("evSpd", getEvSpd())
+ .append("level", getLevel())
+ .append("experience", getExperience())
+ .append("favorability", getFavorability())
+ .append("createdAt", getCreatedAt())
+ .append("updatedAt", getUpdatedAt())
+ .toString();
+ }
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/FateUserEquipments.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/FateUserEquipments.java
new file mode 100644
index 0000000..7b5c0d7
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/FateUserEquipments.java
@@ -0,0 +1,250 @@
+package com.ruoyi.system.domain;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 用户装备对象 fate_user_equipments
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+public class FateUserEquipments extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /** $column.columnComment */
+ private Long userEquipmentId;
+
+ /** 用户ID */
+ @Excel(name = "用户ID")
+ private Long userId;
+
+ /** 装备ID */
+ @Excel(name = "装备ID")
+ private Long equipmentId;
+
+ /** 装备等级 */
+ @Excel(name = "装备等级")
+ private Long level;
+
+ /** 装备经验 */
+ @Excel(name = "装备经验")
+ private Long experience;
+
+ /** 当前生命值加成 */
+ @Excel(name = "当前生命值加成")
+ private BigDecimal currentHp;
+
+ /** 当前攻击力加成 */
+ @Excel(name = "当前攻击力加成")
+ private BigDecimal currentAtk;
+
+ /** 当前防御力加成 */
+ @Excel(name = "当前防御力加成")
+ private BigDecimal currentDef;
+
+ /** 当前魔防加成 */
+ @Excel(name = "当前魔防加成")
+ private BigDecimal currentRes;
+
+ /** 当前速度加成 */
+ @Excel(name = "当前速度加成")
+ private BigDecimal currentSpd;
+
+ /** 当前耐久度 */
+ @Excel(name = "当前耐久度")
+ private Long currentDurability;
+
+ /** 是否已装备 */
+ @Excel(name = "是否已装备")
+ private Integer isEquipped;
+
+ /** 装备的角色ID */
+ @Excel(name = "装备的角色ID")
+ private Long equippedCharacterId;
+
+ /** $column.columnComment */
+ @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+ private Date createdAt;
+
+ /** $column.columnComment */
+ @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+ private Date updatedAt;
+
+ public void setUserEquipmentId(Long userEquipmentId)
+ {
+ this.userEquipmentId = userEquipmentId;
+ }
+
+ public Long getUserEquipmentId()
+ {
+ return userEquipmentId;
+ }
+
+ public void setUserId(Long userId)
+ {
+ this.userId = userId;
+ }
+
+ public Long getUserId()
+ {
+ return userId;
+ }
+
+ public void setEquipmentId(Long equipmentId)
+ {
+ this.equipmentId = equipmentId;
+ }
+
+ public Long getEquipmentId()
+ {
+ return equipmentId;
+ }
+
+ public void setLevel(Long level)
+ {
+ this.level = level;
+ }
+
+ public Long getLevel()
+ {
+ return level;
+ }
+
+ public void setExperience(Long experience)
+ {
+ this.experience = experience;
+ }
+
+ public Long getExperience()
+ {
+ return experience;
+ }
+
+ public void setCurrentHp(BigDecimal currentHp)
+ {
+ this.currentHp = currentHp;
+ }
+
+ public BigDecimal getCurrentHp()
+ {
+ return currentHp;
+ }
+
+ public void setCurrentAtk(BigDecimal currentAtk)
+ {
+ this.currentAtk = currentAtk;
+ }
+
+ public BigDecimal getCurrentAtk()
+ {
+ return currentAtk;
+ }
+
+ public void setCurrentDef(BigDecimal currentDef)
+ {
+ this.currentDef = currentDef;
+ }
+
+ public BigDecimal getCurrentDef()
+ {
+ return currentDef;
+ }
+
+ public void setCurrentRes(BigDecimal currentRes)
+ {
+ this.currentRes = currentRes;
+ }
+
+ public BigDecimal getCurrentRes()
+ {
+ return currentRes;
+ }
+
+ public void setCurrentSpd(BigDecimal currentSpd)
+ {
+ this.currentSpd = currentSpd;
+ }
+
+ public BigDecimal getCurrentSpd()
+ {
+ return currentSpd;
+ }
+
+ public void setCurrentDurability(Long currentDurability)
+ {
+ this.currentDurability = currentDurability;
+ }
+
+ public Long getCurrentDurability()
+ {
+ return currentDurability;
+ }
+
+ public void setIsEquipped(Integer isEquipped)
+ {
+ this.isEquipped = isEquipped;
+ }
+
+ public Integer getIsEquipped()
+ {
+ return isEquipped;
+ }
+
+ public void setEquippedCharacterId(Long equippedCharacterId)
+ {
+ this.equippedCharacterId = equippedCharacterId;
+ }
+
+ public Long getEquippedCharacterId()
+ {
+ return equippedCharacterId;
+ }
+
+ public void setCreatedAt(Date createdAt)
+ {
+ this.createdAt = createdAt;
+ }
+
+ public Date getCreatedAt()
+ {
+ return createdAt;
+ }
+
+ public void setUpdatedAt(Date updatedAt)
+ {
+ this.updatedAt = updatedAt;
+ }
+
+ public Date getUpdatedAt()
+ {
+ return updatedAt;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+ .append("userEquipmentId", getUserEquipmentId())
+ .append("userId", getUserId())
+ .append("equipmentId", getEquipmentId())
+ .append("level", getLevel())
+ .append("experience", getExperience())
+ .append("currentHp", getCurrentHp())
+ .append("currentAtk", getCurrentAtk())
+ .append("currentDef", getCurrentDef())
+ .append("currentRes", getCurrentRes())
+ .append("currentSpd", getCurrentSpd())
+ .append("currentDurability", getCurrentDurability())
+ .append("isEquipped", getIsEquipped())
+ .append("equippedCharacterId", getEquippedCharacterId())
+ .append("createdAt", getCreatedAt())
+ .append("updatedAt", getUpdatedAt())
+ .toString();
+ }
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/FateCharacterGrowthLogsMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/FateCharacterGrowthLogsMapper.java
new file mode 100644
index 0000000..400a6a9
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/FateCharacterGrowthLogsMapper.java
@@ -0,0 +1,61 @@
+package com.ruoyi.system.mapper;
+
+import java.util.List;
+import com.ruoyi.system.domain.FateCharacterGrowthLogs;
+
+/**
+ * 角色属性成长记录Mapper接口
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+public interface FateCharacterGrowthLogsMapper
+{
+ /**
+ * 查询角色属性成长记录
+ *
+ * @param logId 角色属性成长记录主键
+ * @return 角色属性成长记录
+ */
+ public FateCharacterGrowthLogs selectFateCharacterGrowthLogsByLogId(Long logId);
+
+ /**
+ * 查询角色属性成长记录列表
+ *
+ * @param fateCharacterGrowthLogs 角色属性成长记录
+ * @return 角色属性成长记录集合
+ */
+ public List selectFateCharacterGrowthLogsList(FateCharacterGrowthLogs fateCharacterGrowthLogs);
+
+ /**
+ * 新增角色属性成长记录
+ *
+ * @param fateCharacterGrowthLogs 角色属性成长记录
+ * @return 结果
+ */
+ public int insertFateCharacterGrowthLogs(FateCharacterGrowthLogs fateCharacterGrowthLogs);
+
+ /**
+ * 修改角色属性成长记录
+ *
+ * @param fateCharacterGrowthLogs 角色属性成长记录
+ * @return 结果
+ */
+ public int updateFateCharacterGrowthLogs(FateCharacterGrowthLogs fateCharacterGrowthLogs);
+
+ /**
+ * 删除角色属性成长记录
+ *
+ * @param logId 角色属性成长记录主键
+ * @return 结果
+ */
+ public int deleteFateCharacterGrowthLogsByLogId(Long logId);
+
+ /**
+ * 批量删除角色属性成长记录
+ *
+ * @param logIds 需要删除的数据主键集合
+ * @return 结果
+ */
+ public int deleteFateCharacterGrowthLogsByLogIds(Long[] logIds);
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/FateCharacterJobsMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/FateCharacterJobsMapper.java
new file mode 100644
index 0000000..fcd5c53
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/FateCharacterJobsMapper.java
@@ -0,0 +1,61 @@
+package com.ruoyi.system.mapper;
+
+import java.util.List;
+import com.ruoyi.system.domain.FateCharacterJobs;
+
+/**
+ * 角色职业Mapper接口
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+public interface FateCharacterJobsMapper
+{
+ /**
+ * 查询角色职业
+ *
+ * @param characterJobId 角色职业主键
+ * @return 角色职业
+ */
+ public FateCharacterJobs selectFateCharacterJobsByCharacterJobId(Long characterJobId);
+
+ /**
+ * 查询角色职业列表
+ *
+ * @param fateCharacterJobs 角色职业
+ * @return 角色职业集合
+ */
+ public List selectFateCharacterJobsList(FateCharacterJobs fateCharacterJobs);
+
+ /**
+ * 新增角色职业
+ *
+ * @param fateCharacterJobs 角色职业
+ * @return 结果
+ */
+ public int insertFateCharacterJobs(FateCharacterJobs fateCharacterJobs);
+
+ /**
+ * 修改角色职业
+ *
+ * @param fateCharacterJobs 角色职业
+ * @return 结果
+ */
+ public int updateFateCharacterJobs(FateCharacterJobs fateCharacterJobs);
+
+ /**
+ * 删除角色职业
+ *
+ * @param characterJobId 角色职业主键
+ * @return 结果
+ */
+ public int deleteFateCharacterJobsByCharacterJobId(Long characterJobId);
+
+ /**
+ * 批量删除角色职业
+ *
+ * @param characterJobIds 需要删除的数据主键集合
+ * @return 结果
+ */
+ public int deleteFateCharacterJobsByCharacterJobIds(Long[] characterJobIds);
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/FateCharacterMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/FateCharacterMapper.java
new file mode 100644
index 0000000..3f6ece2
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/FateCharacterMapper.java
@@ -0,0 +1,62 @@
+package com.ruoyi.system.mapper;
+
+import com.ruoyi.system.domain.FateCharacter;
+
+import java.util.List;
+
+/**
+ * 角色基础Mapper接口
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+public interface FateCharacterMapper
+{
+ /**
+ * 查询角色基础
+ *
+ * @param characterId 角色基础主键
+ * @return 角色基础
+ */
+ public FateCharacter selectFateCharacterByCharacterId(Long characterId);
+
+ /**
+ * 查询角色基础列表
+ *
+ * @param fateCharacter 角色基础
+ * @return 角色基础集合
+ */
+ public List selectFateCharacterList(FateCharacter fateCharacter);
+
+ /**
+ * 新增角色基础
+ *
+ * @param fateCharacter 角色基础
+ * @return 结果
+ */
+ public int insertFateCharacter(FateCharacter fateCharacter);
+
+ /**
+ * 修改角色基础
+ *
+ * @param fateCharacter 角色基础
+ * @return 结果
+ */
+ public int updateFateCharacter(FateCharacter fateCharacter);
+
+ /**
+ * 删除角色基础
+ *
+ * @param characterId 角色基础主键
+ * @return 结果
+ */
+ public int deleteFateCharacterByCharacterId(Long characterId);
+
+ /**
+ * 批量删除角色基础
+ *
+ * @param characterIds 需要删除的数据主键集合
+ * @return 结果
+ */
+ public int deleteFateCharacterByCharacterIds(Long[] characterIds);
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/FateEquipmentAttributesMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/FateEquipmentAttributesMapper.java
new file mode 100644
index 0000000..be2d6ab
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/FateEquipmentAttributesMapper.java
@@ -0,0 +1,63 @@
+package com.ruoyi.system.mapper;
+
+
+import com.ruoyi.system.domain.FateEquipmentAttributes;
+
+import java.util.List;
+
+/**
+ * 装备附加属性Mapper接口
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+public interface FateEquipmentAttributesMapper
+{
+ /**
+ * 查询装备附加属性
+ *
+ * @param attributeId 装备附加属性主键
+ * @return 装备附加属性
+ */
+ public FateEquipmentAttributes selectFateEquipmentAttributesByAttributeId(Long attributeId);
+
+ /**
+ * 查询装备附加属性列表
+ *
+ * @param fateEquipmentAttributes 装备附加属性
+ * @return 装备附加属性集合
+ */
+ public List selectFateEquipmentAttributesList(FateEquipmentAttributes fateEquipmentAttributes);
+
+ /**
+ * 新增装备附加属性
+ *
+ * @param fateEquipmentAttributes 装备附加属性
+ * @return 结果
+ */
+ public int insertFateEquipmentAttributes(FateEquipmentAttributes fateEquipmentAttributes);
+
+ /**
+ * 修改装备附加属性
+ *
+ * @param fateEquipmentAttributes 装备附加属性
+ * @return 结果
+ */
+ public int updateFateEquipmentAttributes(FateEquipmentAttributes fateEquipmentAttributes);
+
+ /**
+ * 删除装备附加属性
+ *
+ * @param attributeId 装备附加属性主键
+ * @return 结果
+ */
+ public int deleteFateEquipmentAttributesByAttributeId(Long attributeId);
+
+ /**
+ * 批量删除装备附加属性
+ *
+ * @param attributeIds 需要删除的数据主键集合
+ * @return 结果
+ */
+ public int deleteFateEquipmentAttributesByAttributeIds(Long[] attributeIds);
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/FateEquipmentPossibleAttributesMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/FateEquipmentPossibleAttributesMapper.java
new file mode 100644
index 0000000..b81794e
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/FateEquipmentPossibleAttributesMapper.java
@@ -0,0 +1,61 @@
+package com.ruoyi.system.mapper;
+
+import java.util.List;
+import com.ruoyi.system.domain.FateEquipmentPossibleAttributes;
+
+/**
+ * 装备可能拥有的属性Mapper接口
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+public interface FateEquipmentPossibleAttributesMapper
+{
+ /**
+ * 查询装备可能拥有的属性
+ *
+ * @param id 装备可能拥有的属性主键
+ * @return 装备可能拥有的属性
+ */
+ public FateEquipmentPossibleAttributes selectFateEquipmentPossibleAttributesById(Long id);
+
+ /**
+ * 查询装备可能拥有的属性列表
+ *
+ * @param fateEquipmentPossibleAttributes 装备可能拥有的属性
+ * @return 装备可能拥有的属性集合
+ */
+ public List selectFateEquipmentPossibleAttributesList(FateEquipmentPossibleAttributes fateEquipmentPossibleAttributes);
+
+ /**
+ * 新增装备可能拥有的属性
+ *
+ * @param fateEquipmentPossibleAttributes 装备可能拥有的属性
+ * @return 结果
+ */
+ public int insertFateEquipmentPossibleAttributes(FateEquipmentPossibleAttributes fateEquipmentPossibleAttributes);
+
+ /**
+ * 修改装备可能拥有的属性
+ *
+ * @param fateEquipmentPossibleAttributes 装备可能拥有的属性
+ * @return 结果
+ */
+ public int updateFateEquipmentPossibleAttributes(FateEquipmentPossibleAttributes fateEquipmentPossibleAttributes);
+
+ /**
+ * 删除装备可能拥有的属性
+ *
+ * @param id 装备可能拥有的属性主键
+ * @return 结果
+ */
+ public int deleteFateEquipmentPossibleAttributesById(Long id);
+
+ /**
+ * 批量删除装备可能拥有的属性
+ *
+ * @param ids 需要删除的数据主键集合
+ * @return 结果
+ */
+ public int deleteFateEquipmentPossibleAttributesByIds(Long[] ids);
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/FateEquipmentQualitiesMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/FateEquipmentQualitiesMapper.java
new file mode 100644
index 0000000..97b32b3
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/FateEquipmentQualitiesMapper.java
@@ -0,0 +1,61 @@
+package com.ruoyi.system.mapper;
+
+import java.util.List;
+import com.ruoyi.system.domain.FateEquipmentQualities;
+
+/**
+ * 装备品质Mapper接口
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+public interface FateEquipmentQualitiesMapper
+{
+ /**
+ * 查询装备品质
+ *
+ * @param qualityId 装备品质主键
+ * @return 装备品质
+ */
+ public FateEquipmentQualities selectFateEquipmentQualitiesByQualityId(Long qualityId);
+
+ /**
+ * 查询装备品质列表
+ *
+ * @param fateEquipmentQualities 装备品质
+ * @return 装备品质集合
+ */
+ public List selectFateEquipmentQualitiesList(FateEquipmentQualities fateEquipmentQualities);
+
+ /**
+ * 新增装备品质
+ *
+ * @param fateEquipmentQualities 装备品质
+ * @return 结果
+ */
+ public int insertFateEquipmentQualities(FateEquipmentQualities fateEquipmentQualities);
+
+ /**
+ * 修改装备品质
+ *
+ * @param fateEquipmentQualities 装备品质
+ * @return 结果
+ */
+ public int updateFateEquipmentQualities(FateEquipmentQualities fateEquipmentQualities);
+
+ /**
+ * 删除装备品质
+ *
+ * @param qualityId 装备品质主键
+ * @return 结果
+ */
+ public int deleteFateEquipmentQualitiesByQualityId(Long qualityId);
+
+ /**
+ * 批量删除装备品质
+ *
+ * @param qualityIds 需要删除的数据主键集合
+ * @return 结果
+ */
+ public int deleteFateEquipmentQualitiesByQualityIds(Long[] qualityIds);
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/FateEquipmentSetItemsMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/FateEquipmentSetItemsMapper.java
new file mode 100644
index 0000000..5a92b44
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/FateEquipmentSetItemsMapper.java
@@ -0,0 +1,61 @@
+package com.ruoyi.system.mapper;
+
+import java.util.List;
+import com.ruoyi.system.domain.FateEquipmentSetItems;
+
+/**
+ * 装备套装包含Mapper接口
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+public interface FateEquipmentSetItemsMapper
+{
+ /**
+ * 查询装备套装包含
+ *
+ * @param id 装备套装包含主键
+ * @return 装备套装包含
+ */
+ public FateEquipmentSetItems selectFateEquipmentSetItemsById(Long id);
+
+ /**
+ * 查询装备套装包含列表
+ *
+ * @param fateEquipmentSetItems 装备套装包含
+ * @return 装备套装包含集合
+ */
+ public List selectFateEquipmentSetItemsList(FateEquipmentSetItems fateEquipmentSetItems);
+
+ /**
+ * 新增装备套装包含
+ *
+ * @param fateEquipmentSetItems 装备套装包含
+ * @return 结果
+ */
+ public int insertFateEquipmentSetItems(FateEquipmentSetItems fateEquipmentSetItems);
+
+ /**
+ * 修改装备套装包含
+ *
+ * @param fateEquipmentSetItems 装备套装包含
+ * @return 结果
+ */
+ public int updateFateEquipmentSetItems(FateEquipmentSetItems fateEquipmentSetItems);
+
+ /**
+ * 删除装备套装包含
+ *
+ * @param id 装备套装包含主键
+ * @return 结果
+ */
+ public int deleteFateEquipmentSetItemsById(Long id);
+
+ /**
+ * 批量删除装备套装包含
+ *
+ * @param ids 需要删除的数据主键集合
+ * @return 结果
+ */
+ public int deleteFateEquipmentSetItemsByIds(Long[] ids);
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/FateEquipmentSetsMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/FateEquipmentSetsMapper.java
new file mode 100644
index 0000000..70953f9
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/FateEquipmentSetsMapper.java
@@ -0,0 +1,62 @@
+package com.ruoyi.system.mapper;
+
+import com.ruoyi.system.domain.FateEquipmentSets;
+
+import java.util.List;
+
+/**
+ * 装备套装Mapper接口
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+public interface FateEquipmentSetsMapper
+{
+ /**
+ * 查询装备套装
+ *
+ * @param setId 装备套装主键
+ * @return 装备套装
+ */
+ public FateEquipmentSets selectFateEquipmentSetsBySetId(Long setId);
+
+ /**
+ * 查询装备套装列表
+ *
+ * @param fateEquipmentSets 装备套装
+ * @return 装备套装集合
+ */
+ public List selectFateEquipmentSetsList(FateEquipmentSets fateEquipmentSets);
+
+ /**
+ * 新增装备套装
+ *
+ * @param fateEquipmentSets 装备套装
+ * @return 结果
+ */
+ public int insertFateEquipmentSets(FateEquipmentSets fateEquipmentSets);
+
+ /**
+ * 修改装备套装
+ *
+ * @param fateEquipmentSets 装备套装
+ * @return 结果
+ */
+ public int updateFateEquipmentSets(FateEquipmentSets fateEquipmentSets);
+
+ /**
+ * 删除装备套装
+ *
+ * @param setId 装备套装主键
+ * @return 结果
+ */
+ public int deleteFateEquipmentSetsBySetId(Long setId);
+
+ /**
+ * 批量删除装备套装
+ *
+ * @param setIds 需要删除的数据主键集合
+ * @return 结果
+ */
+ public int deleteFateEquipmentSetsBySetIds(Long[] setIds);
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/FateEquipmentTypesMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/FateEquipmentTypesMapper.java
new file mode 100644
index 0000000..a4e5136
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/FateEquipmentTypesMapper.java
@@ -0,0 +1,61 @@
+package com.ruoyi.system.mapper;
+
+import java.util.List;
+import com.ruoyi.system.domain.FateEquipmentTypes;
+
+/**
+ * 装备类型Mapper接口
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+public interface FateEquipmentTypesMapper
+{
+ /**
+ * 查询装备类型
+ *
+ * @param typeId 装备类型主键
+ * @return 装备类型
+ */
+ public FateEquipmentTypes selectFateEquipmentTypesByTypeId(Long typeId);
+
+ /**
+ * 查询装备类型列表
+ *
+ * @param fateEquipmentTypes 装备类型
+ * @return 装备类型集合
+ */
+ public List selectFateEquipmentTypesList(FateEquipmentTypes fateEquipmentTypes);
+
+ /**
+ * 新增装备类型
+ *
+ * @param fateEquipmentTypes 装备类型
+ * @return 结果
+ */
+ public int insertFateEquipmentTypes(FateEquipmentTypes fateEquipmentTypes);
+
+ /**
+ * 修改装备类型
+ *
+ * @param fateEquipmentTypes 装备类型
+ * @return 结果
+ */
+ public int updateFateEquipmentTypes(FateEquipmentTypes fateEquipmentTypes);
+
+ /**
+ * 删除装备类型
+ *
+ * @param typeId 装备类型主键
+ * @return 结果
+ */
+ public int deleteFateEquipmentTypesByTypeId(Long typeId);
+
+ /**
+ * 批量删除装备类型
+ *
+ * @param typeIds 需要删除的数据主键集合
+ * @return 结果
+ */
+ public int deleteFateEquipmentTypesByTypeIds(Long[] typeIds);
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/FateEquipmentsMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/FateEquipmentsMapper.java
new file mode 100644
index 0000000..ce9fe56
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/FateEquipmentsMapper.java
@@ -0,0 +1,61 @@
+package com.ruoyi.system.mapper;
+
+import java.util.List;
+import com.ruoyi.system.domain.FateEquipments;
+
+/**
+ * 装备基础Mapper接口
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+public interface FateEquipmentsMapper
+{
+ /**
+ * 查询装备基础
+ *
+ * @param equipmentId 装备基础主键
+ * @return 装备基础
+ */
+ public FateEquipments selectFateEquipmentsByEquipmentId(Long equipmentId);
+
+ /**
+ * 查询装备基础列表
+ *
+ * @param fateEquipments 装备基础
+ * @return 装备基础集合
+ */
+ public List selectFateEquipmentsList(FateEquipments fateEquipments);
+
+ /**
+ * 新增装备基础
+ *
+ * @param fateEquipments 装备基础
+ * @return 结果
+ */
+ public int insertFateEquipments(FateEquipments fateEquipments);
+
+ /**
+ * 修改装备基础
+ *
+ * @param fateEquipments 装备基础
+ * @return 结果
+ */
+ public int updateFateEquipments(FateEquipments fateEquipments);
+
+ /**
+ * 删除装备基础
+ *
+ * @param equipmentId 装备基础主键
+ * @return 结果
+ */
+ public int deleteFateEquipmentsByEquipmentId(Long equipmentId);
+
+ /**
+ * 批量删除装备基础
+ *
+ * @param equipmentIds 需要删除的数据主键集合
+ * @return 结果
+ */
+ public int deleteFateEquipmentsByEquipmentIds(Long[] equipmentIds);
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/FateJobLevelBonusMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/FateJobLevelBonusMapper.java
new file mode 100644
index 0000000..82c457b
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/FateJobLevelBonusMapper.java
@@ -0,0 +1,61 @@
+package com.ruoyi.system.mapper;
+
+import java.util.List;
+import com.ruoyi.system.domain.FateJobLevelBonus;
+
+/**
+ * 职业等级加成Mapper接口
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+public interface FateJobLevelBonusMapper
+{
+ /**
+ * 查询职业等级加成
+ *
+ * @param bonusId 职业等级加成主键
+ * @return 职业等级加成
+ */
+ public FateJobLevelBonus selectFateJobLevelBonusByBonusId(Long bonusId);
+
+ /**
+ * 查询职业等级加成列表
+ *
+ * @param fateJobLevelBonus 职业等级加成
+ * @return 职业等级加成集合
+ */
+ public List selectFateJobLevelBonusList(FateJobLevelBonus fateJobLevelBonus);
+
+ /**
+ * 新增职业等级加成
+ *
+ * @param fateJobLevelBonus 职业等级加成
+ * @return 结果
+ */
+ public int insertFateJobLevelBonus(FateJobLevelBonus fateJobLevelBonus);
+
+ /**
+ * 修改职业等级加成
+ *
+ * @param fateJobLevelBonus 职业等级加成
+ * @return 结果
+ */
+ public int updateFateJobLevelBonus(FateJobLevelBonus fateJobLevelBonus);
+
+ /**
+ * 删除职业等级加成
+ *
+ * @param bonusId 职业等级加成主键
+ * @return 结果
+ */
+ public int deleteFateJobLevelBonusByBonusId(Long bonusId);
+
+ /**
+ * 批量删除职业等级加成
+ *
+ * @param bonusIds 需要删除的数据主键集合
+ * @return 结果
+ */
+ public int deleteFateJobLevelBonusByBonusIds(Long[] bonusIds);
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/FateJobPromotionsMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/FateJobPromotionsMapper.java
new file mode 100644
index 0000000..354913e
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/FateJobPromotionsMapper.java
@@ -0,0 +1,61 @@
+package com.ruoyi.system.mapper;
+
+import java.util.List;
+import com.ruoyi.system.domain.FateJobPromotions;
+
+/**
+ * 职业进阶关系Mapper接口
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+public interface FateJobPromotionsMapper
+{
+ /**
+ * 查询职业进阶关系
+ *
+ * @param promotionId 职业进阶关系主键
+ * @return 职业进阶关系
+ */
+ public FateJobPromotions selectFateJobPromotionsByPromotionId(Long promotionId);
+
+ /**
+ * 查询职业进阶关系列表
+ *
+ * @param fateJobPromotions 职业进阶关系
+ * @return 职业进阶关系集合
+ */
+ public List selectFateJobPromotionsList(FateJobPromotions fateJobPromotions);
+
+ /**
+ * 新增职业进阶关系
+ *
+ * @param fateJobPromotions 职业进阶关系
+ * @return 结果
+ */
+ public int insertFateJobPromotions(FateJobPromotions fateJobPromotions);
+
+ /**
+ * 修改职业进阶关系
+ *
+ * @param fateJobPromotions 职业进阶关系
+ * @return 结果
+ */
+ public int updateFateJobPromotions(FateJobPromotions fateJobPromotions);
+
+ /**
+ * 删除职业进阶关系
+ *
+ * @param promotionId 职业进阶关系主键
+ * @return 结果
+ */
+ public int deleteFateJobPromotionsByPromotionId(Long promotionId);
+
+ /**
+ * 批量删除职业进阶关系
+ *
+ * @param promotionIds 需要删除的数据主键集合
+ * @return 结果
+ */
+ public int deleteFateJobPromotionsByPromotionIds(Long[] promotionIds);
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/FateJobSkillsMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/FateJobSkillsMapper.java
new file mode 100644
index 0000000..6032153
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/FateJobSkillsMapper.java
@@ -0,0 +1,62 @@
+package com.ruoyi.system.mapper;
+
+import com.ruoyi.system.domain.FateJobSkills;
+
+import java.util.List;
+
+/**
+ * 职业可学技能Mapper接口
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+public interface FateJobSkillsMapper
+{
+ /**
+ * 查询职业可学技能
+ *
+ * @param jobSkillId 职业可学技能主键
+ * @return 职业可学技能
+ */
+ public FateJobSkills selectFateJobSkillsByJobSkillId(Long jobSkillId);
+
+ /**
+ * 查询职业可学技能列表
+ *
+ * @param fateJobSkills 职业可学技能
+ * @return 职业可学技能集合
+ */
+ public List selectFateJobSkillsList(FateJobSkills fateJobSkills);
+
+ /**
+ * 新增职业可学技能
+ *
+ * @param fateJobSkills 职业可学技能
+ * @return 结果
+ */
+ public int insertFateJobSkills(FateJobSkills fateJobSkills);
+
+ /**
+ * 修改职业可学技能
+ *
+ * @param fateJobSkills 职业可学技能
+ * @return 结果
+ */
+ public int updateFateJobSkills(FateJobSkills fateJobSkills);
+
+ /**
+ * 删除职业可学技能
+ *
+ * @param jobSkillId 职业可学技能主键
+ * @return 结果
+ */
+ public int deleteFateJobSkillsByJobSkillId(Long jobSkillId);
+
+ /**
+ * 批量删除职业可学技能
+ *
+ * @param jobSkillIds 需要删除的数据主键集合
+ * @return 结果
+ */
+ public int deleteFateJobSkillsByJobSkillIds(Long[] jobSkillIds);
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/FateJobsMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/FateJobsMapper.java
new file mode 100644
index 0000000..fb7c4f6
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/FateJobsMapper.java
@@ -0,0 +1,62 @@
+package com.ruoyi.system.mapper;
+
+import com.ruoyi.system.domain.FateJobs;
+
+import java.util.List;
+
+/**
+ * 职业基础Mapper接口
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+public interface FateJobsMapper
+{
+ /**
+ * 查询职业基础
+ *
+ * @param jobId 职业基础主键
+ * @return 职业基础
+ */
+ public FateJobs selectFateJobsByJobId(Long jobId);
+
+ /**
+ * 查询职业基础列表
+ *
+ * @param fateJobs 职业基础
+ * @return 职业基础集合
+ */
+ public List selectFateJobsList(FateJobs fateJobs);
+
+ /**
+ * 新增职业基础
+ *
+ * @param fateJobs 职业基础
+ * @return 结果
+ */
+ public int insertFateJobs(FateJobs fateJobs);
+
+ /**
+ * 修改职业基础
+ *
+ * @param fateJobs 职业基础
+ * @return 结果
+ */
+ public int updateFateJobs(FateJobs fateJobs);
+
+ /**
+ * 删除职业基础
+ *
+ * @param jobId 职业基础主键
+ * @return 结果
+ */
+ public int deleteFateJobsByJobId(Long jobId);
+
+ /**
+ * 批量删除职业基础
+ *
+ * @param jobIds 需要删除的数据主键集合
+ * @return 结果
+ */
+ public int deleteFateJobsByJobIds(Long[] jobIds);
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/FateUserCharacterMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/FateUserCharacterMapper.java
new file mode 100644
index 0000000..a10728e
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/FateUserCharacterMapper.java
@@ -0,0 +1,61 @@
+package com.ruoyi.system.mapper;
+
+import java.util.List;
+import com.ruoyi.system.domain.FateUserCharacter;
+
+/**
+ * 用户角色Mapper接口
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+public interface FateUserCharacterMapper
+{
+ /**
+ * 查询用户角色
+ *
+ * @param userCharacterId 用户角色主键
+ * @return 用户角色
+ */
+ public FateUserCharacter selectFateUserCharacterByUserCharacterId(Long userCharacterId);
+
+ /**
+ * 查询用户角色列表
+ *
+ * @param fateUserCharacter 用户角色
+ * @return 用户角色集合
+ */
+ public List selectFateUserCharacterList(FateUserCharacter fateUserCharacter);
+
+ /**
+ * 新增用户角色
+ *
+ * @param fateUserCharacter 用户角色
+ * @return 结果
+ */
+ public int insertFateUserCharacter(FateUserCharacter fateUserCharacter);
+
+ /**
+ * 修改用户角色
+ *
+ * @param fateUserCharacter 用户角色
+ * @return 结果
+ */
+ public int updateFateUserCharacter(FateUserCharacter fateUserCharacter);
+
+ /**
+ * 删除用户角色
+ *
+ * @param userCharacterId 用户角色主键
+ * @return 结果
+ */
+ public int deleteFateUserCharacterByUserCharacterId(Long userCharacterId);
+
+ /**
+ * 批量删除用户角色
+ *
+ * @param userCharacterIds 需要删除的数据主键集合
+ * @return 结果
+ */
+ public int deleteFateUserCharacterByUserCharacterIds(Long[] userCharacterIds);
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/FateUserEquipmentsMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/FateUserEquipmentsMapper.java
new file mode 100644
index 0000000..79c3fd8
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/FateUserEquipmentsMapper.java
@@ -0,0 +1,62 @@
+package com.ruoyi.system.mapper;
+
+import com.ruoyi.system.domain.FateUserEquipments;
+
+import java.util.List;
+
+/**
+ * 用户装备Mapper接口
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+public interface FateUserEquipmentsMapper
+{
+ /**
+ * 查询用户装备
+ *
+ * @param userEquipmentId 用户装备主键
+ * @return 用户装备
+ */
+ public FateUserEquipments selectFateUserEquipmentsByUserEquipmentId(Long userEquipmentId);
+
+ /**
+ * 查询用户装备列表
+ *
+ * @param fateUserEquipments 用户装备
+ * @return 用户装备集合
+ */
+ public List selectFateUserEquipmentsList(FateUserEquipments fateUserEquipments);
+
+ /**
+ * 新增用户装备
+ *
+ * @param fateUserEquipments 用户装备
+ * @return 结果
+ */
+ public int insertFateUserEquipments(FateUserEquipments fateUserEquipments);
+
+ /**
+ * 修改用户装备
+ *
+ * @param fateUserEquipments 用户装备
+ * @return 结果
+ */
+ public int updateFateUserEquipments(FateUserEquipments fateUserEquipments);
+
+ /**
+ * 删除用户装备
+ *
+ * @param userEquipmentId 用户装备主键
+ * @return 结果
+ */
+ public int deleteFateUserEquipmentsByUserEquipmentId(Long userEquipmentId);
+
+ /**
+ * 批量删除用户装备
+ *
+ * @param userEquipmentIds 需要删除的数据主键集合
+ * @return 结果
+ */
+ public int deleteFateUserEquipmentsByUserEquipmentIds(Long[] userEquipmentIds);
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/IFateCharacterGrowthLogsService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/IFateCharacterGrowthLogsService.java
new file mode 100644
index 0000000..86d5044
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/IFateCharacterGrowthLogsService.java
@@ -0,0 +1,61 @@
+package com.ruoyi.system.service;
+
+import java.util.List;
+import com.ruoyi.system.domain.FateCharacterGrowthLogs;
+
+/**
+ * 角色属性成长记录Service接口
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+public interface IFateCharacterGrowthLogsService
+{
+ /**
+ * 查询角色属性成长记录
+ *
+ * @param logId 角色属性成长记录主键
+ * @return 角色属性成长记录
+ */
+ public FateCharacterGrowthLogs selectFateCharacterGrowthLogsByLogId(Long logId);
+
+ /**
+ * 查询角色属性成长记录列表
+ *
+ * @param fateCharacterGrowthLogs 角色属性成长记录
+ * @return 角色属性成长记录集合
+ */
+ public List selectFateCharacterGrowthLogsList(FateCharacterGrowthLogs fateCharacterGrowthLogs);
+
+ /**
+ * 新增角色属性成长记录
+ *
+ * @param fateCharacterGrowthLogs 角色属性成长记录
+ * @return 结果
+ */
+ public int insertFateCharacterGrowthLogs(FateCharacterGrowthLogs fateCharacterGrowthLogs);
+
+ /**
+ * 修改角色属性成长记录
+ *
+ * @param fateCharacterGrowthLogs 角色属性成长记录
+ * @return 结果
+ */
+ public int updateFateCharacterGrowthLogs(FateCharacterGrowthLogs fateCharacterGrowthLogs);
+
+ /**
+ * 批量删除角色属性成长记录
+ *
+ * @param logIds 需要删除的角色属性成长记录主键集合
+ * @return 结果
+ */
+ public int deleteFateCharacterGrowthLogsByLogIds(Long[] logIds);
+
+ /**
+ * 删除角色属性成长记录信息
+ *
+ * @param logId 角色属性成长记录主键
+ * @return 结果
+ */
+ public int deleteFateCharacterGrowthLogsByLogId(Long logId);
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/IFateCharacterJobsService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/IFateCharacterJobsService.java
new file mode 100644
index 0000000..ec87e2c
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/IFateCharacterJobsService.java
@@ -0,0 +1,61 @@
+package com.ruoyi.system.service;
+
+import java.util.List;
+import com.ruoyi.system.domain.FateCharacterJobs;
+
+/**
+ * 角色职业Service接口
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+public interface IFateCharacterJobsService
+{
+ /**
+ * 查询角色职业
+ *
+ * @param characterJobId 角色职业主键
+ * @return 角色职业
+ */
+ public FateCharacterJobs selectFateCharacterJobsByCharacterJobId(Long characterJobId);
+
+ /**
+ * 查询角色职业列表
+ *
+ * @param fateCharacterJobs 角色职业
+ * @return 角色职业集合
+ */
+ public List selectFateCharacterJobsList(FateCharacterJobs fateCharacterJobs);
+
+ /**
+ * 新增角色职业
+ *
+ * @param fateCharacterJobs 角色职业
+ * @return 结果
+ */
+ public int insertFateCharacterJobs(FateCharacterJobs fateCharacterJobs);
+
+ /**
+ * 修改角色职业
+ *
+ * @param fateCharacterJobs 角色职业
+ * @return 结果
+ */
+ public int updateFateCharacterJobs(FateCharacterJobs fateCharacterJobs);
+
+ /**
+ * 批量删除角色职业
+ *
+ * @param characterJobIds 需要删除的角色职业主键集合
+ * @return 结果
+ */
+ public int deleteFateCharacterJobsByCharacterJobIds(Long[] characterJobIds);
+
+ /**
+ * 删除角色职业信息
+ *
+ * @param characterJobId 角色职业主键
+ * @return 结果
+ */
+ public int deleteFateCharacterJobsByCharacterJobId(Long characterJobId);
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/IFateCharacterService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/IFateCharacterService.java
new file mode 100644
index 0000000..df107e4
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/IFateCharacterService.java
@@ -0,0 +1,61 @@
+package com.ruoyi.system.service;
+
+import java.util.List;
+import com.ruoyi.system.domain.FateCharacter;
+
+/**
+ * 角色基础Service接口
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+public interface IFateCharacterService
+{
+ /**
+ * 查询角色基础
+ *
+ * @param characterId 角色基础主键
+ * @return 角色基础
+ */
+ public FateCharacter selectFateCharacterByCharacterId(Long characterId);
+
+ /**
+ * 查询角色基础列表
+ *
+ * @param fateCharacter 角色基础
+ * @return 角色基础集合
+ */
+ public List selectFateCharacterList(FateCharacter fateCharacter);
+
+ /**
+ * 新增角色基础
+ *
+ * @param fateCharacter 角色基础
+ * @return 结果
+ */
+ public int insertFateCharacter(FateCharacter fateCharacter);
+
+ /**
+ * 修改角色基础
+ *
+ * @param fateCharacter 角色基础
+ * @return 结果
+ */
+ public int updateFateCharacter(FateCharacter fateCharacter);
+
+ /**
+ * 批量删除角色基础
+ *
+ * @param characterIds 需要删除的角色基础主键集合
+ * @return 结果
+ */
+ public int deleteFateCharacterByCharacterIds(Long[] characterIds);
+
+ /**
+ * 删除角色基础信息
+ *
+ * @param characterId 角色基础主键
+ * @return 结果
+ */
+ public int deleteFateCharacterByCharacterId(Long characterId);
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/IFateEquipmentAttributesService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/IFateEquipmentAttributesService.java
new file mode 100644
index 0000000..96f20a8
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/IFateEquipmentAttributesService.java
@@ -0,0 +1,63 @@
+package com.ruoyi.system.service;
+
+
+import com.ruoyi.system.domain.FateEquipmentAttributes;
+
+import java.util.List;
+
+/**
+ * 装备附加属性Service接口
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+public interface IFateEquipmentAttributesService
+{
+ /**
+ * 查询装备附加属性
+ *
+ * @param attributeId 装备附加属性主键
+ * @return 装备附加属性
+ */
+ public FateEquipmentAttributes selectFateEquipmentAttributesByAttributeId(Long attributeId);
+
+ /**
+ * 查询装备附加属性列表
+ *
+ * @param fateEquipmentAttributes 装备附加属性
+ * @return 装备附加属性集合
+ */
+ public List selectFateEquipmentAttributesList(FateEquipmentAttributes fateEquipmentAttributes);
+
+ /**
+ * 新增装备附加属性
+ *
+ * @param fateEquipmentAttributes 装备附加属性
+ * @return 结果
+ */
+ public int insertFateEquipmentAttributes(FateEquipmentAttributes fateEquipmentAttributes);
+
+ /**
+ * 修改装备附加属性
+ *
+ * @param fateEquipmentAttributes 装备附加属性
+ * @return 结果
+ */
+ public int updateFateEquipmentAttributes(FateEquipmentAttributes fateEquipmentAttributes);
+
+ /**
+ * 批量删除装备附加属性
+ *
+ * @param attributeIds 需要删除的装备附加属性主键集合
+ * @return 结果
+ */
+ public int deleteFateEquipmentAttributesByAttributeIds(Long[] attributeIds);
+
+ /**
+ * 删除装备附加属性信息
+ *
+ * @param attributeId 装备附加属性主键
+ * @return 结果
+ */
+ public int deleteFateEquipmentAttributesByAttributeId(Long attributeId);
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/IFateEquipmentPossibleAttributesService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/IFateEquipmentPossibleAttributesService.java
new file mode 100644
index 0000000..0d6158f
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/IFateEquipmentPossibleAttributesService.java
@@ -0,0 +1,61 @@
+package com.ruoyi.system.service;
+
+import java.util.List;
+import com.ruoyi.system.domain.FateEquipmentPossibleAttributes;
+
+/**
+ * 装备可能拥有的属性Service接口
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+public interface IFateEquipmentPossibleAttributesService
+{
+ /**
+ * 查询装备可能拥有的属性
+ *
+ * @param id 装备可能拥有的属性主键
+ * @return 装备可能拥有的属性
+ */
+ public FateEquipmentPossibleAttributes selectFateEquipmentPossibleAttributesById(Long id);
+
+ /**
+ * 查询装备可能拥有的属性列表
+ *
+ * @param fateEquipmentPossibleAttributes 装备可能拥有的属性
+ * @return 装备可能拥有的属性集合
+ */
+ public List selectFateEquipmentPossibleAttributesList(FateEquipmentPossibleAttributes fateEquipmentPossibleAttributes);
+
+ /**
+ * 新增装备可能拥有的属性
+ *
+ * @param fateEquipmentPossibleAttributes 装备可能拥有的属性
+ * @return 结果
+ */
+ public int insertFateEquipmentPossibleAttributes(FateEquipmentPossibleAttributes fateEquipmentPossibleAttributes);
+
+ /**
+ * 修改装备可能拥有的属性
+ *
+ * @param fateEquipmentPossibleAttributes 装备可能拥有的属性
+ * @return 结果
+ */
+ public int updateFateEquipmentPossibleAttributes(FateEquipmentPossibleAttributes fateEquipmentPossibleAttributes);
+
+ /**
+ * 批量删除装备可能拥有的属性
+ *
+ * @param ids 需要删除的装备可能拥有的属性主键集合
+ * @return 结果
+ */
+ public int deleteFateEquipmentPossibleAttributesByIds(Long[] ids);
+
+ /**
+ * 删除装备可能拥有的属性信息
+ *
+ * @param id 装备可能拥有的属性主键
+ * @return 结果
+ */
+ public int deleteFateEquipmentPossibleAttributesById(Long id);
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/IFateEquipmentQualitiesService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/IFateEquipmentQualitiesService.java
new file mode 100644
index 0000000..bebd714
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/IFateEquipmentQualitiesService.java
@@ -0,0 +1,61 @@
+package com.ruoyi.system.service;
+
+import java.util.List;
+import com.ruoyi.system.domain.FateEquipmentQualities;
+
+/**
+ * 装备品质Service接口
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+public interface IFateEquipmentQualitiesService
+{
+ /**
+ * 查询装备品质
+ *
+ * @param qualityId 装备品质主键
+ * @return 装备品质
+ */
+ public FateEquipmentQualities selectFateEquipmentQualitiesByQualityId(Long qualityId);
+
+ /**
+ * 查询装备品质列表
+ *
+ * @param fateEquipmentQualities 装备品质
+ * @return 装备品质集合
+ */
+ public List selectFateEquipmentQualitiesList(FateEquipmentQualities fateEquipmentQualities);
+
+ /**
+ * 新增装备品质
+ *
+ * @param fateEquipmentQualities 装备品质
+ * @return 结果
+ */
+ public int insertFateEquipmentQualities(FateEquipmentQualities fateEquipmentQualities);
+
+ /**
+ * 修改装备品质
+ *
+ * @param fateEquipmentQualities 装备品质
+ * @return 结果
+ */
+ public int updateFateEquipmentQualities(FateEquipmentQualities fateEquipmentQualities);
+
+ /**
+ * 批量删除装备品质
+ *
+ * @param qualityIds 需要删除的装备品质主键集合
+ * @return 结果
+ */
+ public int deleteFateEquipmentQualitiesByQualityIds(Long[] qualityIds);
+
+ /**
+ * 删除装备品质信息
+ *
+ * @param qualityId 装备品质主键
+ * @return 结果
+ */
+ public int deleteFateEquipmentQualitiesByQualityId(Long qualityId);
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/IFateEquipmentSetItemsService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/IFateEquipmentSetItemsService.java
new file mode 100644
index 0000000..0f01fb0
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/IFateEquipmentSetItemsService.java
@@ -0,0 +1,61 @@
+package com.ruoyi.system.service;
+
+import java.util.List;
+import com.ruoyi.system.domain.FateEquipmentSetItems;
+
+/**
+ * 装备套装包含Service接口
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+public interface IFateEquipmentSetItemsService
+{
+ /**
+ * 查询装备套装包含
+ *
+ * @param id 装备套装包含主键
+ * @return 装备套装包含
+ */
+ public FateEquipmentSetItems selectFateEquipmentSetItemsById(Long id);
+
+ /**
+ * 查询装备套装包含列表
+ *
+ * @param fateEquipmentSetItems 装备套装包含
+ * @return 装备套装包含集合
+ */
+ public List selectFateEquipmentSetItemsList(FateEquipmentSetItems fateEquipmentSetItems);
+
+ /**
+ * 新增装备套装包含
+ *
+ * @param fateEquipmentSetItems 装备套装包含
+ * @return 结果
+ */
+ public int insertFateEquipmentSetItems(FateEquipmentSetItems fateEquipmentSetItems);
+
+ /**
+ * 修改装备套装包含
+ *
+ * @param fateEquipmentSetItems 装备套装包含
+ * @return 结果
+ */
+ public int updateFateEquipmentSetItems(FateEquipmentSetItems fateEquipmentSetItems);
+
+ /**
+ * 批量删除装备套装包含
+ *
+ * @param ids 需要删除的装备套装包含主键集合
+ * @return 结果
+ */
+ public int deleteFateEquipmentSetItemsByIds(Long[] ids);
+
+ /**
+ * 删除装备套装包含信息
+ *
+ * @param id 装备套装包含主键
+ * @return 结果
+ */
+ public int deleteFateEquipmentSetItemsById(Long id);
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/IFateEquipmentSetsService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/IFateEquipmentSetsService.java
new file mode 100644
index 0000000..60e4744
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/IFateEquipmentSetsService.java
@@ -0,0 +1,61 @@
+package com.ruoyi.system.service;
+
+import java.util.List;
+import com.ruoyi.system.domain.FateEquipmentSets;
+
+/**
+ * 装备套装Service接口
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+public interface IFateEquipmentSetsService
+{
+ /**
+ * 查询装备套装
+ *
+ * @param setId 装备套装主键
+ * @return 装备套装
+ */
+ public FateEquipmentSets selectFateEquipmentSetsBySetId(Long setId);
+
+ /**
+ * 查询装备套装列表
+ *
+ * @param fateEquipmentSets 装备套装
+ * @return 装备套装集合
+ */
+ public List selectFateEquipmentSetsList(FateEquipmentSets fateEquipmentSets);
+
+ /**
+ * 新增装备套装
+ *
+ * @param fateEquipmentSets 装备套装
+ * @return 结果
+ */
+ public int insertFateEquipmentSets(FateEquipmentSets fateEquipmentSets);
+
+ /**
+ * 修改装备套装
+ *
+ * @param fateEquipmentSets 装备套装
+ * @return 结果
+ */
+ public int updateFateEquipmentSets(FateEquipmentSets fateEquipmentSets);
+
+ /**
+ * 批量删除装备套装
+ *
+ * @param setIds 需要删除的装备套装主键集合
+ * @return 结果
+ */
+ public int deleteFateEquipmentSetsBySetIds(Long[] setIds);
+
+ /**
+ * 删除装备套装信息
+ *
+ * @param setId 装备套装主键
+ * @return 结果
+ */
+ public int deleteFateEquipmentSetsBySetId(Long setId);
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/IFateEquipmentTypesService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/IFateEquipmentTypesService.java
new file mode 100644
index 0000000..2ef2745
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/IFateEquipmentTypesService.java
@@ -0,0 +1,62 @@
+package com.ruoyi.system.service;
+
+import com.ruoyi.system.domain.FateEquipmentTypes;
+
+import java.util.List;
+
+/**
+ * 装备类型Service接口
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+public interface IFateEquipmentTypesService
+{
+ /**
+ * 查询装备类型
+ *
+ * @param typeId 装备类型主键
+ * @return 装备类型
+ */
+ public FateEquipmentTypes selectFateEquipmentTypesByTypeId(Long typeId);
+
+ /**
+ * 查询装备类型列表
+ *
+ * @param fateEquipmentTypes 装备类型
+ * @return 装备类型集合
+ */
+ public List selectFateEquipmentTypesList(FateEquipmentTypes fateEquipmentTypes);
+
+ /**
+ * 新增装备类型
+ *
+ * @param fateEquipmentTypes 装备类型
+ * @return 结果
+ */
+ public int insertFateEquipmentTypes(FateEquipmentTypes fateEquipmentTypes);
+
+ /**
+ * 修改装备类型
+ *
+ * @param fateEquipmentTypes 装备类型
+ * @return 结果
+ */
+ public int updateFateEquipmentTypes(FateEquipmentTypes fateEquipmentTypes);
+
+ /**
+ * 批量删除装备类型
+ *
+ * @param typeIds 需要删除的装备类型主键集合
+ * @return 结果
+ */
+ public int deleteFateEquipmentTypesByTypeIds(Long[] typeIds);
+
+ /**
+ * 删除装备类型信息
+ *
+ * @param typeId 装备类型主键
+ * @return 结果
+ */
+ public int deleteFateEquipmentTypesByTypeId(Long typeId);
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/IFateEquipmentsService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/IFateEquipmentsService.java
new file mode 100644
index 0000000..c4d3fa2
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/IFateEquipmentsService.java
@@ -0,0 +1,61 @@
+package com.ruoyi.system.service;
+
+import java.util.List;
+import com.ruoyi.system.domain.FateEquipments;
+
+/**
+ * 装备基础Service接口
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+public interface IFateEquipmentsService
+{
+ /**
+ * 查询装备基础
+ *
+ * @param equipmentId 装备基础主键
+ * @return 装备基础
+ */
+ public FateEquipments selectFateEquipmentsByEquipmentId(Long equipmentId);
+
+ /**
+ * 查询装备基础列表
+ *
+ * @param fateEquipments 装备基础
+ * @return 装备基础集合
+ */
+ public List selectFateEquipmentsList(FateEquipments fateEquipments);
+
+ /**
+ * 新增装备基础
+ *
+ * @param fateEquipments 装备基础
+ * @return 结果
+ */
+ public int insertFateEquipments(FateEquipments fateEquipments);
+
+ /**
+ * 修改装备基础
+ *
+ * @param fateEquipments 装备基础
+ * @return 结果
+ */
+ public int updateFateEquipments(FateEquipments fateEquipments);
+
+ /**
+ * 批量删除装备基础
+ *
+ * @param equipmentIds 需要删除的装备基础主键集合
+ * @return 结果
+ */
+ public int deleteFateEquipmentsByEquipmentIds(Long[] equipmentIds);
+
+ /**
+ * 删除装备基础信息
+ *
+ * @param equipmentId 装备基础主键
+ * @return 结果
+ */
+ public int deleteFateEquipmentsByEquipmentId(Long equipmentId);
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/IFateJobLevelBonusService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/IFateJobLevelBonusService.java
new file mode 100644
index 0000000..592880a
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/IFateJobLevelBonusService.java
@@ -0,0 +1,61 @@
+package com.ruoyi.system.service;
+
+import java.util.List;
+import com.ruoyi.system.domain.FateJobLevelBonus;
+
+/**
+ * 职业等级加成Service接口
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+public interface IFateJobLevelBonusService
+{
+ /**
+ * 查询职业等级加成
+ *
+ * @param bonusId 职业等级加成主键
+ * @return 职业等级加成
+ */
+ public FateJobLevelBonus selectFateJobLevelBonusByBonusId(Long bonusId);
+
+ /**
+ * 查询职业等级加成列表
+ *
+ * @param fateJobLevelBonus 职业等级加成
+ * @return 职业等级加成集合
+ */
+ public List selectFateJobLevelBonusList(FateJobLevelBonus fateJobLevelBonus);
+
+ /**
+ * 新增职业等级加成
+ *
+ * @param fateJobLevelBonus 职业等级加成
+ * @return 结果
+ */
+ public int insertFateJobLevelBonus(FateJobLevelBonus fateJobLevelBonus);
+
+ /**
+ * 修改职业等级加成
+ *
+ * @param fateJobLevelBonus 职业等级加成
+ * @return 结果
+ */
+ public int updateFateJobLevelBonus(FateJobLevelBonus fateJobLevelBonus);
+
+ /**
+ * 批量删除职业等级加成
+ *
+ * @param bonusIds 需要删除的职业等级加成主键集合
+ * @return 结果
+ */
+ public int deleteFateJobLevelBonusByBonusIds(Long[] bonusIds);
+
+ /**
+ * 删除职业等级加成信息
+ *
+ * @param bonusId 职业等级加成主键
+ * @return 结果
+ */
+ public int deleteFateJobLevelBonusByBonusId(Long bonusId);
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/IFateJobPromotionsService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/IFateJobPromotionsService.java
new file mode 100644
index 0000000..f0eb1a4
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/IFateJobPromotionsService.java
@@ -0,0 +1,61 @@
+package com.ruoyi.system.service;
+
+import java.util.List;
+import com.ruoyi.system.domain.FateJobPromotions;
+
+/**
+ * 职业进阶关系Service接口
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+public interface IFateJobPromotionsService
+{
+ /**
+ * 查询职业进阶关系
+ *
+ * @param promotionId 职业进阶关系主键
+ * @return 职业进阶关系
+ */
+ public FateJobPromotions selectFateJobPromotionsByPromotionId(Long promotionId);
+
+ /**
+ * 查询职业进阶关系列表
+ *
+ * @param fateJobPromotions 职业进阶关系
+ * @return 职业进阶关系集合
+ */
+ public List selectFateJobPromotionsList(FateJobPromotions fateJobPromotions);
+
+ /**
+ * 新增职业进阶关系
+ *
+ * @param fateJobPromotions 职业进阶关系
+ * @return 结果
+ */
+ public int insertFateJobPromotions(FateJobPromotions fateJobPromotions);
+
+ /**
+ * 修改职业进阶关系
+ *
+ * @param fateJobPromotions 职业进阶关系
+ * @return 结果
+ */
+ public int updateFateJobPromotions(FateJobPromotions fateJobPromotions);
+
+ /**
+ * 批量删除职业进阶关系
+ *
+ * @param promotionIds 需要删除的职业进阶关系主键集合
+ * @return 结果
+ */
+ public int deleteFateJobPromotionsByPromotionIds(Long[] promotionIds);
+
+ /**
+ * 删除职业进阶关系信息
+ *
+ * @param promotionId 职业进阶关系主键
+ * @return 结果
+ */
+ public int deleteFateJobPromotionsByPromotionId(Long promotionId);
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/IFateJobSkillsService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/IFateJobSkillsService.java
new file mode 100644
index 0000000..d30e70c
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/IFateJobSkillsService.java
@@ -0,0 +1,62 @@
+package com.ruoyi.system.service;
+
+import com.ruoyi.system.domain.FateJobSkills;
+
+import java.util.List;
+
+/**
+ * 职业可学技能Service接口
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+public interface IFateJobSkillsService
+{
+ /**
+ * 查询职业可学技能
+ *
+ * @param jobSkillId 职业可学技能主键
+ * @return 职业可学技能
+ */
+ public FateJobSkills selectFateJobSkillsByJobSkillId(Long jobSkillId);
+
+ /**
+ * 查询职业可学技能列表
+ *
+ * @param fateJobSkills 职业可学技能
+ * @return 职业可学技能集合
+ */
+ public List selectFateJobSkillsList(FateJobSkills fateJobSkills);
+
+ /**
+ * 新增职业可学技能
+ *
+ * @param fateJobSkills 职业可学技能
+ * @return 结果
+ */
+ public int insertFateJobSkills(FateJobSkills fateJobSkills);
+
+ /**
+ * 修改职业可学技能
+ *
+ * @param fateJobSkills 职业可学技能
+ * @return 结果
+ */
+ public int updateFateJobSkills(FateJobSkills fateJobSkills);
+
+ /**
+ * 批量删除职业可学技能
+ *
+ * @param jobSkillIds 需要删除的职业可学技能主键集合
+ * @return 结果
+ */
+ public int deleteFateJobSkillsByJobSkillIds(Long[] jobSkillIds);
+
+ /**
+ * 删除职业可学技能信息
+ *
+ * @param jobSkillId 职业可学技能主键
+ * @return 结果
+ */
+ public int deleteFateJobSkillsByJobSkillId(Long jobSkillId);
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/IFateJobsService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/IFateJobsService.java
new file mode 100644
index 0000000..67eaf0b
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/IFateJobsService.java
@@ -0,0 +1,62 @@
+package com.ruoyi.system.service;
+
+import com.ruoyi.system.domain.FateJobs;
+
+import java.util.List;
+
+/**
+ * 职业基础Service接口
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+public interface IFateJobsService
+{
+ /**
+ * 查询职业基础
+ *
+ * @param jobId 职业基础主键
+ * @return 职业基础
+ */
+ public FateJobs selectFateJobsByJobId(Long jobId);
+
+ /**
+ * 查询职业基础列表
+ *
+ * @param fateJobs 职业基础
+ * @return 职业基础集合
+ */
+ public List selectFateJobsList(FateJobs fateJobs);
+
+ /**
+ * 新增职业基础
+ *
+ * @param fateJobs 职业基础
+ * @return 结果
+ */
+ public int insertFateJobs(FateJobs fateJobs);
+
+ /**
+ * 修改职业基础
+ *
+ * @param fateJobs 职业基础
+ * @return 结果
+ */
+ public int updateFateJobs(FateJobs fateJobs);
+
+ /**
+ * 批量删除职业基础
+ *
+ * @param jobIds 需要删除的职业基础主键集合
+ * @return 结果
+ */
+ public int deleteFateJobsByJobIds(Long[] jobIds);
+
+ /**
+ * 删除职业基础信息
+ *
+ * @param jobId 职业基础主键
+ * @return 结果
+ */
+ public int deleteFateJobsByJobId(Long jobId);
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/IFateUserCharacterService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/IFateUserCharacterService.java
new file mode 100644
index 0000000..68a0011
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/IFateUserCharacterService.java
@@ -0,0 +1,61 @@
+package com.ruoyi.system.service;
+
+import java.util.List;
+import com.ruoyi.system.domain.FateUserCharacter;
+
+/**
+ * 用户角色Service接口
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+public interface IFateUserCharacterService
+{
+ /**
+ * 查询用户角色
+ *
+ * @param userCharacterId 用户角色主键
+ * @return 用户角色
+ */
+ public FateUserCharacter selectFateUserCharacterByUserCharacterId(Long userCharacterId);
+
+ /**
+ * 查询用户角色列表
+ *
+ * @param fateUserCharacter 用户角色
+ * @return 用户角色集合
+ */
+ public List selectFateUserCharacterList(FateUserCharacter fateUserCharacter);
+
+ /**
+ * 新增用户角色
+ *
+ * @param fateUserCharacter 用户角色
+ * @return 结果
+ */
+ public int insertFateUserCharacter(FateUserCharacter fateUserCharacter);
+
+ /**
+ * 修改用户角色
+ *
+ * @param fateUserCharacter 用户角色
+ * @return 结果
+ */
+ public int updateFateUserCharacter(FateUserCharacter fateUserCharacter);
+
+ /**
+ * 批量删除用户角色
+ *
+ * @param userCharacterIds 需要删除的用户角色主键集合
+ * @return 结果
+ */
+ public int deleteFateUserCharacterByUserCharacterIds(Long[] userCharacterIds);
+
+ /**
+ * 删除用户角色信息
+ *
+ * @param userCharacterId 用户角色主键
+ * @return 结果
+ */
+ public int deleteFateUserCharacterByUserCharacterId(Long userCharacterId);
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/IFateUserEquipmentsService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/IFateUserEquipmentsService.java
new file mode 100644
index 0000000..30881b7
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/IFateUserEquipmentsService.java
@@ -0,0 +1,61 @@
+package com.ruoyi.system.service;
+
+import java.util.List;
+import com.ruoyi.system.domain.FateUserEquipments;
+
+/**
+ * 用户装备Service接口
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+public interface IFateUserEquipmentsService
+{
+ /**
+ * 查询用户装备
+ *
+ * @param userEquipmentId 用户装备主键
+ * @return 用户装备
+ */
+ public FateUserEquipments selectFateUserEquipmentsByUserEquipmentId(Long userEquipmentId);
+
+ /**
+ * 查询用户装备列表
+ *
+ * @param fateUserEquipments 用户装备
+ * @return 用户装备集合
+ */
+ public List selectFateUserEquipmentsList(FateUserEquipments fateUserEquipments);
+
+ /**
+ * 新增用户装备
+ *
+ * @param fateUserEquipments 用户装备
+ * @return 结果
+ */
+ public int insertFateUserEquipments(FateUserEquipments fateUserEquipments);
+
+ /**
+ * 修改用户装备
+ *
+ * @param fateUserEquipments 用户装备
+ * @return 结果
+ */
+ public int updateFateUserEquipments(FateUserEquipments fateUserEquipments);
+
+ /**
+ * 批量删除用户装备
+ *
+ * @param userEquipmentIds 需要删除的用户装备主键集合
+ * @return 结果
+ */
+ public int deleteFateUserEquipmentsByUserEquipmentIds(Long[] userEquipmentIds);
+
+ /**
+ * 删除用户装备信息
+ *
+ * @param userEquipmentId 用户装备主键
+ * @return 结果
+ */
+ public int deleteFateUserEquipmentsByUserEquipmentId(Long userEquipmentId);
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FateCharacterGrowthLogsServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FateCharacterGrowthLogsServiceImpl.java
new file mode 100644
index 0000000..3c12461
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FateCharacterGrowthLogsServiceImpl.java
@@ -0,0 +1,93 @@
+package com.ruoyi.system.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.system.mapper.FateCharacterGrowthLogsMapper;
+import com.ruoyi.system.domain.FateCharacterGrowthLogs;
+import com.ruoyi.system.service.IFateCharacterGrowthLogsService;
+
+/**
+ * 角色属性成长记录Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+@Service
+public class FateCharacterGrowthLogsServiceImpl implements IFateCharacterGrowthLogsService
+{
+ @Autowired
+ private FateCharacterGrowthLogsMapper fateCharacterGrowthLogsMapper;
+
+ /**
+ * 查询角色属性成长记录
+ *
+ * @param logId 角色属性成长记录主键
+ * @return 角色属性成长记录
+ */
+ @Override
+ public FateCharacterGrowthLogs selectFateCharacterGrowthLogsByLogId(Long logId)
+ {
+ return fateCharacterGrowthLogsMapper.selectFateCharacterGrowthLogsByLogId(logId);
+ }
+
+ /**
+ * 查询角色属性成长记录列表
+ *
+ * @param fateCharacterGrowthLogs 角色属性成长记录
+ * @return 角色属性成长记录
+ */
+ @Override
+ public List selectFateCharacterGrowthLogsList(FateCharacterGrowthLogs fateCharacterGrowthLogs)
+ {
+ return fateCharacterGrowthLogsMapper.selectFateCharacterGrowthLogsList(fateCharacterGrowthLogs);
+ }
+
+ /**
+ * 新增角色属性成长记录
+ *
+ * @param fateCharacterGrowthLogs 角色属性成长记录
+ * @return 结果
+ */
+ @Override
+ public int insertFateCharacterGrowthLogs(FateCharacterGrowthLogs fateCharacterGrowthLogs)
+ {
+ return fateCharacterGrowthLogsMapper.insertFateCharacterGrowthLogs(fateCharacterGrowthLogs);
+ }
+
+ /**
+ * 修改角色属性成长记录
+ *
+ * @param fateCharacterGrowthLogs 角色属性成长记录
+ * @return 结果
+ */
+ @Override
+ public int updateFateCharacterGrowthLogs(FateCharacterGrowthLogs fateCharacterGrowthLogs)
+ {
+ return fateCharacterGrowthLogsMapper.updateFateCharacterGrowthLogs(fateCharacterGrowthLogs);
+ }
+
+ /**
+ * 批量删除角色属性成长记录
+ *
+ * @param logIds 需要删除的角色属性成长记录主键
+ * @return 结果
+ */
+ @Override
+ public int deleteFateCharacterGrowthLogsByLogIds(Long[] logIds)
+ {
+ return fateCharacterGrowthLogsMapper.deleteFateCharacterGrowthLogsByLogIds(logIds);
+ }
+
+ /**
+ * 删除角色属性成长记录信息
+ *
+ * @param logId 角色属性成长记录主键
+ * @return 结果
+ */
+ @Override
+ public int deleteFateCharacterGrowthLogsByLogId(Long logId)
+ {
+ return fateCharacterGrowthLogsMapper.deleteFateCharacterGrowthLogsByLogId(logId);
+ }
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FateCharacterJobsServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FateCharacterJobsServiceImpl.java
new file mode 100644
index 0000000..6909876
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FateCharacterJobsServiceImpl.java
@@ -0,0 +1,93 @@
+package com.ruoyi.system.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.system.mapper.FateCharacterJobsMapper;
+import com.ruoyi.system.domain.FateCharacterJobs;
+import com.ruoyi.system.service.IFateCharacterJobsService;
+
+/**
+ * 角色职业Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+@Service
+public class FateCharacterJobsServiceImpl implements IFateCharacterJobsService
+{
+ @Autowired
+ private FateCharacterJobsMapper fateCharacterJobsMapper;
+
+ /**
+ * 查询角色职业
+ *
+ * @param characterJobId 角色职业主键
+ * @return 角色职业
+ */
+ @Override
+ public FateCharacterJobs selectFateCharacterJobsByCharacterJobId(Long characterJobId)
+ {
+ return fateCharacterJobsMapper.selectFateCharacterJobsByCharacterJobId(characterJobId);
+ }
+
+ /**
+ * 查询角色职业列表
+ *
+ * @param fateCharacterJobs 角色职业
+ * @return 角色职业
+ */
+ @Override
+ public List selectFateCharacterJobsList(FateCharacterJobs fateCharacterJobs)
+ {
+ return fateCharacterJobsMapper.selectFateCharacterJobsList(fateCharacterJobs);
+ }
+
+ /**
+ * 新增角色职业
+ *
+ * @param fateCharacterJobs 角色职业
+ * @return 结果
+ */
+ @Override
+ public int insertFateCharacterJobs(FateCharacterJobs fateCharacterJobs)
+ {
+ return fateCharacterJobsMapper.insertFateCharacterJobs(fateCharacterJobs);
+ }
+
+ /**
+ * 修改角色职业
+ *
+ * @param fateCharacterJobs 角色职业
+ * @return 结果
+ */
+ @Override
+ public int updateFateCharacterJobs(FateCharacterJobs fateCharacterJobs)
+ {
+ return fateCharacterJobsMapper.updateFateCharacterJobs(fateCharacterJobs);
+ }
+
+ /**
+ * 批量删除角色职业
+ *
+ * @param characterJobIds 需要删除的角色职业主键
+ * @return 结果
+ */
+ @Override
+ public int deleteFateCharacterJobsByCharacterJobIds(Long[] characterJobIds)
+ {
+ return fateCharacterJobsMapper.deleteFateCharacterJobsByCharacterJobIds(characterJobIds);
+ }
+
+ /**
+ * 删除角色职业信息
+ *
+ * @param characterJobId 角色职业主键
+ * @return 结果
+ */
+ @Override
+ public int deleteFateCharacterJobsByCharacterJobId(Long characterJobId)
+ {
+ return fateCharacterJobsMapper.deleteFateCharacterJobsByCharacterJobId(characterJobId);
+ }
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FateCharacterServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FateCharacterServiceImpl.java
new file mode 100644
index 0000000..f595937
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FateCharacterServiceImpl.java
@@ -0,0 +1,99 @@
+package com.ruoyi.system.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.system.mapper.FateCharacterMapper;
+import com.ruoyi.system.domain.FateCharacter;
+import com.ruoyi.system.service.IFateCharacterService;
+
+/**
+ * 角色基础Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+@Service
+public class FateCharacterServiceImpl implements IFateCharacterService
+{
+ @Autowired
+ private FateCharacterMapper fateCharacterMapper;
+
+ /**
+ * 查询角色基础
+ *
+ * @param characterId 角色基础主键
+ * @return 角色基础
+ */
+ @Override
+ public FateCharacter selectFateCharacterByCharacterId(Long characterId)
+ {
+ return fateCharacterMapper.selectFateCharacterByCharacterId(characterId);
+ }
+
+ /**
+ * 查询角色基础列表
+ *
+ * @param fateCharacter 角色基础
+ * @return 角色基础
+ */
+ @Override
+ public List selectFateCharacterList(FateCharacter fateCharacter)
+ {
+ List list = fateCharacterMapper.selectFateCharacterList(fateCharacter);
+ for (FateCharacter character : list) {
+ character.setRarityDesc(character.getRarityDesc());
+ character.setMoveTypeDesc(character.getMoveTypeDesc());
+ character.setWeaponTypeDesc(character.getWeaponTypeDesc());
+ }
+ return list;
+ }
+
+ /**
+ * 新增角色基础
+ *
+ * @param fateCharacter 角色基础
+ * @return 结果
+ */
+ @Override
+ public int insertFateCharacter(FateCharacter fateCharacter)
+ {
+ return fateCharacterMapper.insertFateCharacter(fateCharacter);
+ }
+
+ /**
+ * 修改角色基础
+ *
+ * @param fateCharacter 角色基础
+ * @return 结果
+ */
+ @Override
+ public int updateFateCharacter(FateCharacter fateCharacter)
+ {
+ return fateCharacterMapper.updateFateCharacter(fateCharacter);
+ }
+
+ /**
+ * 批量删除角色基础
+ *
+ * @param characterIds 需要删除的角色基础主键
+ * @return 结果
+ */
+ @Override
+ public int deleteFateCharacterByCharacterIds(Long[] characterIds)
+ {
+ return fateCharacterMapper.deleteFateCharacterByCharacterIds(characterIds);
+ }
+
+ /**
+ * 删除角色基础信息
+ *
+ * @param characterId 角色基础主键
+ * @return 结果
+ */
+ @Override
+ public int deleteFateCharacterByCharacterId(Long characterId)
+ {
+ return fateCharacterMapper.deleteFateCharacterByCharacterId(characterId);
+ }
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FateEquipmentAttributesServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FateEquipmentAttributesServiceImpl.java
new file mode 100644
index 0000000..9e4e5ee
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FateEquipmentAttributesServiceImpl.java
@@ -0,0 +1,94 @@
+package com.ruoyi.system.service.impl;
+
+import java.util.List;
+
+import com.ruoyi.system.domain.FateEquipmentAttributes;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.system.mapper.FateEquipmentAttributesMapper;
+import com.ruoyi.system.service.IFateEquipmentAttributesService;
+
+/**
+ * 装备附加属性Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+@Service
+public class FateEquipmentAttributesServiceImpl implements IFateEquipmentAttributesService
+{
+ @Autowired
+ private FateEquipmentAttributesMapper fateEquipmentAttributesMapper;
+
+ /**
+ * 查询装备附加属性
+ *
+ * @param attributeId 装备附加属性主键
+ * @return 装备附加属性
+ */
+ @Override
+ public FateEquipmentAttributes selectFateEquipmentAttributesByAttributeId(Long attributeId)
+ {
+ return fateEquipmentAttributesMapper.selectFateEquipmentAttributesByAttributeId(attributeId);
+ }
+
+ /**
+ * 查询装备附加属性列表
+ *
+ * @param fateEquipmentAttributes 装备附加属性
+ * @return 装备附加属性
+ */
+ @Override
+ public List selectFateEquipmentAttributesList(FateEquipmentAttributes fateEquipmentAttributes)
+ {
+ return fateEquipmentAttributesMapper.selectFateEquipmentAttributesList(fateEquipmentAttributes);
+ }
+
+ /**
+ * 新增装备附加属性
+ *
+ * @param fateEquipmentAttributes 装备附加属性
+ * @return 结果
+ */
+ @Override
+ public int insertFateEquipmentAttributes(FateEquipmentAttributes fateEquipmentAttributes)
+ {
+ return fateEquipmentAttributesMapper.insertFateEquipmentAttributes(fateEquipmentAttributes);
+ }
+
+ /**
+ * 修改装备附加属性
+ *
+ * @param fateEquipmentAttributes 装备附加属性
+ * @return 结果
+ */
+ @Override
+ public int updateFateEquipmentAttributes(FateEquipmentAttributes fateEquipmentAttributes)
+ {
+ return fateEquipmentAttributesMapper.updateFateEquipmentAttributes(fateEquipmentAttributes);
+ }
+
+ /**
+ * 批量删除装备附加属性
+ *
+ * @param attributeIds 需要删除的装备附加属性主键
+ * @return 结果
+ */
+ @Override
+ public int deleteFateEquipmentAttributesByAttributeIds(Long[] attributeIds)
+ {
+ return fateEquipmentAttributesMapper.deleteFateEquipmentAttributesByAttributeIds(attributeIds);
+ }
+
+ /**
+ * 删除装备附加属性信息
+ *
+ * @param attributeId 装备附加属性主键
+ * @return 结果
+ */
+ @Override
+ public int deleteFateEquipmentAttributesByAttributeId(Long attributeId)
+ {
+ return fateEquipmentAttributesMapper.deleteFateEquipmentAttributesByAttributeId(attributeId);
+ }
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FateEquipmentPossibleAttributesServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FateEquipmentPossibleAttributesServiceImpl.java
new file mode 100644
index 0000000..f745a90
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FateEquipmentPossibleAttributesServiceImpl.java
@@ -0,0 +1,94 @@
+package com.ruoyi.system.service.impl;
+
+import java.util.List;
+
+import com.ruoyi.system.domain.FateEquipmentPossibleAttributes;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.system.mapper.FateEquipmentPossibleAttributesMapper;
+import com.ruoyi.system.service.IFateEquipmentPossibleAttributesService;
+
+/**
+ * 装备可能拥有的属性Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+@Service
+public class FateEquipmentPossibleAttributesServiceImpl implements IFateEquipmentPossibleAttributesService
+{
+ @Autowired
+ private FateEquipmentPossibleAttributesMapper fateEquipmentPossibleAttributesMapper;
+
+ /**
+ * 查询装备可能拥有的属性
+ *
+ * @param id 装备可能拥有的属性主键
+ * @return 装备可能拥有的属性
+ */
+ @Override
+ public FateEquipmentPossibleAttributes selectFateEquipmentPossibleAttributesById(Long id)
+ {
+ return fateEquipmentPossibleAttributesMapper.selectFateEquipmentPossibleAttributesById(id);
+ }
+
+ /**
+ * 查询装备可能拥有的属性列表
+ *
+ * @param fateEquipmentPossibleAttributes 装备可能拥有的属性
+ * @return 装备可能拥有的属性
+ */
+ @Override
+ public List selectFateEquipmentPossibleAttributesList(FateEquipmentPossibleAttributes fateEquipmentPossibleAttributes)
+ {
+ return fateEquipmentPossibleAttributesMapper.selectFateEquipmentPossibleAttributesList(fateEquipmentPossibleAttributes);
+ }
+
+ /**
+ * 新增装备可能拥有的属性
+ *
+ * @param fateEquipmentPossibleAttributes 装备可能拥有的属性
+ * @return 结果
+ */
+ @Override
+ public int insertFateEquipmentPossibleAttributes(FateEquipmentPossibleAttributes fateEquipmentPossibleAttributes)
+ {
+ return fateEquipmentPossibleAttributesMapper.insertFateEquipmentPossibleAttributes(fateEquipmentPossibleAttributes);
+ }
+
+ /**
+ * 修改装备可能拥有的属性
+ *
+ * @param fateEquipmentPossibleAttributes 装备可能拥有的属性
+ * @return 结果
+ */
+ @Override
+ public int updateFateEquipmentPossibleAttributes(FateEquipmentPossibleAttributes fateEquipmentPossibleAttributes)
+ {
+ return fateEquipmentPossibleAttributesMapper.updateFateEquipmentPossibleAttributes(fateEquipmentPossibleAttributes);
+ }
+
+ /**
+ * 批量删除装备可能拥有的属性
+ *
+ * @param ids 需要删除的装备可能拥有的属性主键
+ * @return 结果
+ */
+ @Override
+ public int deleteFateEquipmentPossibleAttributesByIds(Long[] ids)
+ {
+ return fateEquipmentPossibleAttributesMapper.deleteFateEquipmentPossibleAttributesByIds(ids);
+ }
+
+ /**
+ * 删除装备可能拥有的属性信息
+ *
+ * @param id 装备可能拥有的属性主键
+ * @return 结果
+ */
+ @Override
+ public int deleteFateEquipmentPossibleAttributesById(Long id)
+ {
+ return fateEquipmentPossibleAttributesMapper.deleteFateEquipmentPossibleAttributesById(id);
+ }
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FateEquipmentQualitiesServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FateEquipmentQualitiesServiceImpl.java
new file mode 100644
index 0000000..32b0ed0
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FateEquipmentQualitiesServiceImpl.java
@@ -0,0 +1,93 @@
+package com.ruoyi.system.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.system.mapper.FateEquipmentQualitiesMapper;
+import com.ruoyi.system.domain.FateEquipmentQualities;
+import com.ruoyi.system.service.IFateEquipmentQualitiesService;
+
+/**
+ * 装备品质Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+@Service
+public class FateEquipmentQualitiesServiceImpl implements IFateEquipmentQualitiesService
+{
+ @Autowired
+ private FateEquipmentQualitiesMapper fateEquipmentQualitiesMapper;
+
+ /**
+ * 查询装备品质
+ *
+ * @param qualityId 装备品质主键
+ * @return 装备品质
+ */
+ @Override
+ public FateEquipmentQualities selectFateEquipmentQualitiesByQualityId(Long qualityId)
+ {
+ return fateEquipmentQualitiesMapper.selectFateEquipmentQualitiesByQualityId(qualityId);
+ }
+
+ /**
+ * 查询装备品质列表
+ *
+ * @param fateEquipmentQualities 装备品质
+ * @return 装备品质
+ */
+ @Override
+ public List selectFateEquipmentQualitiesList(FateEquipmentQualities fateEquipmentQualities)
+ {
+ return fateEquipmentQualitiesMapper.selectFateEquipmentQualitiesList(fateEquipmentQualities);
+ }
+
+ /**
+ * 新增装备品质
+ *
+ * @param fateEquipmentQualities 装备品质
+ * @return 结果
+ */
+ @Override
+ public int insertFateEquipmentQualities(FateEquipmentQualities fateEquipmentQualities)
+ {
+ return fateEquipmentQualitiesMapper.insertFateEquipmentQualities(fateEquipmentQualities);
+ }
+
+ /**
+ * 修改装备品质
+ *
+ * @param fateEquipmentQualities 装备品质
+ * @return 结果
+ */
+ @Override
+ public int updateFateEquipmentQualities(FateEquipmentQualities fateEquipmentQualities)
+ {
+ return fateEquipmentQualitiesMapper.updateFateEquipmentQualities(fateEquipmentQualities);
+ }
+
+ /**
+ * 批量删除装备品质
+ *
+ * @param qualityIds 需要删除的装备品质主键
+ * @return 结果
+ */
+ @Override
+ public int deleteFateEquipmentQualitiesByQualityIds(Long[] qualityIds)
+ {
+ return fateEquipmentQualitiesMapper.deleteFateEquipmentQualitiesByQualityIds(qualityIds);
+ }
+
+ /**
+ * 删除装备品质信息
+ *
+ * @param qualityId 装备品质主键
+ * @return 结果
+ */
+ @Override
+ public int deleteFateEquipmentQualitiesByQualityId(Long qualityId)
+ {
+ return fateEquipmentQualitiesMapper.deleteFateEquipmentQualitiesByQualityId(qualityId);
+ }
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FateEquipmentSetItemsServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FateEquipmentSetItemsServiceImpl.java
new file mode 100644
index 0000000..d720609
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FateEquipmentSetItemsServiceImpl.java
@@ -0,0 +1,93 @@
+package com.ruoyi.system.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.system.mapper.FateEquipmentSetItemsMapper;
+import com.ruoyi.system.domain.FateEquipmentSetItems;
+import com.ruoyi.system.service.IFateEquipmentSetItemsService;
+
+/**
+ * 装备套装包含Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+@Service
+public class FateEquipmentSetItemsServiceImpl implements IFateEquipmentSetItemsService
+{
+ @Autowired
+ private FateEquipmentSetItemsMapper fateEquipmentSetItemsMapper;
+
+ /**
+ * 查询装备套装包含
+ *
+ * @param id 装备套装包含主键
+ * @return 装备套装包含
+ */
+ @Override
+ public FateEquipmentSetItems selectFateEquipmentSetItemsById(Long id)
+ {
+ return fateEquipmentSetItemsMapper.selectFateEquipmentSetItemsById(id);
+ }
+
+ /**
+ * 查询装备套装包含列表
+ *
+ * @param fateEquipmentSetItems 装备套装包含
+ * @return 装备套装包含
+ */
+ @Override
+ public List selectFateEquipmentSetItemsList(FateEquipmentSetItems fateEquipmentSetItems)
+ {
+ return fateEquipmentSetItemsMapper.selectFateEquipmentSetItemsList(fateEquipmentSetItems);
+ }
+
+ /**
+ * 新增装备套装包含
+ *
+ * @param fateEquipmentSetItems 装备套装包含
+ * @return 结果
+ */
+ @Override
+ public int insertFateEquipmentSetItems(FateEquipmentSetItems fateEquipmentSetItems)
+ {
+ return fateEquipmentSetItemsMapper.insertFateEquipmentSetItems(fateEquipmentSetItems);
+ }
+
+ /**
+ * 修改装备套装包含
+ *
+ * @param fateEquipmentSetItems 装备套装包含
+ * @return 结果
+ */
+ @Override
+ public int updateFateEquipmentSetItems(FateEquipmentSetItems fateEquipmentSetItems)
+ {
+ return fateEquipmentSetItemsMapper.updateFateEquipmentSetItems(fateEquipmentSetItems);
+ }
+
+ /**
+ * 批量删除装备套装包含
+ *
+ * @param ids 需要删除的装备套装包含主键
+ * @return 结果
+ */
+ @Override
+ public int deleteFateEquipmentSetItemsByIds(Long[] ids)
+ {
+ return fateEquipmentSetItemsMapper.deleteFateEquipmentSetItemsByIds(ids);
+ }
+
+ /**
+ * 删除装备套装包含信息
+ *
+ * @param id 装备套装包含主键
+ * @return 结果
+ */
+ @Override
+ public int deleteFateEquipmentSetItemsById(Long id)
+ {
+ return fateEquipmentSetItemsMapper.deleteFateEquipmentSetItemsById(id);
+ }
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FateEquipmentSetsServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FateEquipmentSetsServiceImpl.java
new file mode 100644
index 0000000..72553d7
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FateEquipmentSetsServiceImpl.java
@@ -0,0 +1,93 @@
+package com.ruoyi.system.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.system.mapper.FateEquipmentSetsMapper;
+import com.ruoyi.system.domain.FateEquipmentSets;
+import com.ruoyi.system.service.IFateEquipmentSetsService;
+
+/**
+ * 装备套装Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+@Service
+public class FateEquipmentSetsServiceImpl implements IFateEquipmentSetsService
+{
+ @Autowired
+ private FateEquipmentSetsMapper fateEquipmentSetsMapper;
+
+ /**
+ * 查询装备套装
+ *
+ * @param setId 装备套装主键
+ * @return 装备套装
+ */
+ @Override
+ public FateEquipmentSets selectFateEquipmentSetsBySetId(Long setId)
+ {
+ return fateEquipmentSetsMapper.selectFateEquipmentSetsBySetId(setId);
+ }
+
+ /**
+ * 查询装备套装列表
+ *
+ * @param fateEquipmentSets 装备套装
+ * @return 装备套装
+ */
+ @Override
+ public List selectFateEquipmentSetsList(FateEquipmentSets fateEquipmentSets)
+ {
+ return fateEquipmentSetsMapper.selectFateEquipmentSetsList(fateEquipmentSets);
+ }
+
+ /**
+ * 新增装备套装
+ *
+ * @param fateEquipmentSets 装备套装
+ * @return 结果
+ */
+ @Override
+ public int insertFateEquipmentSets(FateEquipmentSets fateEquipmentSets)
+ {
+ return fateEquipmentSetsMapper.insertFateEquipmentSets(fateEquipmentSets);
+ }
+
+ /**
+ * 修改装备套装
+ *
+ * @param fateEquipmentSets 装备套装
+ * @return 结果
+ */
+ @Override
+ public int updateFateEquipmentSets(FateEquipmentSets fateEquipmentSets)
+ {
+ return fateEquipmentSetsMapper.updateFateEquipmentSets(fateEquipmentSets);
+ }
+
+ /**
+ * 批量删除装备套装
+ *
+ * @param setIds 需要删除的装备套装主键
+ * @return 结果
+ */
+ @Override
+ public int deleteFateEquipmentSetsBySetIds(Long[] setIds)
+ {
+ return fateEquipmentSetsMapper.deleteFateEquipmentSetsBySetIds(setIds);
+ }
+
+ /**
+ * 删除装备套装信息
+ *
+ * @param setId 装备套装主键
+ * @return 结果
+ */
+ @Override
+ public int deleteFateEquipmentSetsBySetId(Long setId)
+ {
+ return fateEquipmentSetsMapper.deleteFateEquipmentSetsBySetId(setId);
+ }
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FateEquipmentTypesServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FateEquipmentTypesServiceImpl.java
new file mode 100644
index 0000000..edbca34
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FateEquipmentTypesServiceImpl.java
@@ -0,0 +1,93 @@
+package com.ruoyi.system.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.system.mapper.FateEquipmentTypesMapper;
+import com.ruoyi.system.domain.FateEquipmentTypes;
+import com.ruoyi.system.service.IFateEquipmentTypesService;
+
+/**
+ * 装备类型Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+@Service
+public class FateEquipmentTypesServiceImpl implements IFateEquipmentTypesService
+{
+ @Autowired
+ private FateEquipmentTypesMapper fateEquipmentTypesMapper;
+
+ /**
+ * 查询装备类型
+ *
+ * @param typeId 装备类型主键
+ * @return 装备类型
+ */
+ @Override
+ public FateEquipmentTypes selectFateEquipmentTypesByTypeId(Long typeId)
+ {
+ return fateEquipmentTypesMapper.selectFateEquipmentTypesByTypeId(typeId);
+ }
+
+ /**
+ * 查询装备类型列表
+ *
+ * @param fateEquipmentTypes 装备类型
+ * @return 装备类型
+ */
+ @Override
+ public List selectFateEquipmentTypesList(FateEquipmentTypes fateEquipmentTypes)
+ {
+ return fateEquipmentTypesMapper.selectFateEquipmentTypesList(fateEquipmentTypes);
+ }
+
+ /**
+ * 新增装备类型
+ *
+ * @param fateEquipmentTypes 装备类型
+ * @return 结果
+ */
+ @Override
+ public int insertFateEquipmentTypes(FateEquipmentTypes fateEquipmentTypes)
+ {
+ return fateEquipmentTypesMapper.insertFateEquipmentTypes(fateEquipmentTypes);
+ }
+
+ /**
+ * 修改装备类型
+ *
+ * @param fateEquipmentTypes 装备类型
+ * @return 结果
+ */
+ @Override
+ public int updateFateEquipmentTypes(FateEquipmentTypes fateEquipmentTypes)
+ {
+ return fateEquipmentTypesMapper.updateFateEquipmentTypes(fateEquipmentTypes);
+ }
+
+ /**
+ * 批量删除装备类型
+ *
+ * @param typeIds 需要删除的装备类型主键
+ * @return 结果
+ */
+ @Override
+ public int deleteFateEquipmentTypesByTypeIds(Long[] typeIds)
+ {
+ return fateEquipmentTypesMapper.deleteFateEquipmentTypesByTypeIds(typeIds);
+ }
+
+ /**
+ * 删除装备类型信息
+ *
+ * @param typeId 装备类型主键
+ * @return 结果
+ */
+ @Override
+ public int deleteFateEquipmentTypesByTypeId(Long typeId)
+ {
+ return fateEquipmentTypesMapper.deleteFateEquipmentTypesByTypeId(typeId);
+ }
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FateEquipmentsServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FateEquipmentsServiceImpl.java
new file mode 100644
index 0000000..3d9befc
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FateEquipmentsServiceImpl.java
@@ -0,0 +1,93 @@
+package com.ruoyi.system.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.system.mapper.FateEquipmentsMapper;
+import com.ruoyi.system.domain.FateEquipments;
+import com.ruoyi.system.service.IFateEquipmentsService;
+
+/**
+ * 装备基础Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+@Service
+public class FateEquipmentsServiceImpl implements IFateEquipmentsService
+{
+ @Autowired
+ private FateEquipmentsMapper fateEquipmentsMapper;
+
+ /**
+ * 查询装备基础
+ *
+ * @param equipmentId 装备基础主键
+ * @return 装备基础
+ */
+ @Override
+ public FateEquipments selectFateEquipmentsByEquipmentId(Long equipmentId)
+ {
+ return fateEquipmentsMapper.selectFateEquipmentsByEquipmentId(equipmentId);
+ }
+
+ /**
+ * 查询装备基础列表
+ *
+ * @param fateEquipments 装备基础
+ * @return 装备基础
+ */
+ @Override
+ public List selectFateEquipmentsList(FateEquipments fateEquipments)
+ {
+ return fateEquipmentsMapper.selectFateEquipmentsList(fateEquipments);
+ }
+
+ /**
+ * 新增装备基础
+ *
+ * @param fateEquipments 装备基础
+ * @return 结果
+ */
+ @Override
+ public int insertFateEquipments(FateEquipments fateEquipments)
+ {
+ return fateEquipmentsMapper.insertFateEquipments(fateEquipments);
+ }
+
+ /**
+ * 修改装备基础
+ *
+ * @param fateEquipments 装备基础
+ * @return 结果
+ */
+ @Override
+ public int updateFateEquipments(FateEquipments fateEquipments)
+ {
+ return fateEquipmentsMapper.updateFateEquipments(fateEquipments);
+ }
+
+ /**
+ * 批量删除装备基础
+ *
+ * @param equipmentIds 需要删除的装备基础主键
+ * @return 结果
+ */
+ @Override
+ public int deleteFateEquipmentsByEquipmentIds(Long[] equipmentIds)
+ {
+ return fateEquipmentsMapper.deleteFateEquipmentsByEquipmentIds(equipmentIds);
+ }
+
+ /**
+ * 删除装备基础信息
+ *
+ * @param equipmentId 装备基础主键
+ * @return 结果
+ */
+ @Override
+ public int deleteFateEquipmentsByEquipmentId(Long equipmentId)
+ {
+ return fateEquipmentsMapper.deleteFateEquipmentsByEquipmentId(equipmentId);
+ }
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FateJobLevelBonusServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FateJobLevelBonusServiceImpl.java
new file mode 100644
index 0000000..13ab269
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FateJobLevelBonusServiceImpl.java
@@ -0,0 +1,93 @@
+package com.ruoyi.system.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.system.mapper.FateJobLevelBonusMapper;
+import com.ruoyi.system.domain.FateJobLevelBonus;
+import com.ruoyi.system.service.IFateJobLevelBonusService;
+
+/**
+ * 职业等级加成Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+@Service
+public class FateJobLevelBonusServiceImpl implements IFateJobLevelBonusService
+{
+ @Autowired
+ private FateJobLevelBonusMapper fateJobLevelBonusMapper;
+
+ /**
+ * 查询职业等级加成
+ *
+ * @param bonusId 职业等级加成主键
+ * @return 职业等级加成
+ */
+ @Override
+ public FateJobLevelBonus selectFateJobLevelBonusByBonusId(Long bonusId)
+ {
+ return fateJobLevelBonusMapper.selectFateJobLevelBonusByBonusId(bonusId);
+ }
+
+ /**
+ * 查询职业等级加成列表
+ *
+ * @param fateJobLevelBonus 职业等级加成
+ * @return 职业等级加成
+ */
+ @Override
+ public List selectFateJobLevelBonusList(FateJobLevelBonus fateJobLevelBonus)
+ {
+ return fateJobLevelBonusMapper.selectFateJobLevelBonusList(fateJobLevelBonus);
+ }
+
+ /**
+ * 新增职业等级加成
+ *
+ * @param fateJobLevelBonus 职业等级加成
+ * @return 结果
+ */
+ @Override
+ public int insertFateJobLevelBonus(FateJobLevelBonus fateJobLevelBonus)
+ {
+ return fateJobLevelBonusMapper.insertFateJobLevelBonus(fateJobLevelBonus);
+ }
+
+ /**
+ * 修改职业等级加成
+ *
+ * @param fateJobLevelBonus 职业等级加成
+ * @return 结果
+ */
+ @Override
+ public int updateFateJobLevelBonus(FateJobLevelBonus fateJobLevelBonus)
+ {
+ return fateJobLevelBonusMapper.updateFateJobLevelBonus(fateJobLevelBonus);
+ }
+
+ /**
+ * 批量删除职业等级加成
+ *
+ * @param bonusIds 需要删除的职业等级加成主键
+ * @return 结果
+ */
+ @Override
+ public int deleteFateJobLevelBonusByBonusIds(Long[] bonusIds)
+ {
+ return fateJobLevelBonusMapper.deleteFateJobLevelBonusByBonusIds(bonusIds);
+ }
+
+ /**
+ * 删除职业等级加成信息
+ *
+ * @param bonusId 职业等级加成主键
+ * @return 结果
+ */
+ @Override
+ public int deleteFateJobLevelBonusByBonusId(Long bonusId)
+ {
+ return fateJobLevelBonusMapper.deleteFateJobLevelBonusByBonusId(bonusId);
+ }
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FateJobPromotionsServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FateJobPromotionsServiceImpl.java
new file mode 100644
index 0000000..72b54c3
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FateJobPromotionsServiceImpl.java
@@ -0,0 +1,93 @@
+package com.ruoyi.system.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.system.mapper.FateJobPromotionsMapper;
+import com.ruoyi.system.domain.FateJobPromotions;
+import com.ruoyi.system.service.IFateJobPromotionsService;
+
+/**
+ * 职业进阶关系Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+@Service
+public class FateJobPromotionsServiceImpl implements IFateJobPromotionsService
+{
+ @Autowired
+ private FateJobPromotionsMapper fateJobPromotionsMapper;
+
+ /**
+ * 查询职业进阶关系
+ *
+ * @param promotionId 职业进阶关系主键
+ * @return 职业进阶关系
+ */
+ @Override
+ public FateJobPromotions selectFateJobPromotionsByPromotionId(Long promotionId)
+ {
+ return fateJobPromotionsMapper.selectFateJobPromotionsByPromotionId(promotionId);
+ }
+
+ /**
+ * 查询职业进阶关系列表
+ *
+ * @param fateJobPromotions 职业进阶关系
+ * @return 职业进阶关系
+ */
+ @Override
+ public List selectFateJobPromotionsList(FateJobPromotions fateJobPromotions)
+ {
+ return fateJobPromotionsMapper.selectFateJobPromotionsList(fateJobPromotions);
+ }
+
+ /**
+ * 新增职业进阶关系
+ *
+ * @param fateJobPromotions 职业进阶关系
+ * @return 结果
+ */
+ @Override
+ public int insertFateJobPromotions(FateJobPromotions fateJobPromotions)
+ {
+ return fateJobPromotionsMapper.insertFateJobPromotions(fateJobPromotions);
+ }
+
+ /**
+ * 修改职业进阶关系
+ *
+ * @param fateJobPromotions 职业进阶关系
+ * @return 结果
+ */
+ @Override
+ public int updateFateJobPromotions(FateJobPromotions fateJobPromotions)
+ {
+ return fateJobPromotionsMapper.updateFateJobPromotions(fateJobPromotions);
+ }
+
+ /**
+ * 批量删除职业进阶关系
+ *
+ * @param promotionIds 需要删除的职业进阶关系主键
+ * @return 结果
+ */
+ @Override
+ public int deleteFateJobPromotionsByPromotionIds(Long[] promotionIds)
+ {
+ return fateJobPromotionsMapper.deleteFateJobPromotionsByPromotionIds(promotionIds);
+ }
+
+ /**
+ * 删除职业进阶关系信息
+ *
+ * @param promotionId 职业进阶关系主键
+ * @return 结果
+ */
+ @Override
+ public int deleteFateJobPromotionsByPromotionId(Long promotionId)
+ {
+ return fateJobPromotionsMapper.deleteFateJobPromotionsByPromotionId(promotionId);
+ }
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FateJobSkillsServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FateJobSkillsServiceImpl.java
new file mode 100644
index 0000000..c5c636d
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FateJobSkillsServiceImpl.java
@@ -0,0 +1,94 @@
+package com.ruoyi.system.service.impl;
+
+import java.util.List;
+
+import com.ruoyi.system.domain.FateJobSkills;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.system.mapper.FateJobSkillsMapper;
+import com.ruoyi.system.service.IFateJobSkillsService;
+
+/**
+ * 职业可学技能Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+@Service
+public class FateJobSkillsServiceImpl implements IFateJobSkillsService
+{
+ @Autowired
+ private FateJobSkillsMapper fateJobSkillsMapper;
+
+ /**
+ * 查询职业可学技能
+ *
+ * @param jobSkillId 职业可学技能主键
+ * @return 职业可学技能
+ */
+ @Override
+ public FateJobSkills selectFateJobSkillsByJobSkillId(Long jobSkillId)
+ {
+ return fateJobSkillsMapper.selectFateJobSkillsByJobSkillId(jobSkillId);
+ }
+
+ /**
+ * 查询职业可学技能列表
+ *
+ * @param fateJobSkills 职业可学技能
+ * @return 职业可学技能
+ */
+ @Override
+ public List selectFateJobSkillsList(FateJobSkills fateJobSkills)
+ {
+ return fateJobSkillsMapper.selectFateJobSkillsList(fateJobSkills);
+ }
+
+ /**
+ * 新增职业可学技能
+ *
+ * @param fateJobSkills 职业可学技能
+ * @return 结果
+ */
+ @Override
+ public int insertFateJobSkills(FateJobSkills fateJobSkills)
+ {
+ return fateJobSkillsMapper.insertFateJobSkills(fateJobSkills);
+ }
+
+ /**
+ * 修改职业可学技能
+ *
+ * @param fateJobSkills 职业可学技能
+ * @return 结果
+ */
+ @Override
+ public int updateFateJobSkills(FateJobSkills fateJobSkills)
+ {
+ return fateJobSkillsMapper.updateFateJobSkills(fateJobSkills);
+ }
+
+ /**
+ * 批量删除职业可学技能
+ *
+ * @param jobSkillIds 需要删除的职业可学技能主键
+ * @return 结果
+ */
+ @Override
+ public int deleteFateJobSkillsByJobSkillIds(Long[] jobSkillIds)
+ {
+ return fateJobSkillsMapper.deleteFateJobSkillsByJobSkillIds(jobSkillIds);
+ }
+
+ /**
+ * 删除职业可学技能信息
+ *
+ * @param jobSkillId 职业可学技能主键
+ * @return 结果
+ */
+ @Override
+ public int deleteFateJobSkillsByJobSkillId(Long jobSkillId)
+ {
+ return fateJobSkillsMapper.deleteFateJobSkillsByJobSkillId(jobSkillId);
+ }
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FateJobsServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FateJobsServiceImpl.java
new file mode 100644
index 0000000..014937e
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FateJobsServiceImpl.java
@@ -0,0 +1,99 @@
+package com.ruoyi.system.service.impl;
+
+import java.util.List;
+
+import com.ruoyi.system.domain.FateJobs;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.system.mapper.FateJobsMapper;
+import com.ruoyi.system.service.IFateJobsService;
+
+/**
+ * 职业基础Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+@Service
+public class FateJobsServiceImpl implements IFateJobsService
+{
+ @Autowired
+ private FateJobsMapper fateJobsMapper;
+
+ /**
+ * 查询职业基础
+ *
+ * @param jobId 职业基础主键
+ * @return 职业基础
+ */
+ @Override
+ public FateJobs selectFateJobsByJobId(Long jobId)
+ {
+ return fateJobsMapper.selectFateJobsByJobId(jobId);
+ }
+
+ /**
+ * 查询职业基础列表
+ *
+ * @param fateJobs 职业基础
+ * @return 职业基础
+ */
+ @Override
+ public List selectFateJobsList(FateJobs fateJobs)
+ {
+ List list = fateJobsMapper.selectFateJobsList(fateJobs);
+ for (FateJobs job : list) {
+ job.setJobTierDesc(job.getJobTierDesc());
+ job.setMoveTypeDesc(job.getMoveTypeDesc());
+ }
+ return list;
+ }
+
+ /**
+ * 新增职业基础
+ *
+ * @param fateJobs 职业基础
+ * @return 结果
+ */
+ @Override
+ public int insertFateJobs(FateJobs fateJobs)
+ {
+ return fateJobsMapper.insertFateJobs(fateJobs);
+ }
+
+ /**
+ * 修改职业基础
+ *
+ * @param fateJobs 职业基础
+ * @return 结果
+ */
+ @Override
+ public int updateFateJobs(FateJobs fateJobs)
+ {
+ return fateJobsMapper.updateFateJobs(fateJobs);
+ }
+
+ /**
+ * 批量删除职业基础
+ *
+ * @param jobIds 需要删除的职业基础主键
+ * @return 结果
+ */
+ @Override
+ public int deleteFateJobsByJobIds(Long[] jobIds)
+ {
+ return fateJobsMapper.deleteFateJobsByJobIds(jobIds);
+ }
+
+ /**
+ * 删除职业基础信息
+ *
+ * @param jobId 职业基础主键
+ * @return 结果
+ */
+ @Override
+ public int deleteFateJobsByJobId(Long jobId)
+ {
+ return fateJobsMapper.deleteFateJobsByJobId(jobId);
+ }
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FateUserCharacterServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FateUserCharacterServiceImpl.java
new file mode 100644
index 0000000..9cc390b
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FateUserCharacterServiceImpl.java
@@ -0,0 +1,93 @@
+package com.ruoyi.system.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.system.mapper.FateUserCharacterMapper;
+import com.ruoyi.system.domain.FateUserCharacter;
+import com.ruoyi.system.service.IFateUserCharacterService;
+
+/**
+ * 用户角色Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+@Service
+public class FateUserCharacterServiceImpl implements IFateUserCharacterService
+{
+ @Autowired
+ private FateUserCharacterMapper fateUserCharacterMapper;
+
+ /**
+ * 查询用户角色
+ *
+ * @param userCharacterId 用户角色主键
+ * @return 用户角色
+ */
+ @Override
+ public FateUserCharacter selectFateUserCharacterByUserCharacterId(Long userCharacterId)
+ {
+ return fateUserCharacterMapper.selectFateUserCharacterByUserCharacterId(userCharacterId);
+ }
+
+ /**
+ * 查询用户角色列表
+ *
+ * @param fateUserCharacter 用户角色
+ * @return 用户角色
+ */
+ @Override
+ public List selectFateUserCharacterList(FateUserCharacter fateUserCharacter)
+ {
+ return fateUserCharacterMapper.selectFateUserCharacterList(fateUserCharacter);
+ }
+
+ /**
+ * 新增用户角色
+ *
+ * @param fateUserCharacter 用户角色
+ * @return 结果
+ */
+ @Override
+ public int insertFateUserCharacter(FateUserCharacter fateUserCharacter)
+ {
+ return fateUserCharacterMapper.insertFateUserCharacter(fateUserCharacter);
+ }
+
+ /**
+ * 修改用户角色
+ *
+ * @param fateUserCharacter 用户角色
+ * @return 结果
+ */
+ @Override
+ public int updateFateUserCharacter(FateUserCharacter fateUserCharacter)
+ {
+ return fateUserCharacterMapper.updateFateUserCharacter(fateUserCharacter);
+ }
+
+ /**
+ * 批量删除用户角色
+ *
+ * @param userCharacterIds 需要删除的用户角色主键
+ * @return 结果
+ */
+ @Override
+ public int deleteFateUserCharacterByUserCharacterIds(Long[] userCharacterIds)
+ {
+ return fateUserCharacterMapper.deleteFateUserCharacterByUserCharacterIds(userCharacterIds);
+ }
+
+ /**
+ * 删除用户角色信息
+ *
+ * @param userCharacterId 用户角色主键
+ * @return 结果
+ */
+ @Override
+ public int deleteFateUserCharacterByUserCharacterId(Long userCharacterId)
+ {
+ return fateUserCharacterMapper.deleteFateUserCharacterByUserCharacterId(userCharacterId);
+ }
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FateUserEquipmentsServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FateUserEquipmentsServiceImpl.java
new file mode 100644
index 0000000..259cd19
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/FateUserEquipmentsServiceImpl.java
@@ -0,0 +1,93 @@
+package com.ruoyi.system.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.system.mapper.FateUserEquipmentsMapper;
+import com.ruoyi.system.domain.FateUserEquipments;
+import com.ruoyi.system.service.IFateUserEquipmentsService;
+
+/**
+ * 用户装备Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2025-09-16
+ */
+@Service
+public class FateUserEquipmentsServiceImpl implements IFateUserEquipmentsService
+{
+ @Autowired
+ private FateUserEquipmentsMapper fateUserEquipmentsMapper;
+
+ /**
+ * 查询用户装备
+ *
+ * @param userEquipmentId 用户装备主键
+ * @return 用户装备
+ */
+ @Override
+ public FateUserEquipments selectFateUserEquipmentsByUserEquipmentId(Long userEquipmentId)
+ {
+ return fateUserEquipmentsMapper.selectFateUserEquipmentsByUserEquipmentId(userEquipmentId);
+ }
+
+ /**
+ * 查询用户装备列表
+ *
+ * @param fateUserEquipments 用户装备
+ * @return 用户装备
+ */
+ @Override
+ public List selectFateUserEquipmentsList(FateUserEquipments fateUserEquipments)
+ {
+ return fateUserEquipmentsMapper.selectFateUserEquipmentsList(fateUserEquipments);
+ }
+
+ /**
+ * 新增用户装备
+ *
+ * @param fateUserEquipments 用户装备
+ * @return 结果
+ */
+ @Override
+ public int insertFateUserEquipments(FateUserEquipments fateUserEquipments)
+ {
+ return fateUserEquipmentsMapper.insertFateUserEquipments(fateUserEquipments);
+ }
+
+ /**
+ * 修改用户装备
+ *
+ * @param fateUserEquipments 用户装备
+ * @return 结果
+ */
+ @Override
+ public int updateFateUserEquipments(FateUserEquipments fateUserEquipments)
+ {
+ return fateUserEquipmentsMapper.updateFateUserEquipments(fateUserEquipments);
+ }
+
+ /**
+ * 批量删除用户装备
+ *
+ * @param userEquipmentIds 需要删除的用户装备主键
+ * @return 结果
+ */
+ @Override
+ public int deleteFateUserEquipmentsByUserEquipmentIds(Long[] userEquipmentIds)
+ {
+ return fateUserEquipmentsMapper.deleteFateUserEquipmentsByUserEquipmentIds(userEquipmentIds);
+ }
+
+ /**
+ * 删除用户装备信息
+ *
+ * @param userEquipmentId 用户装备主键
+ * @return 结果
+ */
+ @Override
+ public int deleteFateUserEquipmentsByUserEquipmentId(Long userEquipmentId)
+ {
+ return fateUserEquipmentsMapper.deleteFateUserEquipmentsByUserEquipmentId(userEquipmentId);
+ }
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
index b11c281..3f5d066 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
@@ -475,7 +475,7 @@ public class SysMenuServiceImpl implements ISysMenuService
{
SysMenu t = (SysMenu) iterator.next();
// 一、根据传入的某个父节点ID,遍历该父节点的所有子节点
- if (t.getParentId() == parentId)
+ if (t.getParentId() != null && t.getParentId() == parentId)
{
recursionFn(list, t);
returnList.add(t);
@@ -514,7 +514,7 @@ public class SysMenuServiceImpl implements ISysMenuService
while (it.hasNext())
{
SysMenu n = (SysMenu) it.next();
- if (n.getParentId().longValue() == t.getMenuId().longValue())
+ if (n.getParentId() != null && n.getParentId().longValue() == t.getMenuId().longValue())
{
tlist.add(n);
}
diff --git a/ruoyi-system/src/main/resources/mapper/system/FateCharacterGrowthLogsMapper.xml b/ruoyi-system/src/main/resources/mapper/system/FateCharacterGrowthLogsMapper.xml
new file mode 100644
index 0000000..91b3ac2
--- /dev/null
+++ b/ruoyi-system/src/main/resources/mapper/system/FateCharacterGrowthLogsMapper.xml
@@ -0,0 +1,96 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select log_id, user_character_id, level_up_from, level_up_to, hp_increase, atk_increase, def_increase, res_increase, spd_increase, growth_date from fate_character_growth_logs
+
+
+
+
+
+
+
+ insert into fate_character_growth_logs
+
+ user_character_id,
+ level_up_from,
+ level_up_to,
+ hp_increase,
+ atk_increase,
+ def_increase,
+ res_increase,
+ spd_increase,
+ growth_date,
+
+
+ #{userCharacterId},
+ #{levelUpFrom},
+ #{levelUpTo},
+ #{hpIncrease},
+ #{atkIncrease},
+ #{defIncrease},
+ #{resIncrease},
+ #{spdIncrease},
+ #{growthDate},
+
+
+
+
+ update fate_character_growth_logs
+
+ user_character_id = #{userCharacterId},
+ level_up_from = #{levelUpFrom},
+ level_up_to = #{levelUpTo},
+ hp_increase = #{hpIncrease},
+ atk_increase = #{atkIncrease},
+ def_increase = #{defIncrease},
+ res_increase = #{resIncrease},
+ spd_increase = #{spdIncrease},
+ growth_date = #{growthDate},
+
+ where log_id = #{logId}
+
+
+
+ delete from fate_character_growth_logs where log_id = #{logId}
+
+
+
+ delete from fate_character_growth_logs where log_id in
+
+ #{logId}
+
+
+
\ No newline at end of file
diff --git a/ruoyi-system/src/main/resources/mapper/system/FateCharacterJobsMapper.xml b/ruoyi-system/src/main/resources/mapper/system/FateCharacterJobsMapper.xml
new file mode 100644
index 0000000..c0ad794
--- /dev/null
+++ b/ruoyi-system/src/main/resources/mapper/system/FateCharacterJobsMapper.xml
@@ -0,0 +1,91 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select character_job_id, user_character_id, job_id, job_level, job_experience, is_current, learned_skills, created_at, updated_at from fate_character_jobs
+
+
+
+
+
+
+
+ insert into fate_character_jobs
+
+ user_character_id,
+ job_id,
+ job_level,
+ job_experience,
+ is_current,
+ learned_skills,
+ created_at,
+ updated_at,
+
+
+ #{userCharacterId},
+ #{jobId},
+ #{jobLevel},
+ #{jobExperience},
+ #{isCurrent},
+ #{learnedSkills},
+ #{createdAt},
+ #{updatedAt},
+
+
+
+
+ update fate_character_jobs
+
+ user_character_id = #{userCharacterId},
+ job_id = #{jobId},
+ job_level = #{jobLevel},
+ job_experience = #{jobExperience},
+ is_current = #{isCurrent},
+ learned_skills = #{learnedSkills},
+ created_at = #{createdAt},
+ updated_at = #{updatedAt},
+
+ where character_job_id = #{characterJobId}
+
+
+
+ delete from fate_character_jobs where character_job_id = #{characterJobId}
+
+
+
+ delete from fate_character_jobs where character_job_id in
+
+ #{characterJobId}
+
+
+
\ No newline at end of file
diff --git a/ruoyi-system/src/main/resources/mapper/system/FateCharacterMapper.xml b/ruoyi-system/src/main/resources/mapper/system/FateCharacterMapper.xml
new file mode 100644
index 0000000..713da55
--- /dev/null
+++ b/ruoyi-system/src/main/resources/mapper/system/FateCharacterMapper.xml
@@ -0,0 +1,161 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select character_id, name, rarity, base_hp_min, base_hp_max, base_atk_min, base_atk_max, base_def_min, base_def_max, base_res_min, base_res_max, base_spd_min, base_spd_max, growth_hp, growth_atk, growth_def, growth_res, growth_spd, move_type, weapon_type, description, avatar_url, created_at from fate_character
+
+
+
+
+
+
+
+ insert into fate_character
+
+ name,
+ rarity,
+ base_hp_min,
+ base_hp_max,
+ base_atk_min,
+ base_atk_max,
+ base_def_min,
+ base_def_max,
+ base_res_min,
+ base_res_max,
+ base_spd_min,
+ base_spd_max,
+ growth_hp,
+ growth_atk,
+ growth_def,
+ growth_res,
+ growth_spd,
+ move_type,
+ weapon_type,
+ description,
+ avatar_url,
+ created_at,
+
+
+ #{name},
+ #{rarity},
+ #{baseHpMin},
+ #{baseHpMax},
+ #{baseAtkMin},
+ #{baseAtkMax},
+ #{baseDefMin},
+ #{baseDefMax},
+ #{baseResMin},
+ #{baseResMax},
+ #{baseSpdMin},
+ #{baseSpdMax},
+ #{growthHp},
+ #{growthAtk},
+ #{growthDef},
+ #{growthRes},
+ #{growthSpd},
+ #{moveType},
+ #{weaponType},
+ #{description},
+ #{avatarUrl},
+ #{createdAt},
+
+
+
+
+ update fate_character
+
+ name = #{name},
+ rarity = #{rarity},
+ base_hp_min = #{baseHpMin},
+ base_hp_max = #{baseHpMax},
+ base_atk_min = #{baseAtkMin},
+ base_atk_max = #{baseAtkMax},
+ base_def_min = #{baseDefMin},
+ base_def_max = #{baseDefMax},
+ base_res_min = #{baseResMin},
+ base_res_max = #{baseResMax},
+ base_spd_min = #{baseSpdMin},
+ base_spd_max = #{baseSpdMax},
+ growth_hp = #{growthHp},
+ growth_atk = #{growthAtk},
+ growth_def = #{growthDef},
+ growth_res = #{growthRes},
+ growth_spd = #{growthSpd},
+ move_type = #{moveType},
+ weapon_type = #{weaponType},
+ description = #{description},
+ avatar_url = #{avatarUrl},
+ created_at = #{createdAt},
+
+ where character_id = #{characterId}
+
+
+
+ delete from fate_character where character_id = #{characterId}
+
+
+
+ delete from fate_character where character_id in
+
+ #{characterId}
+
+
+
\ No newline at end of file
diff --git a/ruoyi-system/src/main/resources/mapper/system/FateEquipmentAttributesMapper.xml b/ruoyi-system/src/main/resources/mapper/system/FateEquipmentAttributesMapper.xml
new file mode 100644
index 0000000..0a6cb43
--- /dev/null
+++ b/ruoyi-system/src/main/resources/mapper/system/FateEquipmentAttributesMapper.xml
@@ -0,0 +1,86 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select attribute_id, attribute_name, attribute_code, attribute_type, min_value, max_value, description, created_at from fate_equipment_attributes
+
+
+
+
+
+
+
+ insert into fate_equipment_attributes
+
+ attribute_name,
+ attribute_code,
+ attribute_type,
+ min_value,
+ max_value,
+ description,
+ created_at,
+
+
+ #{attributeName},
+ #{attributeCode},
+ #{attributeType},
+ #{minValue},
+ #{maxValue},
+ #{description},
+ #{createdAt},
+
+
+
+
+ update fate_equipment_attributes
+
+ attribute_name = #{attributeName},
+ attribute_code = #{attributeCode},
+ attribute_type = #{attributeType},
+ min_value = #{minValue},
+ max_value = #{maxValue},
+ description = #{description},
+ created_at = #{createdAt},
+
+ where attribute_id = #{attributeId}
+
+
+
+ delete from fate_equipment_attributes where attribute_id = #{attributeId}
+
+
+
+ delete from fate_equipment_attributes where attribute_id in
+
+ #{attributeId}
+
+
+
\ No newline at end of file
diff --git a/ruoyi-system/src/main/resources/mapper/system/FateEquipmentPossibleAttributesMapper.xml b/ruoyi-system/src/main/resources/mapper/system/FateEquipmentPossibleAttributesMapper.xml
new file mode 100644
index 0000000..daf45c6
--- /dev/null
+++ b/ruoyi-system/src/main/resources/mapper/system/FateEquipmentPossibleAttributesMapper.xml
@@ -0,0 +1,81 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select id, equipment_id, attribute_id, weight, min_rolls, max_rolls, created_at from fate_equipment_possible_attributes
+
+
+
+
+
+
+
+ insert into fate_equipment_possible_attributes
+
+ equipment_id,
+ attribute_id,
+ weight,
+ min_rolls,
+ max_rolls,
+ created_at,
+
+
+ #{equipmentId},
+ #{attributeId},
+ #{weight},
+ #{minRolls},
+ #{maxRolls},
+ #{createdAt},
+
+
+
+
+ update fate_equipment_possible_attributes
+
+ equipment_id = #{equipmentId},
+ attribute_id = #{attributeId},
+ weight = #{weight},
+ min_rolls = #{minRolls},
+ max_rolls = #{maxRolls},
+ created_at = #{createdAt},
+
+ where id = #{id}
+
+
+
+ delete from fate_equipment_possible_attributes where id = #{id}
+
+
+
+ delete from fate_equipment_possible_attributes where id in
+
+ #{id}
+
+
+
\ No newline at end of file
diff --git a/ruoyi-system/src/main/resources/mapper/system/FateEquipmentQualitiesMapper.xml b/ruoyi-system/src/main/resources/mapper/system/FateEquipmentQualitiesMapper.xml
new file mode 100644
index 0000000..f29d906
--- /dev/null
+++ b/ruoyi-system/src/main/resources/mapper/system/FateEquipmentQualitiesMapper.xml
@@ -0,0 +1,81 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select quality_id, quality_name, quality_code, color_code, min_level, max_level, created_at from fate_equipment_qualities
+
+
+
+
+
+
+
+ insert into fate_equipment_qualities
+
+ quality_name,
+ quality_code,
+ color_code,
+ min_level,
+ max_level,
+ created_at,
+
+
+ #{qualityName},
+ #{qualityCode},
+ #{colorCode},
+ #{minLevel},
+ #{maxLevel},
+ #{createdAt},
+
+
+
+
+ update fate_equipment_qualities
+
+ quality_name = #{qualityName},
+ quality_code = #{qualityCode},
+ color_code = #{colorCode},
+ min_level = #{minLevel},
+ max_level = #{maxLevel},
+ created_at = #{createdAt},
+
+ where quality_id = #{qualityId}
+
+
+
+ delete from fate_equipment_qualities where quality_id = #{qualityId}
+
+
+
+ delete from fate_equipment_qualities where quality_id in
+
+ #{qualityId}
+
+
+
\ No newline at end of file
diff --git a/ruoyi-system/src/main/resources/mapper/system/FateEquipmentSetItemsMapper.xml b/ruoyi-system/src/main/resources/mapper/system/FateEquipmentSetItemsMapper.xml
new file mode 100644
index 0000000..aa7f0f9
--- /dev/null
+++ b/ruoyi-system/src/main/resources/mapper/system/FateEquipmentSetItemsMapper.xml
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ select id, set_id, equipment_id, created_at from fate_equipment_set_items
+
+
+
+
+
+
+
+ insert into fate_equipment_set_items
+
+ set_id,
+ equipment_id,
+ created_at,
+
+
+ #{setId},
+ #{equipmentId},
+ #{createdAt},
+
+
+
+
+ update fate_equipment_set_items
+
+ set_id = #{setId},
+ equipment_id = #{equipmentId},
+ created_at = #{createdAt},
+
+ where id = #{id}
+
+
+
+ delete from fate_equipment_set_items where id = #{id}
+
+
+
+ delete from fate_equipment_set_items where id in
+
+ #{id}
+
+
+
\ No newline at end of file
diff --git a/ruoyi-system/src/main/resources/mapper/system/FateEquipmentSetsMapper.xml b/ruoyi-system/src/main/resources/mapper/system/FateEquipmentSetsMapper.xml
new file mode 100644
index 0000000..cf22d70
--- /dev/null
+++ b/ruoyi-system/src/main/resources/mapper/system/FateEquipmentSetsMapper.xml
@@ -0,0 +1,101 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select set_id, set_name, required_pieces, bonus_description, hp_bonus, atk_bonus, def_bonus, res_bonus, spd_bonus, crit_rate_bonus, created_at from fate_equipment_sets
+
+
+
+
+
+
+
+ insert into fate_equipment_sets
+
+ set_name,
+ required_pieces,
+ bonus_description,
+ hp_bonus,
+ atk_bonus,
+ def_bonus,
+ res_bonus,
+ spd_bonus,
+ crit_rate_bonus,
+ created_at,
+
+
+ #{setName},
+ #{requiredPieces},
+ #{bonusDescription},
+ #{hpBonus},
+ #{atkBonus},
+ #{defBonus},
+ #{resBonus},
+ #{spdBonus},
+ #{critRateBonus},
+ #{createdAt},
+
+
+
+
+ update fate_equipment_sets
+
+ set_name = #{setName},
+ required_pieces = #{requiredPieces},
+ bonus_description = #{bonusDescription},
+ hp_bonus = #{hpBonus},
+ atk_bonus = #{atkBonus},
+ def_bonus = #{defBonus},
+ res_bonus = #{resBonus},
+ spd_bonus = #{spdBonus},
+ crit_rate_bonus = #{critRateBonus},
+ created_at = #{createdAt},
+
+ where set_id = #{setId}
+
+
+
+ delete from fate_equipment_sets where set_id = #{setId}
+
+
+
+ delete from fate_equipment_sets where set_id in
+
+ #{setId}
+
+
+
\ No newline at end of file
diff --git a/ruoyi-system/src/main/resources/mapper/system/FateEquipmentTypesMapper.xml b/ruoyi-system/src/main/resources/mapper/system/FateEquipmentTypesMapper.xml
new file mode 100644
index 0000000..67cab60
--- /dev/null
+++ b/ruoyi-system/src/main/resources/mapper/system/FateEquipmentTypesMapper.xml
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select type_id, type_name, type_code, slot_index, description, created_at from fate_equipment_types
+
+
+
+
+
+
+
+ insert into fate_equipment_types
+
+ type_name,
+ type_code,
+ slot_index,
+ description,
+ created_at,
+
+
+ #{typeName},
+ #{typeCode},
+ #{slotIndex},
+ #{description},
+ #{createdAt},
+
+
+
+
+ update fate_equipment_types
+
+ type_name = #{typeName},
+ type_code = #{typeCode},
+ slot_index = #{slotIndex},
+ description = #{description},
+ created_at = #{createdAt},
+
+ where type_id = #{typeId}
+
+
+
+ delete from fate_equipment_types where type_id = #{typeId}
+
+
+
+ delete from fate_equipment_types where type_id in
+
+ #{typeId}
+
+
+
\ No newline at end of file
diff --git a/ruoyi-system/src/main/resources/mapper/system/FateEquipmentsMapper.xml b/ruoyi-system/src/main/resources/mapper/system/FateEquipmentsMapper.xml
new file mode 100644
index 0000000..bbe168f
--- /dev/null
+++ b/ruoyi-system/src/main/resources/mapper/system/FateEquipmentsMapper.xml
@@ -0,0 +1,176 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select equipment_id, name, type_id, quality_id, required_level, base_hp_min, base_hp_max, base_atk_min, base_atk_max, base_def_min, base_def_max, base_res_min, base_res_max, base_spd_min, base_spd_max, base_crit_rate, base_crit_damage, base_dodge_rate, weapon_type, is_two_handed, weight, durability, sell_price, description, icon_url, created_at from fate_equipments
+
+
+
+
+
+
+
+ insert into fate_equipments
+
+ name,
+ type_id,
+ quality_id,
+ required_level,
+ base_hp_min,
+ base_hp_max,
+ base_atk_min,
+ base_atk_max,
+ base_def_min,
+ base_def_max,
+ base_res_min,
+ base_res_max,
+ base_spd_min,
+ base_spd_max,
+ base_crit_rate,
+ base_crit_damage,
+ base_dodge_rate,
+ weapon_type,
+ is_two_handed,
+ weight,
+ durability,
+ sell_price,
+ description,
+ icon_url,
+ created_at,
+
+
+ #{name},
+ #{typeId},
+ #{qualityId},
+ #{requiredLevel},
+ #{baseHpMin},
+ #{baseHpMax},
+ #{baseAtkMin},
+ #{baseAtkMax},
+ #{baseDefMin},
+ #{baseDefMax},
+ #{baseResMin},
+ #{baseResMax},
+ #{baseSpdMin},
+ #{baseSpdMax},
+ #{baseCritRate},
+ #{baseCritDamage},
+ #{baseDodgeRate},
+ #{weaponType},
+ #{isTwoHanded},
+ #{weight},
+ #{durability},
+ #{sellPrice},
+ #{description},
+ #{iconUrl},
+ #{createdAt},
+
+
+
+
+ update fate_equipments
+
+ name = #{name},
+ type_id = #{typeId},
+ quality_id = #{qualityId},
+ required_level = #{requiredLevel},
+ base_hp_min = #{baseHpMin},
+ base_hp_max = #{baseHpMax},
+ base_atk_min = #{baseAtkMin},
+ base_atk_max = #{baseAtkMax},
+ base_def_min = #{baseDefMin},
+ base_def_max = #{baseDefMax},
+ base_res_min = #{baseResMin},
+ base_res_max = #{baseResMax},
+ base_spd_min = #{baseSpdMin},
+ base_spd_max = #{baseSpdMax},
+ base_crit_rate = #{baseCritRate},
+ base_crit_damage = #{baseCritDamage},
+ base_dodge_rate = #{baseDodgeRate},
+ weapon_type = #{weaponType},
+ is_two_handed = #{isTwoHanded},
+ weight = #{weight},
+ durability = #{durability},
+ sell_price = #{sellPrice},
+ description = #{description},
+ icon_url = #{iconUrl},
+ created_at = #{createdAt},
+
+ where equipment_id = #{equipmentId}
+
+
+
+ delete from fate_equipments where equipment_id = #{equipmentId}
+
+
+
+ delete from fate_equipments where equipment_id in
+
+ #{equipmentId}
+
+
+
\ No newline at end of file
diff --git a/ruoyi-system/src/main/resources/mapper/system/FateJobLevelBonusMapper.xml b/ruoyi-system/src/main/resources/mapper/system/FateJobLevelBonusMapper.xml
new file mode 100644
index 0000000..c6cb9b1
--- /dev/null
+++ b/ruoyi-system/src/main/resources/mapper/system/FateJobLevelBonusMapper.xml
@@ -0,0 +1,91 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select bonus_id, job_id, level, hp_bonus, atk_bonus, def_bonus, res_bonus, spd_bonus, created_at from fate_job_level_bonus
+
+
+
+
+
+
+
+ insert into fate_job_level_bonus
+
+ job_id,
+ level,
+ hp_bonus,
+ atk_bonus,
+ def_bonus,
+ res_bonus,
+ spd_bonus,
+ created_at,
+
+
+ #{jobId},
+ #{level},
+ #{hpBonus},
+ #{atkBonus},
+ #{defBonus},
+ #{resBonus},
+ #{spdBonus},
+ #{createdAt},
+
+
+
+
+ update fate_job_level_bonus
+
+ job_id = #{jobId},
+ level = #{level},
+ hp_bonus = #{hpBonus},
+ atk_bonus = #{atkBonus},
+ def_bonus = #{defBonus},
+ res_bonus = #{resBonus},
+ spd_bonus = #{spdBonus},
+ created_at = #{createdAt},
+
+ where bonus_id = #{bonusId}
+
+
+
+ delete from fate_job_level_bonus where bonus_id = #{bonusId}
+
+
+
+ delete from fate_job_level_bonus where bonus_id in
+
+ #{bonusId}
+
+
+
\ No newline at end of file
diff --git a/ruoyi-system/src/main/resources/mapper/system/FateJobPromotionsMapper.xml b/ruoyi-system/src/main/resources/mapper/system/FateJobPromotionsMapper.xml
new file mode 100644
index 0000000..39b9332
--- /dev/null
+++ b/ruoyi-system/src/main/resources/mapper/system/FateJobPromotionsMapper.xml
@@ -0,0 +1,91 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select promotion_id, from_job_id, to_job_id, required_level, required_items, required_skills, success_rate, description, created_at from fate_job_promotions
+
+
+
+
+
+
+
+ insert into fate_job_promotions
+
+ from_job_id,
+ to_job_id,
+ required_level,
+ required_items,
+ required_skills,
+ success_rate,
+ description,
+ created_at,
+
+
+ #{fromJobId},
+ #{toJobId},
+ #{requiredLevel},
+ #{requiredItems},
+ #{requiredSkills},
+ #{successRate},
+ #{description},
+ #{createdAt},
+
+
+
+
+ update fate_job_promotions
+
+ from_job_id = #{fromJobId},
+ to_job_id = #{toJobId},
+ required_level = #{requiredLevel},
+ required_items = #{requiredItems},
+ required_skills = #{requiredSkills},
+ success_rate = #{successRate},
+ description = #{description},
+ created_at = #{createdAt},
+
+ where promotion_id = #{promotionId}
+
+
+
+ delete from fate_job_promotions where promotion_id = #{promotionId}
+
+
+
+ delete from fate_job_promotions where promotion_id in
+
+ #{promotionId}
+
+
+
\ No newline at end of file
diff --git a/ruoyi-system/src/main/resources/mapper/system/FateJobSkillsMapper.xml b/ruoyi-system/src/main/resources/mapper/system/FateJobSkillsMapper.xml
new file mode 100644
index 0000000..071b447
--- /dev/null
+++ b/ruoyi-system/src/main/resources/mapper/system/FateJobSkillsMapper.xml
@@ -0,0 +1,81 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select job_skill_id, job_id, skill_id, learn_level, is_exclusive, description, created_at from fate_job_skills
+
+
+
+
+
+
+
+ insert into fate_job_skills
+
+ job_id,
+ skill_id,
+ learn_level,
+ is_exclusive,
+ description,
+ created_at,
+
+
+ #{jobId},
+ #{skillId},
+ #{learnLevel},
+ #{isExclusive},
+ #{description},
+ #{createdAt},
+
+
+
+
+ update fate_job_skills
+
+ job_id = #{jobId},
+ skill_id = #{skillId},
+ learn_level = #{learnLevel},
+ is_exclusive = #{isExclusive},
+ description = #{description},
+ created_at = #{createdAt},
+
+ where job_skill_id = #{jobSkillId}
+
+
+
+ delete from fate_job_skills where job_skill_id = #{jobSkillId}
+
+
+
+ delete from fate_job_skills where job_skill_id in
+
+ #{jobSkillId}
+
+
+
\ No newline at end of file
diff --git a/ruoyi-system/src/main/resources/mapper/system/FateJobsMapper.xml b/ruoyi-system/src/main/resources/mapper/system/FateJobsMapper.xml
new file mode 100644
index 0000000..2112ba4
--- /dev/null
+++ b/ruoyi-system/src/main/resources/mapper/system/FateJobsMapper.xml
@@ -0,0 +1,146 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select job_id, job_name, job_tier, base_hp_bonus, base_atk_bonus, base_def_bonus, base_res_bonus, base_spd_bonus, growth_hp_bonus, growth_atk_bonus, growth_def_bonus, growth_res_bonus, growth_spd_bonus, move_type, weapon_proficiencies, max_level, required_level, description, icon_url, created_at from fate_jobs
+
+
+
+
+
+
+
+ insert into fate_jobs
+
+ job_name,
+ job_tier,
+ base_hp_bonus,
+ base_atk_bonus,
+ base_def_bonus,
+ base_res_bonus,
+ base_spd_bonus,
+ growth_hp_bonus,
+ growth_atk_bonus,
+ growth_def_bonus,
+ growth_res_bonus,
+ growth_spd_bonus,
+ move_type,
+ weapon_proficiencies,
+ max_level,
+ required_level,
+ description,
+ icon_url,
+ created_at,
+
+
+ #{jobName},
+ #{jobTier},
+ #{baseHpBonus},
+ #{baseAtkBonus},
+ #{baseDefBonus},
+ #{baseResBonus},
+ #{baseSpdBonus},
+ #{growthHpBonus},
+ #{growthAtkBonus},
+ #{growthDefBonus},
+ #{growthResBonus},
+ #{growthSpdBonus},
+ #{moveType},
+ #{weaponProficiencies},
+ #{maxLevel},
+ #{requiredLevel},
+ #{description},
+ #{iconUrl},
+ #{createdAt},
+
+
+
+
+ update fate_jobs
+
+ job_name = #{jobName},
+ job_tier = #{jobTier},
+ base_hp_bonus = #{baseHpBonus},
+ base_atk_bonus = #{baseAtkBonus},
+ base_def_bonus = #{baseDefBonus},
+ base_res_bonus = #{baseResBonus},
+ base_spd_bonus = #{baseSpdBonus},
+ growth_hp_bonus = #{growthHpBonus},
+ growth_atk_bonus = #{growthAtkBonus},
+ growth_def_bonus = #{growthDefBonus},
+ growth_res_bonus = #{growthResBonus},
+ growth_spd_bonus = #{growthSpdBonus},
+ move_type = #{moveType},
+ weapon_proficiencies = #{weaponProficiencies},
+ max_level = #{maxLevel},
+ required_level = #{requiredLevel},
+ description = #{description},
+ icon_url = #{iconUrl},
+ created_at = #{createdAt},
+
+ where job_id = #{jobId}
+
+
+
+ delete from fate_jobs where job_id = #{jobId}
+
+
+
+ delete from fate_jobs where job_id in
+
+ #{jobId}
+
+
+
\ No newline at end of file
diff --git a/ruoyi-system/src/main/resources/mapper/system/FateUserCharacterMapper.xml b/ruoyi-system/src/main/resources/mapper/system/FateUserCharacterMapper.xml
new file mode 100644
index 0000000..7130932
--- /dev/null
+++ b/ruoyi-system/src/main/resources/mapper/system/FateUserCharacterMapper.xml
@@ -0,0 +1,161 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select user_character_id, user_id, character_id, actual_hp, actual_atk, actual_def, actual_res, actual_spd, iv_hp, iv_atk, iv_def, iv_res, iv_spd, ev_hp, ev_atk, ev_def, ev_res, ev_spd, level, experience, favorability, created_at, updated_at from fate_user_character
+
+
+
+
+
+
+
+ insert into fate_user_character
+
+ user_id,
+ character_id,
+ actual_hp,
+ actual_atk,
+ actual_def,
+ actual_res,
+ actual_spd,
+ iv_hp,
+ iv_atk,
+ iv_def,
+ iv_res,
+ iv_spd,
+ ev_hp,
+ ev_atk,
+ ev_def,
+ ev_res,
+ ev_spd,
+ level,
+ experience,
+ favorability,
+ created_at,
+ updated_at,
+
+
+ #{userId},
+ #{characterId},
+ #{actualHp},
+ #{actualAtk},
+ #{actualDef},
+ #{actualRes},
+ #{actualSpd},
+ #{ivHp},
+ #{ivAtk},
+ #{ivDef},
+ #{ivRes},
+ #{ivSpd},
+ #{evHp},
+ #{evAtk},
+ #{evDef},
+ #{evRes},
+ #{evSpd},
+ #{level},
+ #{experience},
+ #{favorability},
+ #{createdAt},
+ #{updatedAt},
+
+
+
+
+ update fate_user_character
+
+ user_id = #{userId},
+ character_id = #{characterId},
+ actual_hp = #{actualHp},
+ actual_atk = #{actualAtk},
+ actual_def = #{actualDef},
+ actual_res = #{actualRes},
+ actual_spd = #{actualSpd},
+ iv_hp = #{ivHp},
+ iv_atk = #{ivAtk},
+ iv_def = #{ivDef},
+ iv_res = #{ivRes},
+ iv_spd = #{ivSpd},
+ ev_hp = #{evHp},
+ ev_atk = #{evAtk},
+ ev_def = #{evDef},
+ ev_res = #{evRes},
+ ev_spd = #{evSpd},
+ level = #{level},
+ experience = #{experience},
+ favorability = #{favorability},
+ created_at = #{createdAt},
+ updated_at = #{updatedAt},
+
+ where user_character_id = #{userCharacterId}
+
+
+
+ delete from fate_user_character where user_character_id = #{userCharacterId}
+
+
+
+ delete from fate_user_character where user_character_id in
+
+ #{userCharacterId}
+
+
+
\ No newline at end of file
diff --git a/ruoyi-system/src/main/resources/mapper/system/FateUserEquipmentsMapper.xml b/ruoyi-system/src/main/resources/mapper/system/FateUserEquipmentsMapper.xml
new file mode 100644
index 0000000..cc47cc7
--- /dev/null
+++ b/ruoyi-system/src/main/resources/mapper/system/FateUserEquipmentsMapper.xml
@@ -0,0 +1,121 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select user_equipment_id, user_id, equipment_id, level, experience, current_hp, current_atk, current_def, current_res, current_spd, current_durability, is_equipped, equipped_character_id, created_at, updated_at from fate_user_equipments
+
+
+
+
+
+
+
+ insert into fate_user_equipments
+
+ user_id,
+ equipment_id,
+ level,
+ experience,
+ current_hp,
+ current_atk,
+ current_def,
+ current_res,
+ current_spd,
+ current_durability,
+ is_equipped,
+ equipped_character_id,
+ created_at,
+ updated_at,
+
+
+ #{userId},
+ #{equipmentId},
+ #{level},
+ #{experience},
+ #{currentHp},
+ #{currentAtk},
+ #{currentDef},
+ #{currentRes},
+ #{currentSpd},
+ #{currentDurability},
+ #{isEquipped},
+ #{equippedCharacterId},
+ #{createdAt},
+ #{updatedAt},
+
+
+
+
+ update fate_user_equipments
+
+ user_id = #{userId},
+ equipment_id = #{equipmentId},
+ level = #{level},
+ experience = #{experience},
+ current_hp = #{currentHp},
+ current_atk = #{currentAtk},
+ current_def = #{currentDef},
+ current_res = #{currentRes},
+ current_spd = #{currentSpd},
+ current_durability = #{currentDurability},
+ is_equipped = #{isEquipped},
+ equipped_character_id = #{equippedCharacterId},
+ created_at = #{createdAt},
+ updated_at = #{updatedAt},
+
+ where user_equipment_id = #{userEquipmentId}
+
+
+
+ delete from fate_user_equipments where user_equipment_id = #{userEquipmentId}
+
+
+
+ delete from fate_user_equipments where user_equipment_id in
+
+ #{userEquipmentId}
+
+
+
\ No newline at end of file