Browse Source

三大类

qxy 6 days ago
parent
commit
6a8e1df257
27 changed files with 1977 additions and 37 deletions
  1. 5 2
      alien-entity/src/main/java/shop/alien/entity/store/BarPerformance.java
  2. 94 0
      alien-entity/src/main/java/shop/alien/entity/store/FitnessEquipmentInfo.java
  3. 82 0
      alien-entity/src/main/java/shop/alien/entity/store/StoreStaffFitnessBase.java
  4. 69 0
      alien-entity/src/main/java/shop/alien/entity/store/StoreStaffFitnessCertification.java
  5. 76 0
      alien-entity/src/main/java/shop/alien/entity/store/StoreStaffFitnessExperience.java
  6. 19 0
      alien-entity/src/main/java/shop/alien/mapper/BarPerformanceMapper.java
  7. 19 0
      alien-entity/src/main/java/shop/alien/mapper/StoreProductBarMapper.java
  8. 19 0
      alien-entity/src/main/java/shop/alien/mapper/StoreProductGymMapper.java
  9. 19 0
      alien-entity/src/main/java/shop/alien/mapper/StoreStaffFitnessBaseMapper.java
  10. 19 0
      alien-entity/src/main/java/shop/alien/mapper/StoreStaffFitnessCertificationMapper.java
  11. 19 0
      alien-entity/src/main/java/shop/alien/mapper/StoreStaffFitnessCourseMapper.java
  12. 19 0
      alien-entity/src/main/java/shop/alien/mapper/StoreStaffFitnessExperienceMapper.java
  13. 6 5
      alien-store/src/main/java/shop/alien/store/controller/BarPerformanceController.java
  14. 11 6
      alien-store/src/main/java/shop/alien/store/controller/StoreProductBarController.java
  15. 143 0
      alien-store/src/main/java/shop/alien/store/controller/StoreStaffFitnessBaseController.java
  16. 162 0
      alien-store/src/main/java/shop/alien/store/controller/StoreStaffFitnessCertificationController.java
  17. 145 0
      alien-store/src/main/java/shop/alien/store/controller/StoreStaffFitnessCourseController.java
  18. 142 0
      alien-store/src/main/java/shop/alien/store/controller/StoreStaffFitnessExperienceController.java
  19. 77 0
      alien-store/src/main/java/shop/alien/store/service/StoreStaffFitnessBaseService.java
  20. 86 0
      alien-store/src/main/java/shop/alien/store/service/StoreStaffFitnessCertificationService.java
  21. 78 0
      alien-store/src/main/java/shop/alien/store/service/StoreStaffFitnessCourseService.java
  22. 78 0
      alien-store/src/main/java/shop/alien/store/service/StoreStaffFitnessExperienceService.java
  23. 24 24
      alien-store/src/main/java/shop/alien/store/service/impl/BarPerformanceServiceImpl.java
  24. 139 0
      alien-store/src/main/java/shop/alien/store/service/impl/StoreStaffFitnessBaseServiceImpl.java
  25. 151 0
      alien-store/src/main/java/shop/alien/store/service/impl/StoreStaffFitnessCertificationServiceImpl.java
  26. 138 0
      alien-store/src/main/java/shop/alien/store/service/impl/StoreStaffFitnessCourseServiceImpl.java
  27. 138 0
      alien-store/src/main/java/shop/alien/store/service/impl/StoreStaffFitnessExperienceServiceImpl.java

+ 5 - 2
alien-entity/src/main/java/shop/alien/entity/store/BarPerformance.java

@@ -7,6 +7,7 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.io.Serializable;
 import java.util.Date;
 
 /**
@@ -19,8 +20,10 @@ import java.util.Date;
 @Data
 @JsonInclude
 @TableName("bar_performance")
-@ApiModel(value = "BarPerformance对象", description = "演出信息")
-public class BarPerformance {
+@ApiModel(value = "BarPerformance对象", description = "酒吧演出表")
+public class BarPerformance implements Serializable {
+
+    private static final long serialVersionUID = 1L;
 
     @ApiModelProperty(value = "演出ID(主键)")
     @TableId(value = "id", type = IdType.AUTO)

+ 94 - 0
alien-entity/src/main/java/shop/alien/entity/store/FitnessEquipmentInfo.java

@@ -0,0 +1,94 @@
+package shop.alien.entity.store;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 健身设备信息实体类
+ *
+ * @author system
+ * @since 2025-01-XX
+ */
+@Data
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@TableName("fitness_equipment_info")
+@ApiModel(value = "FitnessEquipmentInfo对象", description = "健身设备信息")
+public class FitnessEquipmentInfo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "主键ID")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty(value = "设备名称", required = true)
+    @TableField("equipment_name")
+    private String equipmentName;
+
+    @ApiModelProperty(value = "设备编码")
+    @TableField("equipment_code")
+    private String equipmentCode;
+
+    @ApiModelProperty(value = "设备类型(1:心肺训练, 2:核心训练, 3:臀腿训练, 4:上肢训练, 5:全身训练, 6:其他)", required = true)
+    @TableField("equipment_type")
+    private Integer equipmentType;
+
+    @ApiModelProperty(value = "设备图标URL")
+    @TableField("equipment_icon")
+    private String equipmentIcon;
+
+    @ApiModelProperty(value = "设备图片URL")
+    @TableField("equipment_image")
+    private String equipmentImage;
+
+    @ApiModelProperty(value = "设备描述")
+    @TableField("description")
+    private String description;
+
+    @ApiModelProperty(value = "使用方法")
+    @TableField("usage_method")
+    private String usageMethod;
+
+    @ApiModelProperty(value = "注意事项")
+    @TableField("precautions")
+    private String precautions;
+
+    @ApiModelProperty(value = "排序号")
+    @TableField("sort_order")
+    private Integer sortOrder;
+
+    @ApiModelProperty(value = "状态(0:禁用, 1:启用)")
+    @TableField("status")
+    private Integer status;
+
+    @ApiModelProperty(value = "删除标记(0:未删除, 1:已删除)")
+    @TableField("delete_flag")
+    @TableLogic
+    private Integer deleteFlag;
+
+    @ApiModelProperty(value = "创建时间")
+    @TableField(value = "created_time", fill = FieldFill.INSERT)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createdTime;
+
+    @ApiModelProperty(value = "创建人ID")
+    @TableField("created_user_id")
+    private Integer createdUserId;
+
+    @ApiModelProperty(value = "修改时间")
+    @TableField(value = "updated_time", fill = FieldFill.UPDATE)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date updatedTime;
+
+    @ApiModelProperty(value = "修改人ID")
+    @TableField("updated_user_id")
+    private Integer updatedUserId;
+}
+

+ 82 - 0
alien-entity/src/main/java/shop/alien/entity/store/StoreStaffFitnessBase.java

@@ -0,0 +1,82 @@
+package shop.alien.entity.store;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 运动健身员工基本信息表
+ *
+ * @author system
+ * @since 2025-01-XX
+ */
+@Data
+@JsonInclude
+@TableName("store_staff_fitness_base")
+@ApiModel(value = "StoreStaffFitnessBase对象", description = "运动健身员工基本信息表")
+public class StoreStaffFitnessBase implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "主键")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty(value = "员工id")
+    @TableField("staff_id")
+    private Integer staffId;
+
+    @ApiModelProperty(value = "民族")
+    @TableField("nation")
+    private String nation;
+
+    @ApiModelProperty(value = "星座")
+    @TableField("constellation")
+    private String constellation;
+
+    @ApiModelProperty(value = "身高(cm)")
+    @TableField("height")
+    private String height;
+
+    @ApiModelProperty(value = "体重(kg)")
+    @TableField("weight")
+    private String weight;
+
+    @ApiModelProperty(value = "毕业院校")
+    @TableField("Educational_background")
+    private String educationalBackground;
+
+    @ApiModelProperty(value = "学历")
+    @TableField("education")
+    private String education;
+
+    @ApiModelProperty(value = "删除状态")
+    @TableField("delete_flag")
+    @TableLogic
+    private Integer deleteFlag;
+
+    @ApiModelProperty(value = "创建时间")
+    @TableField(value = "created_time", fill = FieldFill.INSERT)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createdTime;
+
+    @ApiModelProperty(value = "更新时间")
+    @TableField(value = "updated_time", fill = FieldFill.UPDATE)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date updatedTime;
+
+    @ApiModelProperty(value = "创建人ID")
+    @TableField("created_user_id")
+    private Integer createdUserId;
+
+    @ApiModelProperty(value = "修改人ID")
+    @TableField("updated_user_id")
+    private Integer updatedUserId;
+}
+

+ 69 - 0
alien-entity/src/main/java/shop/alien/entity/store/StoreStaffFitnessCertification.java

@@ -0,0 +1,69 @@
+package shop.alien.entity.store;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 运动健身员工认证/荣誉表
+ *
+ * @author system
+ * @since 2025-01-XX
+ */
+@Data
+@JsonInclude
+@TableName("store_staff_fitness_certification")
+@ApiModel(value = "StoreStaffFitnessCertification对象", description = "运动健身员工认证/荣誉表")
+public class StoreStaffFitnessCertification implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "主键")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty(value = "员工id")
+    @TableField("staff_id")
+    private Integer staffId;
+
+    @ApiModelProperty(value = "类型(1-认证 2-荣誉)")
+    @TableField("type")
+    private Integer type;
+
+    @ApiModelProperty(value = "名称(认证名称/荣誉名称)")
+    @TableField("name")
+    private String name;
+
+    @ApiModelProperty(value = "图片URL(最多9张,逗号隔开)")
+    @TableField("img_urls")
+    private String imgUrls;
+
+    @ApiModelProperty(value = "删除状态")
+    @TableField("delete_flag")
+    @TableLogic
+    private Integer deleteFlag;
+
+    @ApiModelProperty(value = "创建时间")
+    @TableField(value = "created_time", fill = FieldFill.INSERT)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createdTime;
+
+    @ApiModelProperty(value = "更新时间")
+    @TableField(value = "updated_time", fill = FieldFill.UPDATE)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date updatedTime;
+
+    @ApiModelProperty(value = "创建人ID")
+    @TableField("created_user_id")
+    private Integer createdUserId;
+
+    @ApiModelProperty(value = "修改人ID")
+    @TableField("updated_user_id")
+    private Integer updatedUserId;
+}

+ 76 - 0
alien-entity/src/main/java/shop/alien/entity/store/StoreStaffFitnessExperience.java

@@ -0,0 +1,76 @@
+package shop.alien.entity.store;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 运动健身员工从业经历表
+ *
+ * @author system
+ * @since 2025-01-XX
+ */
+@Data
+@JsonInclude
+@TableName("store_staff_fitness_experience")
+@ApiModel(value = "StoreStaffFitnessExperience对象", description = "运动健身员工从业经历表")
+public class StoreStaffFitnessExperience implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "主键")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty(value = "员工id")
+    @TableField("staff_id")
+    private Integer staffId;
+
+    @ApiModelProperty(value = "开始时间")
+    @TableField("start_time")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date startTime;
+
+    @ApiModelProperty(value = "结束时间")
+    @TableField("end_time")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date endTime;
+
+    @ApiModelProperty(value = "工作单位")
+    @TableField("work_unit")
+    private String workUnit;
+
+    @ApiModelProperty(value = "职位")
+    @TableField("work_position")
+    private String workPosition;
+
+    @ApiModelProperty(value = "删除状态")
+    @TableField("delete_flag")
+    @TableLogic
+    private Integer deleteFlag;
+
+    @ApiModelProperty(value = "创建时间")
+    @TableField(value = "created_time", fill = FieldFill.INSERT)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createdTime;
+
+    @ApiModelProperty(value = "更新时间")
+    @TableField(value = "updated_time", fill = FieldFill.UPDATE)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date updatedTime;
+
+    @ApiModelProperty(value = "创建人ID")
+    @TableField("created_user_id")
+    private Integer createdUserId;
+
+    @ApiModelProperty(value = "修改人ID")
+    @TableField("updated_user_id")
+    private Integer updatedUserId;
+}
+

+ 19 - 0
alien-entity/src/main/java/shop/alien/mapper/BarPerformanceMapper.java

@@ -0,0 +1,19 @@
+package shop.alien.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import shop.alien.entity.store.BarPerformance;
+
+/**
+ * <p>
+ * 酒吧演出表 Mapper 接口
+ * </p>
+ *
+ * @author system
+ * @since 2025-01-XX
+ */
+@Mapper
+public interface BarPerformanceMapper extends BaseMapper<BarPerformance> {
+
+}
+

+ 19 - 0
alien-entity/src/main/java/shop/alien/mapper/StoreProductBarMapper.java

@@ -0,0 +1,19 @@
+package shop.alien.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import shop.alien.entity.store.StoreProductBar;
+
+/**
+ * <p>
+ * 酒吧商品表 Mapper 接口
+ * </p>
+ *
+ * @author system
+ * @since 2025-01-XX
+ */
+@Mapper
+public interface StoreProductBarMapper extends BaseMapper<StoreProductBar> {
+
+}
+

+ 19 - 0
alien-entity/src/main/java/shop/alien/mapper/StoreProductGymMapper.java

@@ -0,0 +1,19 @@
+package shop.alien.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import shop.alien.entity.store.StoreProductGym;
+
+/**
+ * <p>
+ * 运动健身商品表 Mapper 接口
+ * </p>
+ *
+ * @author system
+ * @since 2025-01-XX
+ */
+@Mapper
+public interface StoreProductGymMapper extends BaseMapper<StoreProductGym> {
+
+}
+

+ 19 - 0
alien-entity/src/main/java/shop/alien/mapper/StoreStaffFitnessBaseMapper.java

@@ -0,0 +1,19 @@
+package shop.alien.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import shop.alien.entity.store.StoreStaffFitnessBase;
+
+/**
+ * <p>
+ * 运动健身员工基本信息表 Mapper 接口
+ * </p>
+ *
+ * @author system
+ * @since 2025-01-XX
+ */
+@Mapper
+public interface StoreStaffFitnessBaseMapper extends BaseMapper<StoreStaffFitnessBase> {
+
+}
+

+ 19 - 0
alien-entity/src/main/java/shop/alien/mapper/StoreStaffFitnessCertificationMapper.java

@@ -0,0 +1,19 @@
+package shop.alien.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import shop.alien.entity.store.StoreStaffFitnessCertification;
+
+/**
+ * <p>
+ * 运动健身员工认证表 Mapper 接口
+ * </p>
+ *
+ * @author system
+ * @since 2025-01-XX
+ */
+@Mapper
+public interface StoreStaffFitnessCertificationMapper extends BaseMapper<StoreStaffFitnessCertification> {
+
+}
+

+ 19 - 0
alien-entity/src/main/java/shop/alien/mapper/StoreStaffFitnessCourseMapper.java

@@ -0,0 +1,19 @@
+package shop.alien.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import shop.alien.entity.store.StoreStaffFitnessCourse;
+
+/**
+ * <p>
+ * 运动健身员工课程信息表 Mapper 接口
+ * </p>
+ *
+ * @author system
+ * @since 2025-01-XX
+ */
+@Mapper
+public interface StoreStaffFitnessCourseMapper extends BaseMapper<StoreStaffFitnessCourse> {
+
+}
+

+ 19 - 0
alien-entity/src/main/java/shop/alien/mapper/StoreStaffFitnessExperienceMapper.java

@@ -0,0 +1,19 @@
+package shop.alien.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import shop.alien.entity.store.StoreStaffFitnessExperience;
+
+/**
+ * <p>
+ * 运动健身员工从业经历表 Mapper 接口
+ * </p>
+ *
+ * @author system
+ * @since 2025-01-XX
+ */
+@Mapper
+public interface StoreStaffFitnessExperienceMapper extends BaseMapper<StoreStaffFitnessExperience> {
+
+}
+

+ 6 - 5
alien-store/src/main/java/shop/alien/store/controller/BarPerformanceController.java

@@ -1,16 +1,17 @@
 package shop.alien.store.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
-import io.swagger.annotations.ApiOperation;
+
+import io.swagger.annotations.*;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.bind.annotation.*;
 import shop.alien.entity.result.R;
 import shop.alien.entity.store.BarPerformance;
 import shop.alien.store.service.BarPerformanceService;
+import shop.alien.util.myBaticsPlus.QueryBuilder;
+
+import java.util.List;
 
 /**
  * 酒吧演出Controller
@@ -187,7 +188,7 @@ public class BarPerformanceController {
             @RequestParam(required = false) Integer statusReview,
             @RequestParam(required = false) String category,
             @RequestParam(required = false) String performanceName) {
-        log.info("BarPerformanceController.queryPerformanceListByStoreId?page={}, size={}, storeId={}, statusReview={}, category={}, performanceName={}", 
+        log.info("BarPerformanceController.queryPerformanceListByStoreId?page={}, size={}, storeId={}, statusReview={}, category={}, performanceName={}",
                 page, size, storeId, statusReview, category, performanceName);
         try {
             IPage<BarPerformance> performanceList = barPerformanceService.queryPerformanceListByStoreIdAndCategory(

+ 11 - 6
alien-store/src/main/java/shop/alien/store/controller/StoreProductBarController.java

@@ -39,7 +39,12 @@ public class StoreProductBarController {
         if (bar.getPrice() == null) {
             return R.fail("价格不能为空");
         }
-
+        if (bar.getCostPrice() == null) {
+            return R.fail("成本价不能为空");
+        }
+        if (bar.getCategory() == null || bar.getCategory().trim().isEmpty()) {
+            return R.fail("品类不能为空");
+        }
 
         R<StoreProductBar> result = storeProductBarService.addStoreProductBar(bar);
         if (result.getCode() == 200) {
@@ -67,10 +72,10 @@ public class StoreProductBarController {
     @ApiOperation("删除酒吧商品")
     @ApiOperationSupport(order = 3)
     @ApiImplicitParams({
-            @ApiImplicitParam(name = "id", value = "主键ID", dataType = "Integer", paramType = "path", required = true)
+            @ApiImplicitParam(name = "id", value = "主键ID", dataType = "Long", paramType = "path", required = true)
     })
     @DeleteMapping("/{id}")
-    public R<String> deleteBar(@PathVariable("id") Integer id) {
+    public R<String> deleteBar(@PathVariable("id") Long id) {
         log.info("StoreProductBarController.deleteBar?id={}", id);
         R<Boolean> result = storeProductBarService.deleteStoreProductBar(id);
         if (result.getCode() == 200) {
@@ -82,10 +87,10 @@ public class StoreProductBarController {
     @ApiOperation("根据ID查询酒吧商品详情")
     @ApiOperationSupport(order = 4)
     @ApiImplicitParams({
-            @ApiImplicitParam(name = "id", value = "主键ID", dataType = "Integer", paramType = "path", required = true)
+            @ApiImplicitParam(name = "id", value = "主键ID", dataType = "Long", paramType = "path", required = true)
     })
     @GetMapping("/{id}")
-    public R<StoreProductBar> getById(@PathVariable("id") Integer id) {
+    public R<StoreProductBar> getById(@PathVariable("id") Long id) {
         log.info("StoreProductBarController.getById?id={}", id);
         R<StoreProductBar> result = storeProductBarService.getStoreProductBarById(id);
         if (result.getCode() == 200 && result.getData() != null) {
@@ -102,7 +107,7 @@ public class StoreProductBarController {
             @ApiImplicitParam(name = "name", value = "名称(模糊查询)", dataType = "String", paramType = "query"),
             @ApiImplicitParam(name = "category", value = "品类", dataType = "String", paramType = "query"),
             @ApiImplicitParam(name = "status", value = "状态(0:禁用,1:启用)", dataType = "Integer", paramType = "query"),
-            @ApiImplicitParam(name = "extId", value = "商品表主键", dataType = "Integer", paramType = "query")
+            @ApiImplicitParam(name = "extId", value = "商品表主键", dataType = "Long", paramType = "query")
     })
     @GetMapping("/page")
     public R<IPage<StoreProductBar>> getPage(

+ 143 - 0
alien-store/src/main/java/shop/alien/store/controller/StoreStaffFitnessBaseController.java

@@ -0,0 +1,143 @@
+package shop.alien.store.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import io.swagger.annotations.*;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+import shop.alien.entity.result.R;
+import shop.alien.entity.store.StoreStaffFitnessBase;
+import shop.alien.store.service.StoreStaffFitnessBaseService;
+
+import java.util.List;
+
+/**
+ * 运动健身员工基本信息表 Controller
+ *
+ * @author system
+ * @since 2025-01-XX
+ */
+@Slf4j
+@Api(tags = {"运动健身员工基本信息管理"})
+@CrossOrigin
+@RestController
+@RequestMapping("/store/staff/fitness/base")
+@RequiredArgsConstructor
+public class StoreStaffFitnessBaseController {
+
+    private final StoreStaffFitnessBaseService storeStaffFitnessBaseService;
+
+    @ApiOperation("新增运动健身员工基本信息")
+    @ApiOperationSupport(order = 1)
+    @PostMapping
+    public R<String> saveBase(@RequestBody StoreStaffFitnessBase base) {
+        log.info("StoreStaffFitnessBaseController.saveBase?base={}", base);
+        // 参数校验
+        if (base.getStaffId() == null) {
+            return R.fail("员工ID不能为空");
+        }
+
+        R<StoreStaffFitnessBase> result = storeStaffFitnessBaseService.addStoreStaffFitnessBase(base);
+        if (result.getCode() == 200) {
+            return R.success("新增成功");
+        }
+        return R.fail(result.getMsg());
+    }
+
+    @ApiOperation("修改运动健身员工基本信息")
+    @ApiOperationSupport(order = 2)
+    @PutMapping
+    public R<String> updateBase(@RequestBody StoreStaffFitnessBase base) {
+        log.info("StoreStaffFitnessBaseController.updateBase?base={}", base);
+        if (base.getId() == null) {
+            return R.fail("ID不能为空");
+        }
+
+        R<StoreStaffFitnessBase> result = storeStaffFitnessBaseService.editStoreStaffFitnessBase(base);
+        if (result.getCode() == 200) {
+            return R.success("修改成功");
+        }
+        return R.fail(result.getMsg());
+    }
+
+    @ApiOperation("删除运动健身员工基本信息")
+    @ApiOperationSupport(order = 3)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "主键ID", dataType = "Integer", paramType = "path", required = true)
+    })
+    @DeleteMapping("/{id}")
+    public R<String> deleteBase(@PathVariable("id") Integer id) {
+        log.info("StoreStaffFitnessBaseController.deleteBase?id={}", id);
+        R<Boolean> result = storeStaffFitnessBaseService.deleteStoreStaffFitnessBase(id);
+        if (result.getCode() == 200) {
+            return R.success("删除成功");
+        }
+        return R.fail(result.getMsg());
+    }
+
+    @ApiOperation("根据ID查询运动健身员工基本信息详情")
+    @ApiOperationSupport(order = 4)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "主键ID", dataType = "Integer", paramType = "path", required = true)
+    })
+    @GetMapping("/{id}")
+    public R<StoreStaffFitnessBase> getById(@PathVariable("id") Integer id) {
+        log.info("StoreStaffFitnessBaseController.getById?id={}", id);
+        R<StoreStaffFitnessBase> result = storeStaffFitnessBaseService.getStoreStaffFitnessBaseById(id);
+        if (result.getCode() == 200 && result.getData() != null) {
+            return result;
+        }
+        return R.fail("未找到该基本信息");
+    }
+
+    @ApiOperation("根据员工ID查询基本信息")
+    @ApiOperationSupport(order = 5)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "staffId", value = "员工ID", dataType = "Integer", paramType = "query", required = true)
+    })
+    @GetMapping("/getByStaffId")
+    public R<StoreStaffFitnessBase> getByStaffId(@RequestParam("staffId") Integer staffId) {
+        log.info("StoreStaffFitnessBaseController.getByStaffId?staffId={}", staffId);
+        R<StoreStaffFitnessBase> result = storeStaffFitnessBaseService.getByStaffId(staffId);
+        if (result.getCode() == 200 && result.getData() != null) {
+            return result;
+        }
+        return R.fail("未找到该员工的基本信息");
+    }
+
+    @ApiOperation("分页查询运动健身员工基本信息列表")
+    @ApiOperationSupport(order = 6)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "pageNum", value = "页码", dataType = "int", paramType = "query", required = true),
+            @ApiImplicitParam(name = "pageSize", value = "页容", dataType = "int", paramType = "query", required = true),
+            @ApiImplicitParam(name = "staffId", value = "员工ID", dataType = "Integer", paramType = "query"),
+            @ApiImplicitParam(name = "education", value = "学历", dataType = "String", paramType = "query")
+    })
+    @GetMapping("/page")
+    public R<IPage<StoreStaffFitnessBase>> getPage(
+            @RequestParam(defaultValue = "1") int pageNum,
+            @RequestParam(defaultValue = "10") int pageSize,
+            @RequestParam(required = false) Integer staffId,
+            @RequestParam(required = false) String education) {
+        log.info("StoreStaffFitnessBaseController.getPage?pageNum={}, pageSize={}, staffId={}, education={}",
+                pageNum, pageSize, staffId, education);
+        IPage<StoreStaffFitnessBase> page = storeStaffFitnessBaseService.getPage(pageNum, pageSize, staffId, education);
+        return R.data(page);
+    }
+
+    @ApiOperation("批量删除运动健身员工基本信息")
+    @ApiOperationSupport(order = 7)
+    @PostMapping("/batchDelete")
+    public R<String> deleteBatch(@RequestBody List<Integer> ids) {
+        log.info("StoreStaffFitnessBaseController.deleteBatch?ids={}", ids);
+        if (ids == null || ids.isEmpty()) {
+            return R.fail("ID列表不能为空");
+        }
+        boolean result = storeStaffFitnessBaseService.deleteBatch(ids);
+        if (result) {
+            return R.success("批量删除成功");
+        }
+        return R.fail("批量删除失败");
+    }
+}
+

+ 162 - 0
alien-store/src/main/java/shop/alien/store/controller/StoreStaffFitnessCertificationController.java

@@ -0,0 +1,162 @@
+package shop.alien.store.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import io.swagger.annotations.*;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+import shop.alien.entity.result.R;
+import shop.alien.entity.store.StoreStaffFitnessCertification;
+import shop.alien.store.service.StoreStaffFitnessCertificationService;
+
+import java.util.List;
+
+/**
+ * 运动健身员工认证/荣誉表 Controller
+ *
+ * @author system
+ * @since 2025-01-XX
+ */
+@Slf4j
+@Api(tags = {"运动健身员工认证/荣誉管理"})
+@CrossOrigin
+@RestController
+@RequestMapping("/store/staff/fitness/certification")
+@RequiredArgsConstructor
+public class StoreStaffFitnessCertificationController {
+
+    private final StoreStaffFitnessCertificationService storeStaffFitnessCertificationService;
+
+    @ApiOperation("新增运动健身员工认证/荣誉")
+    @ApiOperationSupport(order = 1)
+    @PostMapping
+    public R<String> saveCertification(@RequestBody StoreStaffFitnessCertification certification) {
+        log.info("StoreStaffFitnessCertificationController.saveCertification?certification={}", certification);
+        // 参数校验
+        if (certification.getStaffId() == null) {
+            return R.fail("员工ID不能为空");
+        }
+        if (certification.getType() == null) {
+            return R.fail("类型不能为空(1-认证 2-荣誉)");
+        }
+        if (certification.getType() != 1 && certification.getType() != 2) {
+            return R.fail("类型值无效,只能为1(认证)或2(荣誉)");
+        }
+
+        R<StoreStaffFitnessCertification> result = storeStaffFitnessCertificationService.addStoreStaffFitnessCertification(certification);
+        if (result.getCode() == 200) {
+            return R.success("新增成功");
+        }
+        return R.fail(result.getMsg());
+    }
+
+    @ApiOperation("修改运动健身员工认证/荣誉")
+    @ApiOperationSupport(order = 2)
+    @PutMapping
+    public R<String> updateCertification(@RequestBody StoreStaffFitnessCertification certification) {
+        log.info("StoreStaffFitnessCertificationController.updateCertification?certification={}", certification);
+        if (certification.getId() == null) {
+            return R.fail("ID不能为空");
+        }
+
+        R<StoreStaffFitnessCertification> result = storeStaffFitnessCertificationService.editStoreStaffFitnessCertification(certification);
+        if (result.getCode() == 200) {
+            return R.success("修改成功");
+        }
+        return R.fail(result.getMsg());
+    }
+
+    @ApiOperation("删除运动健身员工认证/荣誉")
+    @ApiOperationSupport(order = 3)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "主键ID", dataType = "Integer", paramType = "path", required = true)
+    })
+    @DeleteMapping("/{id}")
+    public R<String> deleteCertification(@PathVariable("id") Integer id) {
+        log.info("StoreStaffFitnessCertificationController.deleteCertification?id={}", id);
+        R<Boolean> result = storeStaffFitnessCertificationService.deleteStoreStaffFitnessCertification(id);
+        if (result.getCode() == 200) {
+            return R.success("删除成功");
+        }
+        return R.fail(result.getMsg());
+    }
+
+    @ApiOperation("根据ID查询运动健身员工认证/荣誉详情")
+    @ApiOperationSupport(order = 4)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "主键ID", dataType = "Integer", paramType = "path", required = true)
+    })
+    @GetMapping("/{id}")
+    public R<StoreStaffFitnessCertification> getById(@PathVariable("id") Integer id) {
+        log.info("StoreStaffFitnessCertificationController.getById?id={}", id);
+        R<StoreStaffFitnessCertification> result = storeStaffFitnessCertificationService.getStoreStaffFitnessCertificationById(id);
+        if (result.getCode() == 200 && result.getData() != null) {
+            return result;
+        }
+        return R.fail("未找到该认证/荣誉信息");
+    }
+
+    @ApiOperation("分页查询运动健身员工认证/荣誉列表")
+    @ApiOperationSupport(order = 5)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "pageNum", value = "页码", dataType = "int", paramType = "query", required = true),
+            @ApiImplicitParam(name = "pageSize", value = "页容", dataType = "int", paramType = "query", required = true),
+            @ApiImplicitParam(name = "staffId", value = "员工ID", dataType = "Integer", paramType = "query"),
+            @ApiImplicitParam(name = "type", value = "类型(1-认证 2-荣誉)", dataType = "Integer", paramType = "query"),
+            @ApiImplicitParam(name = "name", value = "名称(模糊查询)", dataType = "String", paramType = "query")
+    })
+    @GetMapping("/page")
+    public R<IPage<StoreStaffFitnessCertification>> getPage(
+            @RequestParam(defaultValue = "1") int pageNum,
+            @RequestParam(defaultValue = "10") int pageSize,
+            @RequestParam(required = false) Integer staffId,
+            @RequestParam(required = false) Integer type,
+            @RequestParam(required = false) String name) {
+        log.info("StoreStaffFitnessCertificationController.getPage?pageNum={}, pageSize={}, staffId={}, type={}, name={}",
+                pageNum, pageSize, staffId, type, name);
+        IPage<StoreStaffFitnessCertification> page = storeStaffFitnessCertificationService.getPage(pageNum, pageSize, staffId, type, name);
+        return R.data(page);
+    }
+
+    @ApiOperation("批量删除运动健身员工认证/荣誉")
+    @ApiOperationSupport(order = 6)
+    @PostMapping("/batchDelete")
+    public R<String> deleteBatch(@RequestBody List<Integer> ids) {
+        log.info("StoreStaffFitnessCertificationController.deleteBatch?ids={}", ids);
+        if (ids == null || ids.isEmpty()) {
+            return R.fail("ID列表不能为空");
+        }
+        boolean result = storeStaffFitnessCertificationService.deleteBatch(ids);
+        if (result) {
+            return R.success("批量删除成功");
+        }
+        return R.fail("批量删除失败");
+    }
+
+    @ApiOperation("根据员工ID查询认证/荣誉列表")
+    @ApiOperationSupport(order = 7)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "staffId", value = "员工ID", dataType = "Integer", paramType = "query", required = true)
+    })
+    @GetMapping("/listByStaffId")
+    public R<List<StoreStaffFitnessCertification>> getListByStaffId(@RequestParam("staffId") Integer staffId) {
+        log.info("StoreStaffFitnessCertificationController.getListByStaffId?staffId={}", staffId);
+        List<StoreStaffFitnessCertification> list = storeStaffFitnessCertificationService.getListByStaffId(staffId);
+        return R.data(list);
+    }
+
+    @ApiOperation("根据员工ID和类型查询认证/荣誉列表")
+    @ApiOperationSupport(order = 8)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "staffId", value = "员工ID", dataType = "Integer", paramType = "query", required = true),
+            @ApiImplicitParam(name = "type", value = "类型(1-认证 2-荣誉)", dataType = "Integer", paramType = "query")
+    })
+    @GetMapping("/listByStaffIdAndType")
+    public R<List<StoreStaffFitnessCertification>> getListByStaffIdAndType(
+            @RequestParam("staffId") Integer staffId,
+            @RequestParam(required = false) Integer type) {
+        log.info("StoreStaffFitnessCertificationController.getListByStaffIdAndType?staffId={}, type={}", staffId, type);
+        List<StoreStaffFitnessCertification> list = storeStaffFitnessCertificationService.getListByStaffIdAndType(staffId, type);
+        return R.data(list);
+    }
+}

+ 145 - 0
alien-store/src/main/java/shop/alien/store/controller/StoreStaffFitnessCourseController.java

@@ -0,0 +1,145 @@
+package shop.alien.store.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import io.swagger.annotations.*;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+import shop.alien.entity.result.R;
+import shop.alien.entity.store.StoreStaffFitnessCourse;
+import shop.alien.store.service.StoreStaffFitnessCourseService;
+
+import java.util.List;
+
+/**
+ * 运动健身员工课程信息表 Controller
+ *
+ * @author system
+ * @since 2025-01-XX
+ */
+@Slf4j
+@Api(tags = {"运动健身员工课程管理"})
+@CrossOrigin
+@RestController
+@RequestMapping("/store/staff/fitness/course")
+@RequiredArgsConstructor
+public class StoreStaffFitnessCourseController {
+
+    private final StoreStaffFitnessCourseService storeStaffFitnessCourseService;
+
+    @ApiOperation("新增运动健身员工课程")
+    @ApiOperationSupport(order = 1)
+    @PostMapping
+    public R<String> saveCourse(@RequestBody StoreStaffFitnessCourse course) {
+        log.info("StoreStaffFitnessCourseController.saveCourse?course={}", course);
+        // 参数校验
+        if (course.getStaffId() == null) {
+            return R.fail("员工ID不能为空");
+        }
+        if (course.getCourseName() == null || course.getCourseName().trim().isEmpty()) {
+            return R.fail("项目名称不能为空");
+        }
+
+        R<StoreStaffFitnessCourse> result = storeStaffFitnessCourseService.addStoreStaffFitnessCourse(course);
+        if (result.getCode() == 200) {
+            return R.success("新增成功");
+        }
+        return R.fail(result.getMsg());
+    }
+
+    @ApiOperation("修改运动健身员工课程")
+    @ApiOperationSupport(order = 2)
+    @PutMapping
+    public R<String> updateCourse(@RequestBody StoreStaffFitnessCourse course) {
+        log.info("StoreStaffFitnessCourseController.updateCourse?course={}", course);
+        if (course.getId() == null) {
+            return R.fail("ID不能为空");
+        }
+
+        R<StoreStaffFitnessCourse> result = storeStaffFitnessCourseService.editStoreStaffFitnessCourse(course);
+        if (result.getCode() == 200) {
+            return R.success("修改成功");
+        }
+        return R.fail(result.getMsg());
+    }
+
+    @ApiOperation("删除运动健身员工课程")
+    @ApiOperationSupport(order = 3)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "主键ID", dataType = "Integer", paramType = "path", required = true)
+    })
+    @DeleteMapping("/{id}")
+    public R<String> deleteCourse(@PathVariable("id") Integer id) {
+        log.info("StoreStaffFitnessCourseController.deleteCourse?id={}", id);
+        R<Boolean> result = storeStaffFitnessCourseService.deleteStoreStaffFitnessCourse(id);
+        if (result.getCode() == 200) {
+            return R.success("删除成功");
+        }
+        return R.fail(result.getMsg());
+    }
+
+    @ApiOperation("根据ID查询运动健身员工课程详情")
+    @ApiOperationSupport(order = 4)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "主键ID", dataType = "Integer", paramType = "path", required = true)
+    })
+    @GetMapping("/{id}")
+    public R<StoreStaffFitnessCourse> getById(@PathVariable("id") Integer id) {
+        log.info("StoreStaffFitnessCourseController.getById?id={}", id);
+        R<StoreStaffFitnessCourse> result = storeStaffFitnessCourseService.getStoreStaffFitnessCourseById(id);
+        if (result.getCode() == 200 && result.getData() != null) {
+            return result;
+        }
+        return R.fail("未找到该课程信息");
+    }
+
+    @ApiOperation("分页查询运动健身员工课程列表")
+    @ApiOperationSupport(order = 5)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "pageNum", value = "页码", dataType = "int", paramType = "query", required = true),
+            @ApiImplicitParam(name = "pageSize", value = "页容", dataType = "int", paramType = "query", required = true),
+            @ApiImplicitParam(name = "staffId", value = "员工ID", dataType = "Integer", paramType = "query"),
+            @ApiImplicitParam(name = "courseType", value = "课程类型", dataType = "String", paramType = "query"),
+            @ApiImplicitParam(name = "courseName", value = "项目名称(模糊查询)", dataType = "String", paramType = "query")
+    })
+    @GetMapping("/page")
+    public R<IPage<StoreStaffFitnessCourse>> getPage(
+            @RequestParam(defaultValue = "1") int pageNum,
+            @RequestParam(defaultValue = "10") int pageSize,
+            @RequestParam(required = false) Integer staffId,
+            @RequestParam(required = false) String courseType,
+            @RequestParam(required = false) String courseName) {
+        log.info("StoreStaffFitnessCourseController.getPage?pageNum={}, pageSize={}, staffId={}, courseType={}, courseName={}",
+                pageNum, pageSize, staffId, courseType, courseName);
+        IPage<StoreStaffFitnessCourse> page = storeStaffFitnessCourseService.getPage(pageNum, pageSize, staffId, courseType, courseName);
+        return R.data(page);
+    }
+
+    @ApiOperation("批量删除运动健身员工课程")
+    @ApiOperationSupport(order = 6)
+    @PostMapping("/batchDelete")
+    public R<String> deleteBatch(@RequestBody List<Integer> ids) {
+        log.info("StoreStaffFitnessCourseController.deleteBatch?ids={}", ids);
+        if (ids == null || ids.isEmpty()) {
+            return R.fail("ID列表不能为空");
+        }
+        boolean result = storeStaffFitnessCourseService.deleteBatch(ids);
+        if (result) {
+            return R.success("批量删除成功");
+        }
+        return R.fail("批量删除失败");
+    }
+
+    @ApiOperation("根据员工ID查询课程列表")
+    @ApiOperationSupport(order = 7)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "staffId", value = "员工ID", dataType = "Integer", paramType = "query", required = true)
+    })
+    @GetMapping("/listByStaffId")
+    public R<List<StoreStaffFitnessCourse>> getListByStaffId(@RequestParam("staffId") Integer staffId) {
+        log.info("StoreStaffFitnessCourseController.getListByStaffId?staffId={}", staffId);
+        List<StoreStaffFitnessCourse> list = storeStaffFitnessCourseService.getListByStaffId(staffId);
+        return R.data(list);
+    }
+}
+

+ 142 - 0
alien-store/src/main/java/shop/alien/store/controller/StoreStaffFitnessExperienceController.java

@@ -0,0 +1,142 @@
+package shop.alien.store.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import io.swagger.annotations.*;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+import shop.alien.entity.result.R;
+import shop.alien.entity.store.StoreStaffFitnessExperience;
+import shop.alien.store.service.StoreStaffFitnessExperienceService;
+
+import java.util.List;
+
+/**
+ * 运动健身员工从业经历表 Controller
+ *
+ * @author system
+ * @since 2025-01-XX
+ */
+@Slf4j
+@Api(tags = {"运动健身员工从业经历管理"})
+@CrossOrigin
+@RestController
+@RequestMapping("/store/staff/fitness/experience")
+@RequiredArgsConstructor
+public class StoreStaffFitnessExperienceController {
+
+    private final StoreStaffFitnessExperienceService storeStaffFitnessExperienceService;
+
+    @ApiOperation("新增运动健身员工从业经历")
+    @ApiOperationSupport(order = 1)
+    @PostMapping
+    public R<String> saveExperience(@RequestBody StoreStaffFitnessExperience experience) {
+        log.info("StoreStaffFitnessExperienceController.saveExperience?experience={}", experience);
+        // 参数校验
+        if (experience.getStaffId() == null) {
+            return R.fail("员工ID不能为空");
+        }
+
+        R<StoreStaffFitnessExperience> result = storeStaffFitnessExperienceService.addStoreStaffFitnessExperience(experience);
+        if (result.getCode() == 200) {
+            return R.success("新增成功");
+        }
+        return R.fail(result.getMsg());
+    }
+
+    @ApiOperation("修改运动健身员工从业经历")
+    @ApiOperationSupport(order = 2)
+    @PutMapping
+    public R<String> updateExperience(@RequestBody StoreStaffFitnessExperience experience) {
+        log.info("StoreStaffFitnessExperienceController.updateExperience?experience={}", experience);
+        if (experience.getId() == null) {
+            return R.fail("ID不能为空");
+        }
+
+        R<StoreStaffFitnessExperience> result = storeStaffFitnessExperienceService.editStoreStaffFitnessExperience(experience);
+        if (result.getCode() == 200) {
+            return R.success("修改成功");
+        }
+        return R.fail(result.getMsg());
+    }
+
+    @ApiOperation("删除运动健身员工从业经历")
+    @ApiOperationSupport(order = 3)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "主键ID", dataType = "Integer", paramType = "path", required = true)
+    })
+    @DeleteMapping("/{id}")
+    public R<String> deleteExperience(@PathVariable("id") Integer id) {
+        log.info("StoreStaffFitnessExperienceController.deleteExperience?id={}", id);
+        R<Boolean> result = storeStaffFitnessExperienceService.deleteStoreStaffFitnessExperience(id);
+        if (result.getCode() == 200) {
+            return R.success("删除成功");
+        }
+        return R.fail(result.getMsg());
+    }
+
+    @ApiOperation("根据ID查询运动健身员工从业经历详情")
+    @ApiOperationSupport(order = 4)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "主键ID", dataType = "Integer", paramType = "path", required = true)
+    })
+    @GetMapping("/{id}")
+    public R<StoreStaffFitnessExperience> getById(@PathVariable("id") Integer id) {
+        log.info("StoreStaffFitnessExperienceController.getById?id={}", id);
+        R<StoreStaffFitnessExperience> result = storeStaffFitnessExperienceService.getStoreStaffFitnessExperienceById(id);
+        if (result.getCode() == 200 && result.getData() != null) {
+            return result;
+        }
+        return R.fail("未找到该从业经历信息");
+    }
+
+    @ApiOperation("分页查询运动健身员工从业经历列表")
+    @ApiOperationSupport(order = 5)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "pageNum", value = "页码", dataType = "int", paramType = "query", required = true),
+            @ApiImplicitParam(name = "pageSize", value = "页容", dataType = "int", paramType = "query", required = true),
+            @ApiImplicitParam(name = "staffId", value = "员工ID", dataType = "Integer", paramType = "query"),
+            @ApiImplicitParam(name = "workUnit", value = "工作单位(模糊查询)", dataType = "String", paramType = "query"),
+            @ApiImplicitParam(name = "workPosition", value = "职位(模糊查询)", dataType = "String", paramType = "query")
+    })
+    @GetMapping("/page")
+    public R<IPage<StoreStaffFitnessExperience>> getPage(
+            @RequestParam(defaultValue = "1") int pageNum,
+            @RequestParam(defaultValue = "10") int pageSize,
+            @RequestParam(required = false) Integer staffId,
+            @RequestParam(required = false) String workUnit,
+            @RequestParam(required = false) String workPosition) {
+        log.info("StoreStaffFitnessExperienceController.getPage?pageNum={}, pageSize={}, staffId={}, workUnit={}, workPosition={}",
+                pageNum, pageSize, staffId, workUnit, workPosition);
+        IPage<StoreStaffFitnessExperience> page = storeStaffFitnessExperienceService.getPage(pageNum, pageSize, staffId, workUnit, workPosition);
+        return R.data(page);
+    }
+
+    @ApiOperation("批量删除运动健身员工从业经历")
+    @ApiOperationSupport(order = 6)
+    @PostMapping("/batchDelete")
+    public R<String> deleteBatch(@RequestBody List<Integer> ids) {
+        log.info("StoreStaffFitnessExperienceController.deleteBatch?ids={}", ids);
+        if (ids == null || ids.isEmpty()) {
+            return R.fail("ID列表不能为空");
+        }
+        boolean result = storeStaffFitnessExperienceService.deleteBatch(ids);
+        if (result) {
+            return R.success("批量删除成功");
+        }
+        return R.fail("批量删除失败");
+    }
+
+    @ApiOperation("根据员工ID查询从业经历列表")
+    @ApiOperationSupport(order = 7)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "staffId", value = "员工ID", dataType = "Integer", paramType = "query", required = true)
+    })
+    @GetMapping("/listByStaffId")
+    public R<List<StoreStaffFitnessExperience>> getListByStaffId(@RequestParam("staffId") Integer staffId) {
+        log.info("StoreStaffFitnessExperienceController.getListByStaffId?staffId={}", staffId);
+        List<StoreStaffFitnessExperience> list = storeStaffFitnessExperienceService.getListByStaffId(staffId);
+        return R.data(list);
+    }
+}
+

+ 77 - 0
alien-store/src/main/java/shop/alien/store/service/StoreStaffFitnessBaseService.java

@@ -0,0 +1,77 @@
+package shop.alien.store.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import shop.alien.entity.result.R;
+import shop.alien.entity.store.StoreStaffFitnessBase;
+
+import java.util.List;
+
+/**
+ * 运动健身员工基本信息表 服务类
+ *
+ * @author system
+ * @since 2025-01-XX
+ */
+public interface StoreStaffFitnessBaseService extends IService<StoreStaffFitnessBase> {
+
+    /**
+     * 新增运动健身员工基本信息
+     *
+     * @param storeStaffFitnessBase 运动健身员工基本信息
+     * @return R<StoreStaffFitnessBase>
+     */
+    R<StoreStaffFitnessBase> addStoreStaffFitnessBase(StoreStaffFitnessBase storeStaffFitnessBase);
+
+    /**
+     * 编辑运动健身员工基本信息
+     *
+     * @param storeStaffFitnessBase 运动健身员工基本信息
+     * @return R<StoreStaffFitnessBase>
+     */
+    R<StoreStaffFitnessBase> editStoreStaffFitnessBase(StoreStaffFitnessBase storeStaffFitnessBase);
+
+    /**
+     * 删除运动健身员工基本信息
+     *
+     * @param id 主键
+     * @return R<Boolean>
+     */
+    R<Boolean> deleteStoreStaffFitnessBase(Integer id);
+
+    /**
+     * 根据ID查询运动健身员工基本信息
+     *
+     * @param id 主键
+     * @return R<StoreStaffFitnessBase>
+     */
+    R<StoreStaffFitnessBase> getStoreStaffFitnessBaseById(Integer id);
+
+    /**
+     * 根据员工ID查询基本信息
+     *
+     * @param staffId 员工id
+     * @return R<StoreStaffFitnessBase>
+     */
+    R<StoreStaffFitnessBase> getByStaffId(Integer staffId);
+
+    /**
+     * 分页查询运动健身员工基本信息列表
+     *
+     * @param pageNum  页码
+     * @param pageSize 页容
+     * @param staffId  员工id
+     * @param education 学历
+     * @return IPage<StoreStaffFitnessBase>
+     */
+    IPage<StoreStaffFitnessBase> getPage(int pageNum, int pageSize, Integer staffId, String education);
+
+    /**
+     * 批量删除运动健身员工基本信息(逻辑删除)
+     *
+     * @param ids 主键ID列表
+     * @return boolean
+     */
+    boolean deleteBatch(List<Integer> ids);
+}
+

+ 86 - 0
alien-store/src/main/java/shop/alien/store/service/StoreStaffFitnessCertificationService.java

@@ -0,0 +1,86 @@
+package shop.alien.store.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import shop.alien.entity.result.R;
+import shop.alien.entity.store.StoreStaffFitnessCertification;
+
+import java.util.List;
+
+/**
+ * 运动健身员工认证/荣誉表 服务类
+ *
+ * @author system
+ * @since 2025-01-XX
+ */
+public interface StoreStaffFitnessCertificationService extends IService<StoreStaffFitnessCertification> {
+
+    /**
+     * 新增运动健身员工认证/荣誉
+     *
+     * @param storeStaffFitnessCertification 运动健身员工认证/荣誉
+     * @return R<StoreStaffFitnessCertification>
+     */
+    R<StoreStaffFitnessCertification> addStoreStaffFitnessCertification(StoreStaffFitnessCertification storeStaffFitnessCertification);
+
+    /**
+     * 编辑运动健身员工认证/荣誉
+     *
+     * @param storeStaffFitnessCertification 运动健身员工认证/荣誉
+     * @return R<StoreStaffFitnessCertification>
+     */
+    R<StoreStaffFitnessCertification> editStoreStaffFitnessCertification(StoreStaffFitnessCertification storeStaffFitnessCertification);
+
+    /**
+     * 删除运动健身员工认证/荣誉
+     *
+     * @param id 主键
+     * @return R<Boolean>
+     */
+    R<Boolean> deleteStoreStaffFitnessCertification(Integer id);
+
+    /**
+     * 根据ID查询运动健身员工认证/荣誉
+     *
+     * @param id 主键
+     * @return R<StoreStaffFitnessCertification>
+     */
+    R<StoreStaffFitnessCertification> getStoreStaffFitnessCertificationById(Integer id);
+
+    /**
+     * 分页查询运动健身员工认证/荣誉列表
+     *
+     * @param pageNum  页码
+     * @param pageSize 页容
+     * @param staffId  员工id
+     * @param type     类型(1-认证 2-荣誉)
+     * @param name     名称(模糊查询)
+     * @return IPage<StoreStaffFitnessCertification>
+     */
+    IPage<StoreStaffFitnessCertification> getPage(int pageNum, int pageSize, Integer staffId, Integer type, String name);
+
+    /**
+     * 根据员工ID查询认证/荣誉列表
+     *
+     * @param staffId 员工id
+     * @return List<StoreStaffFitnessCertification>
+     */
+    List<StoreStaffFitnessCertification> getListByStaffId(Integer staffId);
+
+    /**
+     * 根据员工ID和类型查询认证/荣誉列表
+     *
+     * @param staffId 员工id
+     * @param type    类型(1-认证 2-荣誉)
+     * @return List<StoreStaffFitnessCertification>
+     */
+    List<StoreStaffFitnessCertification> getListByStaffIdAndType(Integer staffId, Integer type);
+
+    /**
+     * 批量删除运动健身员工认证/荣誉(逻辑删除)
+     *
+     * @param ids 主键ID列表
+     * @return boolean
+     */
+    boolean deleteBatch(List<Integer> ids);
+}

+ 78 - 0
alien-store/src/main/java/shop/alien/store/service/StoreStaffFitnessCourseService.java

@@ -0,0 +1,78 @@
+package shop.alien.store.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import shop.alien.entity.result.R;
+import shop.alien.entity.store.StoreStaffFitnessCourse;
+
+import java.util.List;
+
+/**
+ * 运动健身员工课程信息表 服务类
+ *
+ * @author system
+ * @since 2025-01-XX
+ */
+public interface StoreStaffFitnessCourseService extends IService<StoreStaffFitnessCourse> {
+
+    /**
+     * 新增运动健身员工课程
+     *
+     * @param storeStaffFitnessCourse 运动健身员工课程
+     * @return R<StoreStaffFitnessCourse>
+     */
+    R<StoreStaffFitnessCourse> addStoreStaffFitnessCourse(StoreStaffFitnessCourse storeStaffFitnessCourse);
+
+    /**
+     * 编辑运动健身员工课程
+     *
+     * @param storeStaffFitnessCourse 运动健身员工课程
+     * @return R<StoreStaffFitnessCourse>
+     */
+    R<StoreStaffFitnessCourse> editStoreStaffFitnessCourse(StoreStaffFitnessCourse storeStaffFitnessCourse);
+
+    /**
+     * 删除运动健身员工课程
+     *
+     * @param id 主键
+     * @return R<Boolean>
+     */
+    R<Boolean> deleteStoreStaffFitnessCourse(Integer id);
+
+    /**
+     * 根据ID查询运动健身员工课程
+     *
+     * @param id 主键
+     * @return R<StoreStaffFitnessCourse>
+     */
+    R<StoreStaffFitnessCourse> getStoreStaffFitnessCourseById(Integer id);
+
+    /**
+     * 分页查询运动健身员工课程列表
+     *
+     * @param pageNum  页码
+     * @param pageSize 页容
+     * @param staffId  员工id
+     * @param courseType 课程类型
+     * @param courseName 项目名称(模糊查询)
+     * @return IPage<StoreStaffFitnessCourse>
+     */
+    IPage<StoreStaffFitnessCourse> getPage(int pageNum, int pageSize, Integer staffId, String courseType, String courseName);
+
+    /**
+     * 根据员工ID查询课程列表
+     *
+     * @param staffId 员工id
+     * @return List<StoreStaffFitnessCourse>
+     */
+    List<StoreStaffFitnessCourse> getListByStaffId(Integer staffId);
+
+    /**
+     * 批量删除运动健身员工课程(逻辑删除)
+     *
+     * @param ids 主键ID列表
+     * @return boolean
+     */
+    boolean deleteBatch(List<Integer> ids);
+}
+

+ 78 - 0
alien-store/src/main/java/shop/alien/store/service/StoreStaffFitnessExperienceService.java

@@ -0,0 +1,78 @@
+package shop.alien.store.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import shop.alien.entity.result.R;
+import shop.alien.entity.store.StoreStaffFitnessExperience;
+
+import java.util.List;
+
+/**
+ * 运动健身员工从业经历表 服务类
+ *
+ * @author system
+ * @since 2025-01-XX
+ */
+public interface StoreStaffFitnessExperienceService extends IService<StoreStaffFitnessExperience> {
+
+    /**
+     * 新增运动健身员工从业经历
+     *
+     * @param storeStaffFitnessExperience 运动健身员工从业经历
+     * @return R<StoreStaffFitnessExperience>
+     */
+    R<StoreStaffFitnessExperience> addStoreStaffFitnessExperience(StoreStaffFitnessExperience storeStaffFitnessExperience);
+
+    /**
+     * 编辑运动健身员工从业经历
+     *
+     * @param storeStaffFitnessExperience 运动健身员工从业经历
+     * @return R<StoreStaffFitnessExperience>
+     */
+    R<StoreStaffFitnessExperience> editStoreStaffFitnessExperience(StoreStaffFitnessExperience storeStaffFitnessExperience);
+
+    /**
+     * 删除运动健身员工从业经历
+     *
+     * @param id 主键
+     * @return R<Boolean>
+     */
+    R<Boolean> deleteStoreStaffFitnessExperience(Integer id);
+
+    /**
+     * 根据ID查询运动健身员工从业经历
+     *
+     * @param id 主键
+     * @return R<StoreStaffFitnessExperience>
+     */
+    R<StoreStaffFitnessExperience> getStoreStaffFitnessExperienceById(Integer id);
+
+    /**
+     * 分页查询运动健身员工从业经历列表
+     *
+     * @param pageNum  页码
+     * @param pageSize 页容
+     * @param staffId  员工id
+     * @param workUnit 工作单位(模糊查询)
+     * @param workPosition 职位(模糊查询)
+     * @return IPage<StoreStaffFitnessExperience>
+     */
+    IPage<StoreStaffFitnessExperience> getPage(int pageNum, int pageSize, Integer staffId, String workUnit, String workPosition);
+
+    /**
+     * 根据员工ID查询从业经历列表
+     *
+     * @param staffId 员工id
+     * @return List<StoreStaffFitnessExperience>
+     */
+    List<StoreStaffFitnessExperience> getListByStaffId(Integer staffId);
+
+    /**
+     * 批量删除运动健身员工从业经历(逻辑删除)
+     *
+     * @param ids 主键ID列表
+     * @return boolean
+     */
+    boolean deleteBatch(List<Integer> ids);
+}
+

+ 24 - 24
alien-store/src/main/java/shop/alien/store/service/impl/BarPerformanceServiceImpl.java

@@ -54,7 +54,7 @@ public class BarPerformanceServiceImpl implements BarPerformanceService {
         if (barPerformance.getPerformanceName().length() > 20) {
             throw new IllegalArgumentException("演出名称长度不能超过20个字符");
         }
-        
+
         // 2. 演出海报验证:必填且限1张
         if (StringUtils.isEmpty(barPerformance.getPerformancePoster())) {
             throw new IllegalArgumentException("演出海报不能为空");
@@ -64,7 +64,7 @@ public class BarPerformanceServiceImpl implements BarPerformanceService {
         if (posterImages.length > 1) {
             throw new IllegalArgumentException("演出海报最多只能上传1张");
         }
-        
+
         // 3. 演出类型和频次的关联验证:特邀演出(0)只能选单次(0)
         if (barPerformance.getPerformanceType() != null && barPerformance.getPerformanceType() == 0) {
             // 特邀演出
@@ -72,13 +72,13 @@ public class BarPerformanceServiceImpl implements BarPerformanceService {
                 throw new IllegalArgumentException("特邀演出只能选择单次演出");
             }
         }
-        
+
         // 4. 演出频次相关验证
         String performanceFrequency = barPerformance.getPerformanceFrequency();
         if (StringUtils.isEmpty(performanceFrequency)) {
             throw new IllegalArgumentException("演出频次不能为空");
         }
-        
+
         // 获取今天的开始时间(用于时间验证)
         java.util.Calendar cal = java.util.Calendar.getInstance();
         cal.set(java.util.Calendar.HOUR_OF_DAY, 0);
@@ -86,7 +86,7 @@ public class BarPerformanceServiceImpl implements BarPerformanceService {
         cal.set(java.util.Calendar.SECOND, 0);
         cal.set(java.util.Calendar.MILLISECOND, 0);
         Date todayStart = cal.getTime();
-        
+
         switch (performanceFrequency) {
             case "0": // 单次演出
                 if (barPerformance.getSingleStartDatetime() == null) {
@@ -188,7 +188,7 @@ public class BarPerformanceServiceImpl implements BarPerformanceService {
         if (StringUtils.isNotEmpty(barPerformance.getPerformanceNotice()) && barPerformance.getPerformanceNotice().length() > 300) {
             throw new IllegalArgumentException("演出须知不能超过300个字符");
         }
-        
+
         // 7. 图文详情文字验证:限300字(如果有performanceContent字段)
         if (StringUtils.isNotEmpty(barPerformance.getPerformanceContent()) && barPerformance.getPerformanceContent().length() > 300) {
             throw new IllegalArgumentException("图文详情文字不能超过300个字符");
@@ -221,9 +221,9 @@ public class BarPerformanceServiceImpl implements BarPerformanceService {
             throw new IllegalArgumentException("内容审核未通过:" + failureReason);
         }
         log.info("酒吧演出内容审核通过");
-        
+
         Integer id = barPerformance.getId();
-        
+
         if (id == null || id == 0) {
             // 新增操作
             Date nowDate = new Date(System.currentTimeMillis());
@@ -296,11 +296,11 @@ public class BarPerformanceServiceImpl implements BarPerformanceService {
         if (id == null || id <= 0) {
             return null;
         }
-        
+
         QueryWrapper<BarPerformance> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("id", id);
         queryWrapper.eq("delete_flag", 0);
-        
+
         return barPerformanceMapper.selectOne(queryWrapper);
     }
 
@@ -318,11 +318,11 @@ public class BarPerformanceServiceImpl implements BarPerformanceService {
         if (id == null || onlineStatus == null) {
             return 0;
         }
-        
+
         LambdaUpdateWrapper<BarPerformance> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
         lambdaUpdateWrapper.eq(BarPerformance::getId, id);
         lambdaUpdateWrapper.set(BarPerformance::getOnlineStatus, onlineStatus);
-        
+
         return barPerformanceMapper.update(null, lambdaUpdateWrapper);
     }
 
@@ -346,16 +346,16 @@ public class BarPerformanceServiceImpl implements BarPerformanceService {
         if (page == null || size == null || storeId == null || storeId <= 0) {
             return new Page<>();
         }
-        
+
         IPage<BarPerformance> performancePage = new Page<>(page, size);
         QueryWrapper<BarPerformance> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("store_id", storeId);
-        
+
         // 按演出名称搜索(支持模糊搜索)
         if (StringUtils.isNotEmpty(performanceName)) {
             queryWrapper.like("performance_name", performanceName);
         }
-        
+
         // 按审核状态筛选(数据库字段 review_status)
         if (reviewStatus != null) {
             queryWrapper.eq("review_status", reviewStatus);
@@ -363,7 +363,7 @@ public class BarPerformanceServiceImpl implements BarPerformanceService {
             // 不查询草稿(review_status为null的记录)
             queryWrapper.isNotNull("review_status");
         }
-        
+
         // 按演出分类筛选
         if (StringUtils.isNotEmpty(category) && !"all".equals(category)) {
             Date now = new Date();
@@ -375,7 +375,7 @@ public class BarPerformanceServiceImpl implements BarPerformanceService {
             cal.set(java.util.Calendar.SECOND, 0);
             cal.set(java.util.Calendar.MILLISECOND, 0);
             Date todayStart = cal.getTime();
-            
+
             switch (category) {
                 case "not_started": // 未开始
                     queryWrapper.and(wrapper -> {
@@ -414,18 +414,18 @@ public class BarPerformanceServiceImpl implements BarPerformanceService {
                     break;
             }
         }
-        
+
         queryWrapper.eq("delete_flag", 0);
         // 按提交时间(创建时间)倒序排序
         queryWrapper.orderByDesc("created_time");
-        
+
         return barPerformanceMapper.selectPage(performancePage, queryWrapper);
     }
 
     /**
      * 比较两个时间(只比较时间部分,忽略日期部分)
      * 用于每天定时和每周定时演出的时间验证
-     * 
+     *
      * @param time1 开始时间
      * @param time2 结束时间
      * @return true表示time1早于time2,false表示time1晚于或等于time2
@@ -439,27 +439,27 @@ public class BarPerformanceServiceImpl implements BarPerformanceService {
         int hour1 = cal1.get(java.util.Calendar.HOUR_OF_DAY);
         int minute1 = cal1.get(java.util.Calendar.MINUTE);
         int second1 = cal1.get(java.util.Calendar.SECOND);
-        
+
         java.util.Calendar cal2 = java.util.Calendar.getInstance();
         cal2.setTime(time2);
         int hour2 = cal2.get(java.util.Calendar.HOUR_OF_DAY);
         int minute2 = cal2.get(java.util.Calendar.MINUTE);
         int second2 = cal2.get(java.util.Calendar.SECOND);
-        
+
         // 比较小时
         if (hour1 < hour2) {
             return true;
         } else if (hour1 > hour2) {
             return false;
         }
-        
+
         // 小时相同,比较分钟
         if (minute1 < minute2) {
             return true;
         } else if (minute1 > minute2) {
             return false;
         }
-        
+
         // 分钟相同,比较秒
         return second1 < second2;
     }

+ 139 - 0
alien-store/src/main/java/shop/alien/store/service/impl/StoreStaffFitnessBaseServiceImpl.java

@@ -0,0 +1,139 @@
+package shop.alien.store.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.StringUtils;
+import shop.alien.entity.result.R;
+import shop.alien.entity.store.StoreStaffFitnessBase;
+import shop.alien.mapper.StoreStaffFitnessBaseMapper;
+import shop.alien.store.service.StoreStaffFitnessBaseService;
+
+import java.util.List;
+
+/**
+ * 运动健身员工基本信息表 服务实现类
+ *
+ * @author system
+ * @since 2025-01-XX
+ */
+@Slf4j
+@Transactional
+@Service
+@RequiredArgsConstructor
+public class StoreStaffFitnessBaseServiceImpl extends ServiceImpl<StoreStaffFitnessBaseMapper, StoreStaffFitnessBase> implements StoreStaffFitnessBaseService {
+
+    @Override
+    public R<StoreStaffFitnessBase> addStoreStaffFitnessBase(StoreStaffFitnessBase storeStaffFitnessBase) {
+        log.info("StoreStaffFitnessBaseServiceImpl.addStoreStaffFitnessBase?storeStaffFitnessBase={}", storeStaffFitnessBase);
+        // 设置默认值
+        if (storeStaffFitnessBase.getDeleteFlag() == null) {
+            storeStaffFitnessBase.setDeleteFlag(0);
+        }
+        if (storeStaffFitnessBase.getCreatedUserId() == null) {
+            storeStaffFitnessBase.setCreatedUserId(0);
+        }
+        if (storeStaffFitnessBase.getUpdatedUserId() == null) {
+            storeStaffFitnessBase.setUpdatedUserId(0);
+        }
+
+        boolean result = this.save(storeStaffFitnessBase);
+        if (result) {
+            return R.data(storeStaffFitnessBase);
+        }
+        return R.fail("新增失败");
+    }
+
+    @Override
+    public R<StoreStaffFitnessBase> editStoreStaffFitnessBase(StoreStaffFitnessBase storeStaffFitnessBase) {
+        log.info("StoreStaffFitnessBaseServiceImpl.editStoreStaffFitnessBase?storeStaffFitnessBase={}", storeStaffFitnessBase);
+        if (storeStaffFitnessBase.getId() == null) {
+            log.error("更新运动健身员工基本信息失败:ID不能为空");
+            return R.fail("ID不能为空");
+        }
+
+        // 设置更新人
+        if (storeStaffFitnessBase.getUpdatedUserId() == null) {
+            storeStaffFitnessBase.setUpdatedUserId(0);
+        }
+
+        boolean result = this.updateById(storeStaffFitnessBase);
+        if (result) {
+            return R.data(storeStaffFitnessBase);
+        }
+        return R.fail("修改失败");
+    }
+
+    @Override
+    public R<Boolean> deleteStoreStaffFitnessBase(Integer id) {
+        log.info("StoreStaffFitnessBaseServiceImpl.deleteStoreStaffFitnessBase?id={}", id);
+        boolean result = this.removeById(id);
+        if (result) {
+            return R.success("删除成功");
+        }
+        return R.fail("删除失败");
+    }
+
+    @Override
+    public R<StoreStaffFitnessBase> getStoreStaffFitnessBaseById(Integer id) {
+        log.info("StoreStaffFitnessBaseServiceImpl.getStoreStaffFitnessBaseById?id={}", id);
+        StoreStaffFitnessBase storeStaffFitnessBase = this.getById(id);
+        if (storeStaffFitnessBase != null) {
+            return R.data(storeStaffFitnessBase);
+        }
+        return R.fail("查询失败,数据不存在");
+    }
+
+    @Override
+    public R<StoreStaffFitnessBase> getByStaffId(Integer staffId) {
+        log.info("StoreStaffFitnessBaseServiceImpl.getByStaffId?staffId={}", staffId);
+        if (staffId == null) {
+            return R.fail("员工ID不能为空");
+        }
+        LambdaQueryWrapper<StoreStaffFitnessBase> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(StoreStaffFitnessBase::getStaffId, staffId)
+                .orderByDesc(StoreStaffFitnessBase::getCreatedTime)
+                .last("LIMIT 1");
+        StoreStaffFitnessBase storeStaffFitnessBase = this.getOne(queryWrapper);
+        if (storeStaffFitnessBase != null) {
+            return R.data(storeStaffFitnessBase);
+        }
+        return R.fail("查询失败,数据不存在");
+    }
+
+    @Override
+    public IPage<StoreStaffFitnessBase> getPage(int pageNum, int pageSize, Integer staffId, String education) {
+        LambdaQueryWrapper<StoreStaffFitnessBase> queryWrapper = new LambdaQueryWrapper<>();
+
+        // 员工ID查询
+        if (staffId != null) {
+            queryWrapper.eq(StoreStaffFitnessBase::getStaffId, staffId);
+        }
+
+        // 学历查询
+        if (StringUtils.hasText(education)) {
+            queryWrapper.eq(StoreStaffFitnessBase::getEducation, education);
+        }
+
+        // 按创建时间倒序
+        queryWrapper.orderByDesc(StoreStaffFitnessBase::getCreatedTime);
+
+        return this.page(new Page<>(pageNum, pageSize), queryWrapper);
+    }
+
+    @Override
+    public boolean deleteBatch(List<Integer> ids) {
+        if (ids == null || ids.isEmpty()) {
+            log.error("批量删除运动健身员工基本信息失败:ID列表不能为空");
+            return false;
+        }
+        // 逻辑删除,MyBatis-Plus会自动处理
+        return this.removeByIds(ids);
+    }
+}
+

+ 151 - 0
alien-store/src/main/java/shop/alien/store/service/impl/StoreStaffFitnessCertificationServiceImpl.java

@@ -0,0 +1,151 @@
+package shop.alien.store.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.StringUtils;
+import shop.alien.entity.result.R;
+import shop.alien.entity.store.StoreStaffFitnessCertification;
+import shop.alien.mapper.StoreStaffFitnessCertificationMapper;
+import shop.alien.store.service.StoreStaffFitnessCertificationService;
+
+import java.util.List;
+
+/**
+ * 运动健身员工认证/荣誉表 服务实现类
+ *
+ * @author system
+ * @since 2025-01-XX
+ */
+@Slf4j
+@Transactional
+@Service
+@RequiredArgsConstructor
+public class StoreStaffFitnessCertificationServiceImpl extends ServiceImpl<StoreStaffFitnessCertificationMapper, StoreStaffFitnessCertification> implements StoreStaffFitnessCertificationService {
+
+    @Override
+    public R<StoreStaffFitnessCertification> addStoreStaffFitnessCertification(StoreStaffFitnessCertification storeStaffFitnessCertification) {
+        log.info("StoreStaffFitnessCertificationServiceImpl.addStoreStaffFitnessCertification?storeStaffFitnessCertification={}", storeStaffFitnessCertification);
+        // 设置默认值
+        if (storeStaffFitnessCertification.getDeleteFlag() == null) {
+            storeStaffFitnessCertification.setDeleteFlag(0);
+        }
+        if (storeStaffFitnessCertification.getCreatedUserId() == null) {
+            storeStaffFitnessCertification.setCreatedUserId(0);
+        }
+        if (storeStaffFitnessCertification.getUpdatedUserId() == null) {
+            storeStaffFitnessCertification.setUpdatedUserId(0);
+        }
+
+        boolean result = this.save(storeStaffFitnessCertification);
+        if (result) {
+            return R.data(storeStaffFitnessCertification);
+        }
+        return R.fail("新增失败");
+    }
+
+    @Override
+    public R<StoreStaffFitnessCertification> editStoreStaffFitnessCertification(StoreStaffFitnessCertification storeStaffFitnessCertification) {
+        log.info("StoreStaffFitnessCertificationServiceImpl.editStoreStaffFitnessCertification?storeStaffFitnessCertification={}", storeStaffFitnessCertification);
+        if (storeStaffFitnessCertification.getId() == null) {
+            log.error("更新运动健身员工认证/荣誉失败:ID不能为空");
+            return R.fail("ID不能为空");
+        }
+
+        // 设置更新人
+        if (storeStaffFitnessCertification.getUpdatedUserId() == null) {
+            storeStaffFitnessCertification.setUpdatedUserId(0);
+        }
+
+        boolean result = this.updateById(storeStaffFitnessCertification);
+        if (result) {
+            return R.data(storeStaffFitnessCertification);
+        }
+        return R.fail("修改失败");
+    }
+
+    @Override
+    public R<Boolean> deleteStoreStaffFitnessCertification(Integer id) {
+        log.info("StoreStaffFitnessCertificationServiceImpl.deleteStoreStaffFitnessCertification?id={}", id);
+        boolean result = this.removeById(id);
+        if (result) {
+            return R.success("删除成功");
+        }
+        return R.fail("删除失败");
+    }
+
+    @Override
+    public R<StoreStaffFitnessCertification> getStoreStaffFitnessCertificationById(Integer id) {
+        log.info("StoreStaffFitnessCertificationServiceImpl.getStoreStaffFitnessCertificationById?id={}", id);
+        StoreStaffFitnessCertification storeStaffFitnessCertification = this.getById(id);
+        if (storeStaffFitnessCertification != null) {
+            return R.data(storeStaffFitnessCertification);
+        }
+        return R.fail("查询失败,数据不存在");
+    }
+
+    @Override
+    public IPage<StoreStaffFitnessCertification> getPage(int pageNum, int pageSize, Integer staffId, Integer type, String name) {
+        LambdaQueryWrapper<StoreStaffFitnessCertification> queryWrapper = new LambdaQueryWrapper<>();
+
+        // 员工ID查询
+        if (staffId != null) {
+            queryWrapper.eq(StoreStaffFitnessCertification::getStaffId, staffId);
+        }
+
+        // 类型查询
+        if (type != null) {
+            queryWrapper.eq(StoreStaffFitnessCertification::getType, type);
+        }
+
+        // 名称模糊查询
+        if (StringUtils.hasText(name)) {
+            queryWrapper.like(StoreStaffFitnessCertification::getName, name);
+        }
+
+        // 按创建时间倒序
+        queryWrapper.orderByDesc(StoreStaffFitnessCertification::getCreatedTime);
+
+        return this.page(new Page<>(pageNum, pageSize), queryWrapper);
+    }
+
+    @Override
+    public List<StoreStaffFitnessCertification> getListByStaffId(Integer staffId) {
+        if (staffId == null) {
+            return null;
+        }
+        LambdaQueryWrapper<StoreStaffFitnessCertification> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(StoreStaffFitnessCertification::getStaffId, staffId)
+                .orderByDesc(StoreStaffFitnessCertification::getCreatedTime);
+        return this.list(queryWrapper);
+    }
+
+    @Override
+    public List<StoreStaffFitnessCertification> getListByStaffIdAndType(Integer staffId, Integer type) {
+        if (staffId == null) {
+            return null;
+        }
+        LambdaQueryWrapper<StoreStaffFitnessCertification> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(StoreStaffFitnessCertification::getStaffId, staffId);
+        if (type != null) {
+            queryWrapper.eq(StoreStaffFitnessCertification::getType, type);
+        }
+        queryWrapper.orderByDesc(StoreStaffFitnessCertification::getCreatedTime);
+        return this.list(queryWrapper);
+    }
+
+    @Override
+    public boolean deleteBatch(List<Integer> ids) {
+        if (ids == null || ids.isEmpty()) {
+            log.error("批量删除运动健身员工认证/荣誉失败:ID列表不能为空");
+            return false;
+        }
+        // 逻辑删除,MyBatis-Plus会自动处理
+        return this.removeByIds(ids);
+    }
+}

+ 138 - 0
alien-store/src/main/java/shop/alien/store/service/impl/StoreStaffFitnessCourseServiceImpl.java

@@ -0,0 +1,138 @@
+package shop.alien.store.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.StringUtils;
+import shop.alien.entity.result.R;
+import shop.alien.entity.store.StoreStaffFitnessCourse;
+import shop.alien.mapper.StoreStaffFitnessCourseMapper;
+import shop.alien.store.service.StoreStaffFitnessCourseService;
+
+import java.util.List;
+
+/**
+ * 运动健身员工课程信息表 服务实现类
+ *
+ * @author system
+ * @since 2025-01-XX
+ */
+@Slf4j
+@Transactional
+@Service
+@RequiredArgsConstructor
+public class StoreStaffFitnessCourseServiceImpl extends ServiceImpl<StoreStaffFitnessCourseMapper, StoreStaffFitnessCourse> implements StoreStaffFitnessCourseService {
+
+    @Override
+    public R<StoreStaffFitnessCourse> addStoreStaffFitnessCourse(StoreStaffFitnessCourse storeStaffFitnessCourse) {
+        log.info("StoreStaffFitnessCourseServiceImpl.addStoreStaffFitnessCourse?storeStaffFitnessCourse={}", storeStaffFitnessCourse);
+        // 设置默认值
+        if (storeStaffFitnessCourse.getDeleteFlag() == null) {
+            storeStaffFitnessCourse.setDeleteFlag(0);
+        }
+        if (storeStaffFitnessCourse.getCreatedUserId() == null) {
+            storeStaffFitnessCourse.setCreatedUserId(0);
+        }
+        if (storeStaffFitnessCourse.getUpdatedUserId() == null) {
+            storeStaffFitnessCourse.setUpdatedUserId(0);
+        }
+
+        boolean result = this.save(storeStaffFitnessCourse);
+        if (result) {
+            return R.data(storeStaffFitnessCourse);
+        }
+        return R.fail("新增失败");
+    }
+
+    @Override
+    public R<StoreStaffFitnessCourse> editStoreStaffFitnessCourse(StoreStaffFitnessCourse storeStaffFitnessCourse) {
+        log.info("StoreStaffFitnessCourseServiceImpl.editStoreStaffFitnessCourse?storeStaffFitnessCourse={}", storeStaffFitnessCourse);
+        if (storeStaffFitnessCourse.getId() == null) {
+            log.error("更新运动健身员工课程失败:ID不能为空");
+            return R.fail("ID不能为空");
+        }
+
+        // 设置更新人
+        if (storeStaffFitnessCourse.getUpdatedUserId() == null) {
+            storeStaffFitnessCourse.setUpdatedUserId(0);
+        }
+
+        boolean result = this.updateById(storeStaffFitnessCourse);
+        if (result) {
+            return R.data(storeStaffFitnessCourse);
+        }
+        return R.fail("修改失败");
+    }
+
+    @Override
+    public R<Boolean> deleteStoreStaffFitnessCourse(Integer id) {
+        log.info("StoreStaffFitnessCourseServiceImpl.deleteStoreStaffFitnessCourse?id={}", id);
+        boolean result = this.removeById(id);
+        if (result) {
+            return R.success("删除成功");
+        }
+        return R.fail("删除失败");
+    }
+
+    @Override
+    public R<StoreStaffFitnessCourse> getStoreStaffFitnessCourseById(Integer id) {
+        log.info("StoreStaffFitnessCourseServiceImpl.getStoreStaffFitnessCourseById?id={}", id);
+        StoreStaffFitnessCourse storeStaffFitnessCourse = this.getById(id);
+        if (storeStaffFitnessCourse != null) {
+            return R.data(storeStaffFitnessCourse);
+        }
+        return R.fail("查询失败,数据不存在");
+    }
+
+    @Override
+    public IPage<StoreStaffFitnessCourse> getPage(int pageNum, int pageSize, Integer staffId, String courseType, String courseName) {
+        LambdaQueryWrapper<StoreStaffFitnessCourse> queryWrapper = new LambdaQueryWrapper<>();
+
+        // 员工ID查询
+        if (staffId != null) {
+            queryWrapper.eq(StoreStaffFitnessCourse::getStaffId, staffId);
+        }
+
+        // 课程类型查询
+        if (StringUtils.hasText(courseType)) {
+            queryWrapper.eq(StoreStaffFitnessCourse::getCourseType, courseType);
+        }
+
+        // 项目名称模糊查询
+        if (StringUtils.hasText(courseName)) {
+            queryWrapper.like(StoreStaffFitnessCourse::getCourseName, courseName);
+        }
+
+        // 按创建时间倒序
+        queryWrapper.orderByDesc(StoreStaffFitnessCourse::getCreatedTime);
+
+        return this.page(new Page<>(pageNum, pageSize), queryWrapper);
+    }
+
+    @Override
+    public List<StoreStaffFitnessCourse> getListByStaffId(Integer staffId) {
+        if (staffId == null) {
+            return null;
+        }
+        LambdaQueryWrapper<StoreStaffFitnessCourse> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(StoreStaffFitnessCourse::getStaffId, staffId)
+                .orderByDesc(StoreStaffFitnessCourse::getCreatedTime);
+        return this.list(queryWrapper);
+    }
+
+    @Override
+    public boolean deleteBatch(List<Integer> ids) {
+        if (ids == null || ids.isEmpty()) {
+            log.error("批量删除运动健身员工课程失败:ID列表不能为空");
+            return false;
+        }
+        // 逻辑删除,MyBatis-Plus会自动处理
+        return this.removeByIds(ids);
+    }
+}
+

+ 138 - 0
alien-store/src/main/java/shop/alien/store/service/impl/StoreStaffFitnessExperienceServiceImpl.java

@@ -0,0 +1,138 @@
+package shop.alien.store.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.StringUtils;
+import shop.alien.entity.result.R;
+import shop.alien.entity.store.StoreStaffFitnessExperience;
+import shop.alien.mapper.StoreStaffFitnessExperienceMapper;
+import shop.alien.store.service.StoreStaffFitnessExperienceService;
+
+import java.util.List;
+
+/**
+ * 运动健身员工从业经历表 服务实现类
+ *
+ * @author system
+ * @since 2025-01-XX
+ */
+@Slf4j
+@Transactional
+@Service
+@RequiredArgsConstructor
+public class StoreStaffFitnessExperienceServiceImpl extends ServiceImpl<StoreStaffFitnessExperienceMapper, StoreStaffFitnessExperience> implements StoreStaffFitnessExperienceService {
+
+    @Override
+    public R<StoreStaffFitnessExperience> addStoreStaffFitnessExperience(StoreStaffFitnessExperience storeStaffFitnessExperience) {
+        log.info("StoreStaffFitnessExperienceServiceImpl.addStoreStaffFitnessExperience?storeStaffFitnessExperience={}", storeStaffFitnessExperience);
+        // 设置默认值
+        if (storeStaffFitnessExperience.getDeleteFlag() == null) {
+            storeStaffFitnessExperience.setDeleteFlag(0);
+        }
+        if (storeStaffFitnessExperience.getCreatedUserId() == null) {
+            storeStaffFitnessExperience.setCreatedUserId(0);
+        }
+        if (storeStaffFitnessExperience.getUpdatedUserId() == null) {
+            storeStaffFitnessExperience.setUpdatedUserId(0);
+        }
+
+        boolean result = this.save(storeStaffFitnessExperience);
+        if (result) {
+            return R.data(storeStaffFitnessExperience);
+        }
+        return R.fail("新增失败");
+    }
+
+    @Override
+    public R<StoreStaffFitnessExperience> editStoreStaffFitnessExperience(StoreStaffFitnessExperience storeStaffFitnessExperience) {
+        log.info("StoreStaffFitnessExperienceServiceImpl.editStoreStaffFitnessExperience?storeStaffFitnessExperience={}", storeStaffFitnessExperience);
+        if (storeStaffFitnessExperience.getId() == null) {
+            log.error("更新运动健身员工从业经历失败:ID不能为空");
+            return R.fail("ID不能为空");
+        }
+
+        // 设置更新人
+        if (storeStaffFitnessExperience.getUpdatedUserId() == null) {
+            storeStaffFitnessExperience.setUpdatedUserId(0);
+        }
+
+        boolean result = this.updateById(storeStaffFitnessExperience);
+        if (result) {
+            return R.data(storeStaffFitnessExperience);
+        }
+        return R.fail("修改失败");
+    }
+
+    @Override
+    public R<Boolean> deleteStoreStaffFitnessExperience(Integer id) {
+        log.info("StoreStaffFitnessExperienceServiceImpl.deleteStoreStaffFitnessExperience?id={}", id);
+        boolean result = this.removeById(id);
+        if (result) {
+            return R.success("删除成功");
+        }
+        return R.fail("删除失败");
+    }
+
+    @Override
+    public R<StoreStaffFitnessExperience> getStoreStaffFitnessExperienceById(Integer id) {
+        log.info("StoreStaffFitnessExperienceServiceImpl.getStoreStaffFitnessExperienceById?id={}", id);
+        StoreStaffFitnessExperience storeStaffFitnessExperience = this.getById(id);
+        if (storeStaffFitnessExperience != null) {
+            return R.data(storeStaffFitnessExperience);
+        }
+        return R.fail("查询失败,数据不存在");
+    }
+
+    @Override
+    public IPage<StoreStaffFitnessExperience> getPage(int pageNum, int pageSize, Integer staffId, String workUnit, String workPosition) {
+        LambdaQueryWrapper<StoreStaffFitnessExperience> queryWrapper = new LambdaQueryWrapper<>();
+
+        // 员工ID查询
+        if (staffId != null) {
+            queryWrapper.eq(StoreStaffFitnessExperience::getStaffId, staffId);
+        }
+
+        // 工作单位模糊查询
+        if (StringUtils.hasText(workUnit)) {
+            queryWrapper.like(StoreStaffFitnessExperience::getWorkUnit, workUnit);
+        }
+
+        // 职位模糊查询
+        if (StringUtils.hasText(workPosition)) {
+            queryWrapper.like(StoreStaffFitnessExperience::getWorkPosition, workPosition);
+        }
+
+        // 按开始时间倒序
+        queryWrapper.orderByDesc(StoreStaffFitnessExperience::getStartTime);
+
+        return this.page(new Page<>(pageNum, pageSize), queryWrapper);
+    }
+
+    @Override
+    public List<StoreStaffFitnessExperience> getListByStaffId(Integer staffId) {
+        if (staffId == null) {
+            return null;
+        }
+        LambdaQueryWrapper<StoreStaffFitnessExperience> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(StoreStaffFitnessExperience::getStaffId, staffId)
+                .orderByDesc(StoreStaffFitnessExperience::getStartTime);
+        return this.list(queryWrapper);
+    }
+
+    @Override
+    public boolean deleteBatch(List<Integer> ids) {
+        if (ids == null || ids.isEmpty()) {
+            log.error("批量删除运动健身员工从业经历失败:ID列表不能为空");
+            return false;
+        }
+        // 逻辑删除,MyBatis-Plus会自动处理
+        return this.removeByIds(ids);
+    }
+}
+