qxy 2 gün önce
ebeveyn
işleme
2d5d25f153
42 değiştirilmiş dosya ile 3748 ekleme ve 4 silme
  1. 142 0
      alien-entity/src/main/java/shop/alien/entity/store/BarPerformance.java
  2. 3 3
      alien-entity/src/main/java/shop/alien/entity/store/FitnessEquipmentInfo.java
  3. 98 0
      alien-entity/src/main/java/shop/alien/entity/store/StoreProductBar.java
  4. 1 1
      alien-entity/src/main/java/shop/alien/entity/store/StoreProductDelicacies.java
  5. 102 0
      alien-entity/src/main/java/shop/alien/entity/store/StoreProductGym.java
  6. 106 0
      alien-entity/src/main/java/shop/alien/entity/store/StoreProductItem.java
  7. 82 0
      alien-entity/src/main/java/shop/alien/entity/store/StoreStaffFitnessBase.java
  8. 69 0
      alien-entity/src/main/java/shop/alien/entity/store/StoreStaffFitnessCertification.java
  9. 79 0
      alien-entity/src/main/java/shop/alien/entity/store/StoreStaffFitnessCourse.java
  10. 76 0
      alien-entity/src/main/java/shop/alien/entity/store/StoreStaffFitnessExperience.java
  11. 19 0
      alien-entity/src/main/java/shop/alien/mapper/BarPerformanceMapper.java
  12. 19 0
      alien-entity/src/main/java/shop/alien/mapper/StoreProductBarMapper.java
  13. 19 0
      alien-entity/src/main/java/shop/alien/mapper/StoreProductGymMapper.java
  14. 19 0
      alien-entity/src/main/java/shop/alien/mapper/StoreProductItemMapper.java
  15. 19 0
      alien-entity/src/main/java/shop/alien/mapper/StoreStaffFitnessBaseMapper.java
  16. 19 0
      alien-entity/src/main/java/shop/alien/mapper/StoreStaffFitnessCertificationMapper.java
  17. 19 0
      alien-entity/src/main/java/shop/alien/mapper/StoreStaffFitnessCourseMapper.java
  18. 19 0
      alien-entity/src/main/java/shop/alien/mapper/StoreStaffFitnessExperienceMapper.java
  19. 132 0
      alien-store/src/main/java/shop/alien/store/controller/BarPerformanceController.java
  20. 185 0
      alien-store/src/main/java/shop/alien/store/controller/StoreProductBarController.java
  21. 170 0
      alien-store/src/main/java/shop/alien/store/controller/StoreProductGymController.java
  22. 126 0
      alien-store/src/main/java/shop/alien/store/controller/StoreProductItemController.java
  23. 143 0
      alien-store/src/main/java/shop/alien/store/controller/StoreStaffFitnessBaseController.java
  24. 162 0
      alien-store/src/main/java/shop/alien/store/controller/StoreStaffFitnessCertificationController.java
  25. 145 0
      alien-store/src/main/java/shop/alien/store/controller/StoreStaffFitnessCourseController.java
  26. 142 0
      alien-store/src/main/java/shop/alien/store/controller/StoreStaffFitnessExperienceController.java
  27. 47 0
      alien-store/src/main/java/shop/alien/store/service/BarPerformanceService.java
  28. 95 0
      alien-store/src/main/java/shop/alien/store/service/StoreProductBarService.java
  29. 87 0
      alien-store/src/main/java/shop/alien/store/service/StoreProductGymService.java
  30. 47 0
      alien-store/src/main/java/shop/alien/store/service/StoreProductItemService.java
  31. 77 0
      alien-store/src/main/java/shop/alien/store/service/StoreStaffFitnessBaseService.java
  32. 86 0
      alien-store/src/main/java/shop/alien/store/service/StoreStaffFitnessCertificationService.java
  33. 78 0
      alien-store/src/main/java/shop/alien/store/service/StoreStaffFitnessCourseService.java
  34. 78 0
      alien-store/src/main/java/shop/alien/store/service/StoreStaffFitnessExperienceService.java
  35. 65 0
      alien-store/src/main/java/shop/alien/store/service/impl/BarPerformanceServiceImpl.java
  36. 178 0
      alien-store/src/main/java/shop/alien/store/service/impl/StoreProductBarServiceImpl.java
  37. 164 0
      alien-store/src/main/java/shop/alien/store/service/impl/StoreProductGymServiceImpl.java
  38. 65 0
      alien-store/src/main/java/shop/alien/store/service/impl/StoreProductItemServiceImpl.java
  39. 139 0
      alien-store/src/main/java/shop/alien/store/service/impl/StoreStaffFitnessBaseServiceImpl.java
  40. 151 0
      alien-store/src/main/java/shop/alien/store/service/impl/StoreStaffFitnessCertificationServiceImpl.java
  41. 138 0
      alien-store/src/main/java/shop/alien/store/service/impl/StoreStaffFitnessCourseServiceImpl.java
  42. 138 0
      alien-store/src/main/java/shop/alien/store/service/impl/StoreStaffFitnessExperienceServiceImpl.java

+ 142 - 0
alien-entity/src/main/java/shop/alien/entity/store/BarPerformance.java

@@ -0,0 +1,142 @@
+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("bar_performance")
+@ApiModel(value = "BarPerformance对象", description = "酒吧演出表")
+public class BarPerformance implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "演出ID(主键)")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty(value = "父演出ID(关联本表id,null为顶级演出)")
+    @TableField("parent_id")
+    private Integer parentId;
+
+    @ApiModelProperty(value = "关联门店ID(关联store_info.id)")
+    @TableField("store_id")
+    private Integer storeId;
+
+    @ApiModelProperty(value = "表演嘉宾ids,逗号分隔")
+    @TableField("staff_config_ids")
+    private String staffConfigIds;
+
+    @ApiModelProperty(value = "演出名称")
+    @TableField("performance_name")
+    private String performanceName;
+
+    @ApiModelProperty(value = "演出海报路径")
+    @TableField("performance_poster")
+    private String performancePoster;
+
+    @ApiModelProperty(value = "演出风格(字典表proficient_tag逗号分隔)")
+    @TableField("performance_style")
+    private String performanceStyle;
+
+    @ApiModelProperty(value = "演出类型(单选:0-特邀演出,1-常规演出)")
+    @TableField("performance_type")
+    private Integer performanceType;
+
+    @ApiModelProperty(value = "演出频次:0-单次 1-每天定时 2-每周定时")
+    @TableField("performance_frequency")
+    private String performanceFrequency;
+
+    @ApiModelProperty(value = "演出日期(0-周一,1-周二,2-周三,3-周四,4-周五,5-周六,6-周日,复选逗号分隔)")
+    @TableField("performance_week")
+    private String performanceWeek;
+
+    @ApiModelProperty(value = "演出日期开始时间")
+    @TableField("single_start_datetime")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date singleStartDatetime;
+
+    @ApiModelProperty(value = "演出日期结束时间")
+    @TableField("single_end_datetime")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date singleEndDatetime;
+
+    @ApiModelProperty(value = "演出时间开始日期")
+    @TableField("daily_start_date")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date dailyStartDate;
+
+    @ApiModelProperty(value = "演出时间结束日期")
+    @TableField("daily_end_date")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date dailyEndDate;
+
+    @ApiModelProperty(value = "图片")
+    @TableField("performance_detail")
+    private String performanceDetail;
+
+    @ApiModelProperty(value = "演出完整详情")
+    @TableField("performance_content")
+    private String performanceContent;
+
+    @ApiModelProperty(value = "演出须知(限300字)")
+    @TableField("performance_notice")
+    private String performanceNotice;
+
+    @ApiModelProperty(value = "状态:0-待审核 1-审核通过 2-审核拒绝")
+    @TableField("status_Review")
+    private Integer statusReview;
+
+    @ApiModelProperty(value = "审核拒绝原因")
+    @TableField("reject_reason")
+    private String rejectReason;
+
+    @ApiModelProperty(value = "删除标记:0-未删除,1-已删除")
+    @TableField("delete_flag")
+    @TableLogic
+    private Integer deleteFlag;
+
+    @ApiModelProperty(value = "隐藏标记:0-不隐藏,1-隐藏")
+    @TableField("hidden")
+    private Integer hidden;
+
+    @ApiModelProperty(value = "上线状态:0-下线,1-上线")
+    @TableField("online_status")
+    private Integer onlineStatus;
+
+    @ApiModelProperty(value = "状态:0禁用,1启用")
+    @TableField("status")
+    private Integer status;
+
+    @ApiModelProperty(value = "创建人")
+    @TableField("created_user_id")
+    private Long createdUserId;
+
+    @ApiModelProperty(value = "更新人")
+    @TableField("updated_user_id")
+    private Long updatedUserId;
+
+    @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;
+}
+

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

@@ -79,16 +79,16 @@ public class FitnessEquipmentInfo implements Serializable {
     private Date createdTime;
 
     @ApiModelProperty(value = "创建人ID")
-    @TableField(value = "created_user_id", fill = FieldFill.INSERT)
+    @TableField("created_user_id")
     private Integer createdUserId;
 
     @ApiModelProperty(value = "修改时间")
-    @TableField(value = "updated_time", fill = FieldFill.INSERT_UPDATE)
+    @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(value = "updated_user_id", fill = FieldFill.INSERT_UPDATE)
+    @TableField("updated_user_id")
     private Integer updatedUserId;
 }
 

+ 98 - 0
alien-entity/src/main/java/shop/alien/entity/store/StoreProductBar.java

@@ -0,0 +1,98 @@
+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.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 酒吧商品表
+ *
+ * @author system
+ * @since 2025-01-XX
+ */
+@Data
+@JsonInclude
+@TableName("store_product_bar")
+@ApiModel(value = "StoreProductBar对象", description = "酒吧商品表")
+public class StoreProductBar implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "主键")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    @ApiModelProperty(value = "商品表主键")
+    @TableField("ext_id")
+    private Long extId;
+
+    @ApiModelProperty(value = "名称(酒水,餐食)")
+    @TableField("name")
+    private String name;
+
+    @ApiModelProperty(value = "价格(¥)")
+    @TableField("price")
+    private BigDecimal price;
+
+    @ApiModelProperty(value = "成本价(¥)")
+    @TableField("cost_price")
+    private BigDecimal costPrice;
+
+    @ApiModelProperty(value = "单位,如份/瓶/杯")
+    @TableField("unit")
+    private String unit;
+
+    @ApiModelProperty(value = "数量")
+    @TableField("quantity")
+    private Integer quantity;
+
+    @ApiModelProperty(value = "品类")
+    @TableField("category")
+    private String category;
+
+    @ApiModelProperty(value = "酒精度(%vol)")
+    @TableField("alcohol_vol")
+    private BigDecimal alcoholVol;
+
+    @ApiModelProperty(value = "酒水体积(ml)")
+    @TableField("volume_ml")
+    private Integer volumeMl;
+
+    @ApiModelProperty(value = "风味")
+    @TableField("flavor")
+    private String flavor;
+
+    @ApiModelProperty(value = "状态:0禁用,1启用")
+    @TableField("status")
+    private Integer status;
+
+    @ApiModelProperty(value = "删除标记, 0:未删除, 1:已删除")
+    @TableField("delete_flag")
+    @TableLogic
+    private Integer deleteFlag;
+
+    @ApiModelProperty(value = "创建人")
+    @TableField("created_user_id")
+    private Long createdUserId;
+
+    @ApiModelProperty(value = "更新人")
+    @TableField("updated_user_id")
+    private Long updatedUserId;
+
+    @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;
+}

+ 1 - 1
alien-entity/src/main/java/shop/alien/entity/store/StoreProductDelicacies.java

@@ -84,7 +84,7 @@ public class StoreProductDelicacies implements Serializable {
     private Date createdTime;
 
     @ApiModelProperty(value = "更新时间")
-    @TableField(value = "updated_time", fill = FieldFill.INSERT_UPDATE)
+    @TableField(value = "updated_time", fill = FieldFill.UPDATE)
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date updatedTime;
 }

+ 102 - 0
alien-entity/src/main/java/shop/alien/entity/store/StoreProductGym.java

@@ -0,0 +1,102 @@
+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.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 运动健身商品表
+ *
+ * @author system
+ * @since 2025-01-XX
+ */
+@Data
+@JsonInclude
+@TableName("store_product_gym")
+@ApiModel(value = "StoreProductGym对象", description = "运动健身商品表")
+public class StoreProductGym implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "主键")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    @ApiModelProperty(value = "商品表主键")
+    @TableField("ext_id")
+    private Long extId;
+
+    @ApiModelProperty(value = "名称")
+    @TableField("name")
+    private String name;
+
+    @ApiModelProperty(value = "上课形式,如一对一/小班课")
+    @TableField("class_mode")
+    private String classMode;
+
+    @ApiModelProperty(value = "可用周期(天)")
+    @TableField("available_days")
+    private Integer availableDays;
+
+    @ApiModelProperty(value = "总课时数(节)")
+    @TableField("total_sessions")
+    private Integer totalSessions;
+
+    @ApiModelProperty(value = "价格(¥)")
+    @TableField("price")
+    private BigDecimal price;
+
+    @ApiModelProperty(value = "课程功效")
+    @TableField("course_effect")
+    private String courseEffect;
+
+    @ApiModelProperty(value = "适用人群")
+    @TableField("suitable_people")
+    private String suitablePeople;
+
+    @ApiModelProperty(value = "适用会员")
+    @TableField("suitable_membership")
+    private String suitableMembership;
+
+    @ApiModelProperty(value = "淋浴设施")
+    @TableField("shower_facility")
+    private String showerFacility;
+
+    @ApiModelProperty(value = "额外须知")
+    @TableField("extra_notice")
+    private String extraNotice;
+
+    @ApiModelProperty(value = "状态:0禁用,1启用")
+    @TableField("status")
+    private Integer status;
+
+    @ApiModelProperty(value = "删除标记, 0:未删除, 1:已删除")
+    @TableField("delete_flag")
+    @TableLogic
+    private Integer deleteFlag;
+
+    @ApiModelProperty(value = "创建人")
+    @TableField("created_user_id")
+    private Long createdUserId;
+
+    @ApiModelProperty(value = "更新人")
+    @TableField("updated_user_id")
+    private Long updatedUserId;
+
+    @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;
+}

+ 106 - 0
alien-entity/src/main/java/shop/alien/entity/store/StoreProductItem.java

@@ -0,0 +1,106 @@
+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_product_item")
+@ApiModel(value = "StoreProductItem对象", description = "商品表")
+public class StoreProductItem implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "主键")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    @ApiModelProperty(value = "父id")
+    @TableField("pid")
+    private Long pid;
+
+    @ApiModelProperty(value = "门店id")
+    @TableField("store_id")
+    private Integer storeId;
+
+    @ApiModelProperty(value = "商品名称")
+    @TableField("prod_name")
+    private String prodName;
+
+    @ApiModelProperty(value = "商品类型,整型枚举:1酒吧-酒水 2酒吧-餐食 3美食-餐食 4运动健身-单次 5运动健身-多次")
+    @TableField("prod_type")
+    private Integer prodType;
+
+    @ApiModelProperty(value = "图片列表,最多 9 张 URL")
+    @TableField("images")
+    private String images;
+
+    @ApiModelProperty(value = "图文详情-图片")
+    @TableField("image_content")
+    private String imageContent;
+
+    @ApiModelProperty(value = "图文详情-文字")
+    @TableField("detail_content")
+    private String detailContent;
+
+    @ApiModelProperty(value = "补充说明")
+    @TableField("extra_note")
+    private String extraNote;
+
+    @ApiModelProperty(value = "是否需要预约:0=否,1=是")
+    @TableField("need_reserve")
+    private Integer needReserve;
+
+    @ApiModelProperty(value = "预约规则")
+    @TableField("reserve_rule")
+    private String reserveRule;
+
+    @ApiModelProperty(value = "适用人数")
+    @TableField("people_limit")
+    private Integer peopleLimit;
+
+    @ApiModelProperty(value = "使用规则")
+    @TableField("usage_rule")
+    private String usageRule;
+
+    @ApiModelProperty(value = "状态:0禁用,1启用")
+    @TableField("status")
+    private Integer status;
+
+    @ApiModelProperty(value = "删除标记, 0:未删除, 1:已删除")
+    @TableField("delete_flag")
+    @TableLogic
+    private Integer deleteFlag;
+
+    @ApiModelProperty(value = "创建人")
+    @TableField("created_user_id")
+    private Long createdUserId;
+
+    @ApiModelProperty(value = "更新人")
+    @TableField("updated_user_id")
+    private Long updatedUserId;
+
+    @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;
+}
+

+ 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;
+}

+ 79 - 0
alien-entity/src/main/java/shop/alien/entity/store/StoreStaffFitnessCourse.java

@@ -0,0 +1,79 @@
+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.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 运动健身员工课程信息表
+ *
+ * @author system
+ * @since 2025-01-XX
+ */
+@Data
+@JsonInclude
+@TableName("store_staff_fitness_course")
+@ApiModel(value = "StoreStaffFitnessCourse对象", description = "运动健身员工课程信息表")
+public class StoreStaffFitnessCourse 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("course_type")
+    private String courseType;
+
+    @ApiModelProperty(value = "项目名称")
+    @TableField("course_name")
+    private String courseName;
+
+    @ApiModelProperty(value = "价格类型(0-固定价 1-价格区间)")
+    @TableField("course_price_type")
+    private Integer coursePriceType;
+
+    @ApiModelProperty(value = "课程最低价格")
+    @TableField("course_min_price")
+    private BigDecimal courseMinPrice;
+
+    @ApiModelProperty(value = "课程最高价格")
+    @TableField("course_max_price")
+    private BigDecimal courseMaxPrice;
+
+    @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/StoreProductItemMapper.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.StoreProductItem;
+
+/**
+ * <p>
+ * 商品表 Mapper 接口
+ * </p>
+ *
+ * @author system
+ * @since 2025-01-XX
+ */
+@Mapper
+public interface StoreProductItemMapper extends BaseMapper<StoreProductItem> {
+
+}
+

+ 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> {
+
+}
+

+ 132 - 0
alien-store/src/main/java/shop/alien/store/controller/BarPerformanceController.java

@@ -0,0 +1,132 @@
+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.BarPerformance;
+import shop.alien.store.service.BarPerformanceService;
+import shop.alien.util.myBaticsPlus.QueryBuilder;
+
+import java.util.List;
+
+/**
+ * 酒吧演出表 前端控制器
+ *
+ * @author system
+ * @since 2025-01-XX
+ */
+@Slf4j
+@Api(tags = {"酒吧演出管理"})
+@CrossOrigin
+@RestController
+@RequestMapping("/barPerformance")
+@RequiredArgsConstructor
+public class BarPerformanceController {
+
+    private final BarPerformanceService barPerformanceService;
+
+    @ApiOperation("新增酒吧演出")
+    @ApiOperationSupport(order = 1)
+    @PostMapping("/add")
+    public R<BarPerformance> addBarPerformance(@RequestBody BarPerformance barPerformance) {
+        log.info("BarPerformanceController.addBarPerformance?barPerformance={}", barPerformance);
+        return barPerformanceService.addBarPerformance(barPerformance);
+    }
+
+    @ApiOperation("编辑酒吧演出")
+    @ApiOperationSupport(order = 2)
+    @PostMapping("/edit")
+    public R<BarPerformance> editBarPerformance(@RequestBody BarPerformance barPerformance) {
+        log.info("BarPerformanceController.editBarPerformance?barPerformance={}", barPerformance);
+        return barPerformanceService.editBarPerformance(barPerformance);
+    }
+
+    @ApiOperation("删除酒吧演出")
+    @ApiOperationSupport(order = 3)
+    @DeleteMapping("/delete")
+    public R<Boolean> deleteBarPerformance(@RequestParam(value = "id") Integer id) {
+        log.info("BarPerformanceController.deleteBarPerformance?id={}", id);
+        return barPerformanceService.deleteBarPerformance(id);
+    }
+
+    @ApiOperation("根据ID查询酒吧演出")
+    @ApiOperationSupport(order = 4)
+    @GetMapping("/getById")
+    public R<BarPerformance> getBarPerformanceById(@RequestParam(value = "id") Integer id) {
+        log.info("BarPerformanceController.getBarPerformanceById?id={}", id);
+        return barPerformanceService.getBarPerformanceById(id);
+    }
+
+    @ApiOperation("保存或更新酒吧演出")
+    @ApiOperationSupport(order = 5)
+    @PostMapping("/saveOrUpdate")
+    public R<BarPerformance> saveOrUpdate(@RequestBody BarPerformance barPerformance) {
+        log.info("BarPerformanceController.saveOrUpdate?barPerformance={}", barPerformance);
+        boolean result = barPerformanceService.saveOrUpdate(barPerformance);
+        if (result) {
+            return R.data(barPerformance);
+        }
+        return R.fail("操作失败");
+    }
+
+    @ApiOperation("通用列表查询")
+    @ApiOperationSupport(order = 6)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "演出ID", dataType = "Integer", paramType = "query"),
+            @ApiImplicitParam(name = "parentId", value = "父演出ID", dataType = "Integer", paramType = "query"),
+            @ApiImplicitParam(name = "storeId", value = "门店ID", dataType = "Integer", paramType = "query"),
+            @ApiImplicitParam(name = "performanceName", value = "演出名称", dataType = "String", paramType = "query"),
+            @ApiImplicitParam(name = "performanceType", value = "演出类型(0-特邀演出,1-常规演出)", dataType = "Integer", paramType = "query"),
+            @ApiImplicitParam(name = "performanceFrequency", value = "演出频次", dataType = "String", paramType = "query"),
+            @ApiImplicitParam(name = "statusReview", value = "审核状态(0-待审核 1-审核通过 2-审核拒绝)", dataType = "Integer", paramType = "query"),
+            @ApiImplicitParam(name = "hidden", value = "隐藏标记(0-不隐藏,1-隐藏)", dataType = "Integer", paramType = "query"),
+            @ApiImplicitParam(name = "onlineStatus", value = "上线状态(0-下线,1-上线)", dataType = "Integer", paramType = "query"),
+            @ApiImplicitParam(name = "status", value = "状态(0禁用,1启用)", dataType = "Integer", paramType = "query"),
+            @ApiImplicitParam(name = "createdTime_Start", value = "创建时间开始(范围查询)", dataType = "String", paramType = "query"),
+            @ApiImplicitParam(name = "createdTime_End", value = "创建时间结束(范围查询)", dataType = "String", paramType = "query")
+    })
+    @GetMapping("/getList")
+    public R<List<BarPerformance>> getList(@ModelAttribute BarPerformance barPerformance) {
+        log.info("BarPerformanceController.getList?barPerformance={}", barPerformance);
+        List<BarPerformance> list = QueryBuilder.of(barPerformance)
+                .build()
+                .list(barPerformanceService);
+        return R.data(list);
+    }
+
+    @ApiOperation("通用分页查询")
+    @ApiOperationSupport(order = 7)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "page", value = "页数(默认1)", dataType = "int", paramType = "query"),
+            @ApiImplicitParam(name = "size", value = "页容(默认10)", dataType = "int", paramType = "query"),
+            @ApiImplicitParam(name = "id", value = "演出ID", dataType = "Integer", paramType = "query"),
+            @ApiImplicitParam(name = "parentId", value = "父演出ID", dataType = "Integer", paramType = "query"),
+            @ApiImplicitParam(name = "storeId", value = "门店ID", dataType = "Integer", paramType = "query"),
+            @ApiImplicitParam(name = "performanceName", value = "演出名称", dataType = "String", paramType = "query"),
+            @ApiImplicitParam(name = "performanceType", value = "演出类型(0-特邀演出,1-常规演出)", dataType = "Integer", paramType = "query"),
+            @ApiImplicitParam(name = "performanceFrequency", value = "演出频次", dataType = "String", paramType = "query"),
+            @ApiImplicitParam(name = "statusReview", value = "审核状态(0-待审核 1-审核通过 2-审核拒绝)", dataType = "Integer", paramType = "query"),
+            @ApiImplicitParam(name = "hidden", value = "隐藏标记(0-不隐藏,1-隐藏)", dataType = "Integer", paramType = "query"),
+            @ApiImplicitParam(name = "onlineStatus", value = "上线状态(0-下线,1-上线)", dataType = "Integer", paramType = "query"),
+            @ApiImplicitParam(name = "status", value = "状态(0禁用,1启用)", dataType = "Integer", paramType = "query"),
+            @ApiImplicitParam(name = "createdTime_Start", value = "创建时间开始(范围查询)", dataType = "String", paramType = "query"),
+            @ApiImplicitParam(name = "createdTime_End", value = "创建时间结束(范围查询)", dataType = "String", paramType = "query")
+    })
+    @GetMapping("/getPage")
+    public R<IPage<BarPerformance>> getPage(@ModelAttribute BarPerformance barPerformance,
+                                            @RequestParam(defaultValue = "1") int page,
+                                            @RequestParam(defaultValue = "10") int size) {
+        log.info("BarPerformanceController.getPage?barPerformance={},page={},size={}", barPerformance, page, size);
+        int pageNum = page > 0 ? page : 1;
+        int pageSize = size > 0 ? size : 10;
+        IPage<BarPerformance> pageResult = QueryBuilder.of(barPerformance)
+                .page(pageNum, pageSize)
+                .build()
+                .page(barPerformanceService);
+        return R.data(pageResult);
+    }
+}
+

+ 185 - 0
alien-store/src/main/java/shop/alien/store/controller/StoreProductBarController.java

@@ -0,0 +1,185 @@
+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.StoreProductBar;
+import shop.alien.store.service.StoreProductBarService;
+
+import java.util.List;
+
+/**
+ * 酒吧商品表 Controller
+ *
+ * @author system
+ * @since 2025-01-XX
+ */
+@Slf4j
+@Api(tags = {"酒吧商品管理"})
+@CrossOrigin
+@RestController
+@RequestMapping("/store/product/bar")
+@RequiredArgsConstructor
+public class StoreProductBarController {
+
+    private final StoreProductBarService storeProductBarService;
+
+    @ApiOperation("新增酒吧商品")
+    @ApiOperationSupport(order = 1)
+    @PostMapping
+    public R<String> saveBar(@RequestBody StoreProductBar bar) {
+        log.info("StoreProductBarController.saveBar?bar={}", bar);
+        // 参数校验
+        if (bar.getName() == null || bar.getName().trim().isEmpty()) {
+            return R.fail("名称不能为空");
+        }
+        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) {
+            return R.success("新增成功");
+        }
+        return R.fail(result.getMsg());
+    }
+
+    @ApiOperation("修改酒吧商品")
+    @ApiOperationSupport(order = 2)
+    @PutMapping
+    public R<String> updateBar(@RequestBody StoreProductBar bar) {
+        log.info("StoreProductBarController.updateBar?bar={}", bar);
+        if (bar.getId() == null) {
+            return R.fail("ID不能为空");
+        }
+
+        R<StoreProductBar> result = storeProductBarService.editStoreProductBar(bar);
+        if (result.getCode() == 200) {
+            return R.success("修改成功");
+        }
+        return R.fail(result.getMsg());
+    }
+
+    @ApiOperation("删除酒吧商品")
+    @ApiOperationSupport(order = 3)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "主键ID", dataType = "Long", paramType = "path", required = true)
+    })
+    @DeleteMapping("/{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) {
+            return R.success("删除成功");
+        }
+        return R.fail(result.getMsg());
+    }
+
+    @ApiOperation("根据ID查询酒吧商品详情")
+    @ApiOperationSupport(order = 4)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "主键ID", dataType = "Long", paramType = "path", required = true)
+    })
+    @GetMapping("/{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) {
+            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 = "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 = "Long", paramType = "query")
+    })
+    @GetMapping("/page")
+    public R<IPage<StoreProductBar>> getPage(
+            @RequestParam(defaultValue = "1") int pageNum,
+            @RequestParam(defaultValue = "10") int pageSize,
+            @RequestParam(required = false) String name,
+            @RequestParam(required = false) String category,
+            @RequestParam(required = false) Integer status,
+            @RequestParam(required = false) Long extId) {
+        log.info("StoreProductBarController.getPage?pageNum={}, pageSize={}, name={}, category={}, status={}, extId={}",
+                pageNum, pageSize, name, category, status, extId);
+        IPage<StoreProductBar> page = storeProductBarService.getPage(pageNum, pageSize, name, category, status, extId);
+        return R.data(page);
+    }
+
+    @ApiOperation("批量删除酒吧商品")
+    @ApiOperationSupport(order = 6)
+    @PostMapping("/batchDelete")
+    public R<String> deleteBatch(@RequestBody List<Long> ids) {
+        log.info("StoreProductBarController.deleteBatch?ids={}", ids);
+        if (ids == null || ids.isEmpty()) {
+            return R.fail("ID列表不能为空");
+        }
+        boolean result = storeProductBarService.deleteBatch(ids);
+        if (result) {
+            return R.success("批量删除成功");
+        }
+        return R.fail("批量删除失败");
+    }
+
+    @ApiOperation("更新酒吧商品状态")
+    @ApiOperationSupport(order = 7)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "主键ID", dataType = "Long", paramType = "path", required = true),
+            @ApiImplicitParam(name = "status", value = "状态(0:禁用,1:启用)", dataType = "Integer", paramType = "query", required = true)
+    })
+    @PutMapping("/{id}/status")
+    public R<String> updateStatus(
+            @PathVariable("id") Long id,
+            @RequestParam("status") Integer status) {
+        log.info("StoreProductBarController.updateStatus?id={}, status={}", id, status);
+        if (status == null || (status != 0 && status != 1)) {
+            return R.fail("状态值无效,只能为0或1");
+        }
+        boolean result = storeProductBarService.updateStatus(id, status);
+        if (result) {
+            return R.success("状态更新成功");
+        }
+        return R.fail("状态更新失败");
+    }
+
+    @ApiOperation("根据商品表主键查询酒吧商品列表")
+    @ApiOperationSupport(order = 8)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "extId", value = "商品表主键", dataType = "Long", paramType = "query", required = true)
+    })
+    @GetMapping("/listByExtId")
+    public R<List<StoreProductBar>> getListByExtId(@RequestParam("extId") Long extId) {
+        log.info("StoreProductBarController.getListByExtId?extId={}", extId);
+        List<StoreProductBar> list = storeProductBarService.getListByExtId(extId);
+        return R.data(list);
+    }
+
+    @ApiOperation("根据品类查询酒吧商品列表")
+    @ApiOperationSupport(order = 9)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "category", value = "品类", dataType = "String", paramType = "query", required = true)
+    })
+    @GetMapping("/listByCategory")
+    public R<List<StoreProductBar>> getListByCategory(@RequestParam("category") String category) {
+        log.info("StoreProductBarController.getListByCategory?category={}", category);
+        List<StoreProductBar> list = storeProductBarService.getListByCategory(category);
+        return R.data(list);
+    }
+}

+ 170 - 0
alien-store/src/main/java/shop/alien/store/controller/StoreProductGymController.java

@@ -0,0 +1,170 @@
+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.StoreProductGym;
+import shop.alien.store.service.StoreProductGymService;
+
+import java.util.List;
+
+/**
+ * 运动健身商品表 Controller
+ *
+ * @author system
+ * @since 2025-01-XX
+ */
+@Slf4j
+@Api(tags = {"运动健身商品管理"})
+@CrossOrigin
+@RestController
+@RequestMapping("/store/product/gym")
+@RequiredArgsConstructor
+public class StoreProductGymController {
+
+    private final StoreProductGymService storeProductGymService;
+
+    @ApiOperation("新增运动健身商品")
+    @ApiOperationSupport(order = 1)
+    @PostMapping
+    public R<String> saveGym(@RequestBody StoreProductGym gym) {
+        log.info("StoreProductGymController.saveGym?gym={}", gym);
+        // 参数校验
+        if (gym.getName() == null || gym.getName().trim().isEmpty()) {
+            return R.fail("名称不能为空");
+        }
+        if (gym.getClassMode() == null || gym.getClassMode().trim().isEmpty()) {
+            return R.fail("上课形式不能为空");
+        }
+        if (gym.getPrice() == null) {
+            return R.fail("价格不能为空");
+        }
+
+        R<StoreProductGym> result = storeProductGymService.addStoreProductGym(gym);
+        if (result.getCode() == 200) {
+            return R.success("新增成功");
+        }
+        return R.fail(result.getMsg());
+    }
+
+    @ApiOperation("修改运动健身商品")
+    @ApiOperationSupport(order = 2)
+    @PutMapping
+    public R<String> updateGym(@RequestBody StoreProductGym gym) {
+        log.info("StoreProductGymController.updateGym?gym={}", gym);
+        if (gym.getId() == null) {
+            return R.fail("ID不能为空");
+        }
+
+        R<StoreProductGym> result = storeProductGymService.editStoreProductGym(gym);
+        if (result.getCode() == 200) {
+            return R.success("修改成功");
+        }
+        return R.fail(result.getMsg());
+    }
+
+    @ApiOperation("删除运动健身商品")
+    @ApiOperationSupport(order = 3)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "主键ID", dataType = "Long", paramType = "path", required = true)
+    })
+    @DeleteMapping("/{id}")
+    public R<String> deleteGym(@PathVariable("id") Long id) {
+        log.info("StoreProductGymController.deleteGym?id={}", id);
+        R<Boolean> result = storeProductGymService.deleteStoreProductGym(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 = "Long", paramType = "path", required = true)
+    })
+    @GetMapping("/{id}")
+    public R<StoreProductGym> getById(@PathVariable("id") Long id) {
+        log.info("StoreProductGymController.getById?id={}", id);
+        R<StoreProductGym> result = storeProductGymService.getStoreProductGymById(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 = "name", value = "名称(模糊查询)", dataType = "String", paramType = "query"),
+            @ApiImplicitParam(name = "classMode", value = "上课形式", dataType = "String", paramType = "query"),
+            @ApiImplicitParam(name = "status", value = "状态(0:禁用,1:启用)", dataType = "Integer", paramType = "query"),
+            @ApiImplicitParam(name = "extId", value = "商品表主键", dataType = "Long", paramType = "query")
+    })
+    @GetMapping("/page")
+    public R<IPage<StoreProductGym>> getPage(
+            @RequestParam(defaultValue = "1") int pageNum,
+            @RequestParam(defaultValue = "10") int pageSize,
+            @RequestParam(required = false) String name,
+            @RequestParam(required = false) String classMode,
+            @RequestParam(required = false) Integer status,
+            @RequestParam(required = false) Long extId) {
+        log.info("StoreProductGymController.getPage?pageNum={}, pageSize={}, name={}, classMode={}, status={}, extId={}",
+                pageNum, pageSize, name, classMode, status, extId);
+        IPage<StoreProductGym> page = storeProductGymService.getPage(pageNum, pageSize, name, classMode, status, extId);
+        return R.data(page);
+    }
+
+    @ApiOperation("批量删除运动健身商品")
+    @ApiOperationSupport(order = 6)
+    @PostMapping("/batchDelete")
+    public R<String> deleteBatch(@RequestBody List<Long> ids) {
+        log.info("StoreProductGymController.deleteBatch?ids={}", ids);
+        if (ids == null || ids.isEmpty()) {
+            return R.fail("ID列表不能为空");
+        }
+        boolean result = storeProductGymService.deleteBatch(ids);
+        if (result) {
+            return R.success("批量删除成功");
+        }
+        return R.fail("批量删除失败");
+    }
+
+    @ApiOperation("更新运动健身商品状态")
+    @ApiOperationSupport(order = 7)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "主键ID", dataType = "Long", paramType = "path", required = true),
+            @ApiImplicitParam(name = "status", value = "状态(0:禁用,1:启用)", dataType = "Integer", paramType = "query", required = true)
+    })
+    @PutMapping("/{id}/status")
+    public R<String> updateStatus(
+            @PathVariable("id") Long id,
+            @RequestParam("status") Integer status) {
+        log.info("StoreProductGymController.updateStatus?id={}, status={}", id, status);
+        if (status == null || (status != 0 && status != 1)) {
+            return R.fail("状态值无效,只能为0或1");
+        }
+        boolean result = storeProductGymService.updateStatus(id, status);
+        if (result) {
+            return R.success("状态更新成功");
+        }
+        return R.fail("状态更新失败");
+    }
+
+    @ApiOperation("根据商品表主键查询运动健身商品列表")
+    @ApiOperationSupport(order = 8)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "extId", value = "商品表主键", dataType = "Long", paramType = "query", required = true)
+    })
+    @GetMapping("/listByExtId")
+    public R<List<StoreProductGym>> getListByExtId(@RequestParam("extId") Long extId) {
+        log.info("StoreProductGymController.getListByExtId?extId={}", extId);
+        List<StoreProductGym> list = storeProductGymService.getListByExtId(extId);
+        return R.data(list);
+    }
+}

+ 126 - 0
alien-store/src/main/java/shop/alien/store/controller/StoreProductItemController.java

@@ -0,0 +1,126 @@
+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.StoreProductItem;
+import shop.alien.store.service.StoreProductItemService;
+import shop.alien.util.myBaticsPlus.QueryBuilder;
+
+import java.util.List;
+
+/**
+ * 商品表 前端控制器
+ *
+ * @author system
+ * @since 2025-01-XX
+ */
+@Slf4j
+@Api(tags = {"商品管理"})
+@CrossOrigin
+@RestController
+@RequestMapping("/storeProductItem")
+@RequiredArgsConstructor
+public class StoreProductItemController {
+
+    private final StoreProductItemService storeProductItemService;
+
+    @ApiOperation("新增商品")
+    @ApiOperationSupport(order = 1)
+    @PostMapping("/add")
+    public R<StoreProductItem> addStoreProductItem(@RequestBody StoreProductItem storeProductItem) {
+        log.info("StoreProductItemController.addStoreProductItem?storeProductItem={}", storeProductItem);
+        return storeProductItemService.addStoreProductItem(storeProductItem);
+    }
+
+    @ApiOperation("编辑商品")
+    @ApiOperationSupport(order = 2)
+    @PostMapping("/edit")
+    public R<StoreProductItem> editStoreProductItem(@RequestBody StoreProductItem storeProductItem) {
+        log.info("StoreProductItemController.editStoreProductItem?storeProductItem={}", storeProductItem);
+        return storeProductItemService.editStoreProductItem(storeProductItem);
+    }
+
+    @ApiOperation("删除商品")
+    @ApiOperationSupport(order = 3)
+    @DeleteMapping("/delete")
+    public R<Boolean> deleteStoreProductItem(@RequestParam(value = "id") Long id) {
+        log.info("StoreProductItemController.deleteStoreProductItem?id={}", id);
+        return storeProductItemService.deleteStoreProductItem(id);
+    }
+
+    @ApiOperation("根据ID查询商品")
+    @ApiOperationSupport(order = 4)
+    @GetMapping("/getById")
+    public R<StoreProductItem> getStoreProductItemById(@RequestParam(value = "id") Long id) {
+        log.info("StoreProductItemController.getStoreProductItemById?id={}", id);
+        return storeProductItemService.getStoreProductItemById(id);
+    }
+
+    @ApiOperation("保存或更新商品")
+    @ApiOperationSupport(order = 5)
+    @PostMapping("/saveOrUpdate")
+    public R<StoreProductItem> saveOrUpdate(@RequestBody StoreProductItem storeProductItem) {
+        log.info("StoreProductItemController.saveOrUpdate?storeProductItem={}", storeProductItem);
+        boolean result = storeProductItemService.saveOrUpdate(storeProductItem);
+        if (result) {
+            return R.data(storeProductItem);
+        }
+        return R.fail("操作失败");
+    }
+
+    @ApiOperation("通用列表查询")
+    @ApiOperationSupport(order = 6)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "主键", dataType = "Long", paramType = "query"),
+            @ApiImplicitParam(name = "pid", value = "父id", dataType = "Long", paramType = "query"),
+            @ApiImplicitParam(name = "storeId", value = "门店id", dataType = "Integer", paramType = "query"),
+            @ApiImplicitParam(name = "prodName", value = "商品名称", dataType = "String", paramType = "query"),
+            @ApiImplicitParam(name = "prodType", value = "商品类型(1酒吧-酒水 2酒吧-餐食 3美食-餐食 4运动健身-单次 5运动健身-多次)", dataType = "Integer", paramType = "query"),
+            @ApiImplicitParam(name = "needReserve", value = "是否需要预约(0=否,1=是)", dataType = "Integer", paramType = "query"),
+            @ApiImplicitParam(name = "status", value = "状态(0禁用,1启用)", dataType = "Integer", paramType = "query"),
+            @ApiImplicitParam(name = "createdTime_Start", value = "创建时间开始(范围查询)", dataType = "String", paramType = "query"),
+            @ApiImplicitParam(name = "createdTime_End", value = "创建时间结束(范围查询)", dataType = "String", paramType = "query")
+    })
+    @GetMapping("/getList")
+    public R<List<StoreProductItem>> getList(@ModelAttribute StoreProductItem storeProductItem) {
+        log.info("StoreProductItemController.getList?storeProductItem={}", storeProductItem);
+        List<StoreProductItem> list = QueryBuilder.of(storeProductItem)
+                .build()
+                .list(storeProductItemService);
+        return R.data(list);
+    }
+
+    @ApiOperation("通用分页查询")
+    @ApiOperationSupport(order = 7)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "page", value = "页数(默认1)", dataType = "int", paramType = "query"),
+            @ApiImplicitParam(name = "size", value = "页容(默认10)", dataType = "int", paramType = "query"),
+            @ApiImplicitParam(name = "id", value = "主键", dataType = "Long", paramType = "query"),
+            @ApiImplicitParam(name = "pid", value = "父id", dataType = "Long", paramType = "query"),
+            @ApiImplicitParam(name = "storeId", value = "门店id", dataType = "Integer", paramType = "query"),
+            @ApiImplicitParam(name = "prodName", value = "商品名称", dataType = "String", paramType = "query"),
+            @ApiImplicitParam(name = "prodType", value = "商品类型(1酒吧-酒水 2酒吧-餐食 3美食-餐食 4运动健身-单次 5运动健身-多次)", dataType = "Integer", paramType = "query"),
+            @ApiImplicitParam(name = "needReserve", value = "是否需要预约(0=否,1=是)", dataType = "Integer", paramType = "query"),
+            @ApiImplicitParam(name = "status", value = "状态(0禁用,1启用)", dataType = "Integer", paramType = "query"),
+            @ApiImplicitParam(name = "createdTime_Start", value = "创建时间开始(范围查询)", dataType = "String", paramType = "query"),
+            @ApiImplicitParam(name = "createdTime_End", value = "创建时间结束(范围查询)", dataType = "String", paramType = "query")
+    })
+    @GetMapping("/getPage")
+    public R<IPage<StoreProductItem>> getPage(@ModelAttribute StoreProductItem storeProductItem,
+                                              @RequestParam(defaultValue = "1") int page,
+                                              @RequestParam(defaultValue = "10") int size) {
+        log.info("StoreProductItemController.getPage?storeProductItem={},page={},size={}", storeProductItem, page, size);
+        int pageNum = page > 0 ? page : 1;
+        int pageSize = size > 0 ? size : 10;
+        IPage<StoreProductItem> pageResult = QueryBuilder.of(storeProductItem)
+                .page(pageNum, pageSize)
+                .build()
+                .page(storeProductItemService);
+        return R.data(pageResult);
+    }
+}
+

+ 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);
+    }
+}
+

+ 47 - 0
alien-store/src/main/java/shop/alien/store/service/BarPerformanceService.java

@@ -0,0 +1,47 @@
+package shop.alien.store.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import shop.alien.entity.result.R;
+import shop.alien.entity.store.BarPerformance;
+
+/**
+ * 酒吧演出表 服务类
+ *
+ * @author system
+ * @since 2025-01-XX
+ */
+public interface BarPerformanceService extends IService<BarPerformance> {
+
+    /**
+     * 新增酒吧演出
+     *
+     * @param barPerformance 酒吧演出
+     * @return R<BarPerformance>
+     */
+    R<BarPerformance> addBarPerformance(BarPerformance barPerformance);
+
+    /**
+     * 编辑酒吧演出
+     *
+     * @param barPerformance 酒吧演出
+     * @return R<BarPerformance>
+     */
+    R<BarPerformance> editBarPerformance(BarPerformance barPerformance);
+
+    /**
+     * 删除酒吧演出
+     *
+     * @param id 主键
+     * @return R<Boolean>
+     */
+    R<Boolean> deleteBarPerformance(Integer id);
+
+    /**
+     * 根据ID查询酒吧演出
+     *
+     * @param id 主键
+     * @return R<BarPerformance>
+     */
+    R<BarPerformance> getBarPerformanceById(Integer id);
+}
+

+ 95 - 0
alien-store/src/main/java/shop/alien/store/service/StoreProductBarService.java

@@ -0,0 +1,95 @@
+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.StoreProductBar;
+
+import java.util.List;
+
+/**
+ * 酒吧商品表 服务类
+ *
+ * @author system
+ * @since 2025-01-XX
+ */
+public interface StoreProductBarService extends IService<StoreProductBar> {
+
+    /**
+     * 新增酒吧商品
+     *
+     * @param storeProductBar 酒吧商品
+     * @return R<StoreProductBar>
+     */
+    R<StoreProductBar> addStoreProductBar(StoreProductBar storeProductBar);
+
+    /**
+     * 编辑酒吧商品
+     *
+     * @param storeProductBar 酒吧商品
+     * @return R<StoreProductBar>
+     */
+    R<StoreProductBar> editStoreProductBar(StoreProductBar storeProductBar);
+
+    /**
+     * 删除酒吧商品
+     *
+     * @param id 主键
+     * @return R<Boolean>
+     */
+    R<Boolean> deleteStoreProductBar(Long id);
+
+    /**
+     * 根据ID查询酒吧商品
+     *
+     * @param id 主键
+     * @return R<StoreProductBar>
+     */
+    R<StoreProductBar> getStoreProductBarById(Long id);
+
+    /**
+     * 分页查询酒吧商品列表
+     *
+     * @param pageNum  页码
+     * @param pageSize 页容
+     * @param name     名称(模糊查询)
+     * @param category 品类
+     * @param status   状态(0:禁用,1:启用)
+     * @param extId    商品表主键
+     * @return IPage<StoreProductBar>
+     */
+    IPage<StoreProductBar> getPage(int pageNum, int pageSize, String name, String category, Integer status, Long extId);
+
+    /**
+     * 根据商品表主键查询酒吧商品列表
+     *
+     * @param extId 商品表主键
+     * @return List<StoreProductBar>
+     */
+    List<StoreProductBar> getListByExtId(Long extId);
+
+    /**
+     * 根据品类查询酒吧商品列表
+     *
+     * @param category 品类
+     * @return List<StoreProductBar>
+     */
+    List<StoreProductBar> getListByCategory(String category);
+
+    /**
+     * 更新酒吧商品状态
+     *
+     * @param id     主键ID
+     * @param status 状态(0:禁用,1:启用)
+     * @return boolean
+     */
+    boolean updateStatus(Long id, Integer status);
+
+    /**
+     * 批量删除酒吧商品(逻辑删除)
+     *
+     * @param ids 主键ID列表
+     * @return boolean
+     */
+    boolean deleteBatch(List<Long> ids);
+}

+ 87 - 0
alien-store/src/main/java/shop/alien/store/service/StoreProductGymService.java

@@ -0,0 +1,87 @@
+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.StoreProductGym;
+
+import java.util.List;
+
+/**
+ * 运动健身商品表 服务类
+ *
+ * @author system
+ * @since 2025-01-XX
+ */
+public interface StoreProductGymService extends IService<StoreProductGym> {
+
+    /**
+     * 新增运动健身商品
+     *
+     * @param storeProductGym 运动健身商品
+     * @return R<StoreProductGym>
+     */
+    R<StoreProductGym> addStoreProductGym(StoreProductGym storeProductGym);
+
+    /**
+     * 编辑运动健身商品
+     *
+     * @param storeProductGym 运动健身商品
+     * @return R<StoreProductGym>
+     */
+    R<StoreProductGym> editStoreProductGym(StoreProductGym storeProductGym);
+
+    /**
+     * 删除运动健身商品
+     *
+     * @param id 主键
+     * @return R<Boolean>
+     */
+    R<Boolean> deleteStoreProductGym(Long id);
+
+    /**
+     * 根据ID查询运动健身商品
+     *
+     * @param id 主键
+     * @return R<StoreProductGym>
+     */
+    R<StoreProductGym> getStoreProductGymById(Long id);
+
+    /**
+     * 分页查询运动健身商品列表
+     *
+     * @param pageNum  页码
+     * @param pageSize 页容
+     * @param name     名称(模糊查询)
+     * @param classMode 上课形式
+     * @param status   状态(0:禁用,1:启用)
+     * @param extId    商品表主键
+     * @return IPage<StoreProductGym>
+     */
+    IPage<StoreProductGym> getPage(int pageNum, int pageSize, String name, String classMode, Integer status, Long extId);
+
+    /**
+     * 根据商品表主键查询运动健身商品列表
+     *
+     * @param extId 商品表主键
+     * @return List<StoreProductGym>
+     */
+    List<StoreProductGym> getListByExtId(Long extId);
+
+    /**
+     * 更新运动健身商品状态
+     *
+     * @param id     主键ID
+     * @param status 状态(0:禁用,1:启用)
+     * @return boolean
+     */
+    boolean updateStatus(Long id, Integer status);
+
+    /**
+     * 批量删除运动健身商品(逻辑删除)
+     *
+     * @param ids 主键ID列表
+     * @return boolean
+     */
+    boolean deleteBatch(List<Long> ids);
+}

+ 47 - 0
alien-store/src/main/java/shop/alien/store/service/StoreProductItemService.java

@@ -0,0 +1,47 @@
+package shop.alien.store.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import shop.alien.entity.result.R;
+import shop.alien.entity.store.StoreProductItem;
+
+/**
+ * 商品表 服务类
+ *
+ * @author system
+ * @since 2025-01-XX
+ */
+public interface StoreProductItemService extends IService<StoreProductItem> {
+
+    /**
+     * 新增商品
+     *
+     * @param storeProductItem 商品
+     * @return R<StoreProductItem>
+     */
+    R<StoreProductItem> addStoreProductItem(StoreProductItem storeProductItem);
+
+    /**
+     * 编辑商品
+     *
+     * @param storeProductItem 商品
+     * @return R<StoreProductItem>
+     */
+    R<StoreProductItem> editStoreProductItem(StoreProductItem storeProductItem);
+
+    /**
+     * 删除商品
+     *
+     * @param id 主键
+     * @return R<Boolean>
+     */
+    R<Boolean> deleteStoreProductItem(Long id);
+
+    /**
+     * 根据ID查询商品
+     *
+     * @param id 主键
+     * @return R<StoreProductItem>
+     */
+    R<StoreProductItem> getStoreProductItemById(Long id);
+}
+

+ 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);
+}
+

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

@@ -0,0 +1,65 @@
+package shop.alien.store.service.impl;
+
+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 shop.alien.entity.result.R;
+import shop.alien.entity.store.BarPerformance;
+import shop.alien.mapper.BarPerformanceMapper;
+import shop.alien.store.service.BarPerformanceService;
+
+/**
+ * 酒吧演出表 服务实现类
+ *
+ * @author system
+ * @since 2025-01-XX
+ */
+@Slf4j
+@Transactional
+@Service
+@RequiredArgsConstructor
+public class BarPerformanceServiceImpl extends ServiceImpl<BarPerformanceMapper, BarPerformance> implements BarPerformanceService {
+
+    @Override
+    public R<BarPerformance> addBarPerformance(BarPerformance barPerformance) {
+        log.info("BarPerformanceServiceImpl.addBarPerformance?barPerformance={}", barPerformance);
+        boolean result = this.save(barPerformance);
+        if (result) {
+            return R.data(barPerformance);
+        }
+        return R.fail("新增失败");
+    }
+
+    @Override
+    public R<BarPerformance> editBarPerformance(BarPerformance barPerformance) {
+        log.info("BarPerformanceServiceImpl.editBarPerformance?barPerformance={}", barPerformance);
+        boolean result = this.updateById(barPerformance);
+        if (result) {
+            return R.data(barPerformance);
+        }
+        return R.fail("修改失败");
+    }
+
+    @Override
+    public R<Boolean> deleteBarPerformance(Integer id) {
+        log.info("BarPerformanceServiceImpl.deleteBarPerformance?id={}", id);
+        boolean result = this.removeById(id);
+        if (result) {
+            return R.success("删除成功");
+        }
+        return R.fail("删除失败");
+    }
+
+    @Override
+    public R<BarPerformance> getBarPerformanceById(Integer id) {
+        log.info("BarPerformanceServiceImpl.getBarPerformanceById?id={}", id);
+        BarPerformance barPerformance = this.getById(id);
+        if (barPerformance != null) {
+            return R.data(barPerformance);
+        }
+        return R.fail("查询失败,数据不存在");
+    }
+}
+

+ 178 - 0
alien-store/src/main/java/shop/alien/store/service/impl/StoreProductBarServiceImpl.java

@@ -0,0 +1,178 @@
+package shop.alien.store.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+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.StoreProductBar;
+import shop.alien.mapper.StoreProductBarMapper;
+import shop.alien.store.service.StoreProductBarService;
+
+import java.util.List;
+
+/**
+ * 酒吧商品表 服务实现类
+ *
+ * @author system
+ * @since 2025-01-XX
+ */
+@Slf4j
+@Transactional
+@Service
+@RequiredArgsConstructor
+public class StoreProductBarServiceImpl extends ServiceImpl<StoreProductBarMapper, StoreProductBar> implements StoreProductBarService {
+
+    @Override
+    public R<StoreProductBar> addStoreProductBar(StoreProductBar storeProductBar) {
+        log.info("StoreProductBarServiceImpl.addStoreProductBar?storeProductBar={}", storeProductBar);
+        // 设置默认值
+        if (storeProductBar.getUnit() == null || storeProductBar.getUnit().isEmpty()) {
+            storeProductBar.setUnit("份");
+        }
+        if (storeProductBar.getQuantity() == null) {
+            storeProductBar.setQuantity(0);
+        }
+        if (storeProductBar.getStatus() == null) {
+            storeProductBar.setStatus(1);
+        }
+        if (storeProductBar.getCreatedUserId() == null) {
+            storeProductBar.setCreatedUserId(0L);
+        }
+        if (storeProductBar.getUpdatedUserId() == null) {
+            storeProductBar.setUpdatedUserId(0L);
+        }
+
+        boolean result = this.save(storeProductBar);
+        if (result) {
+            return R.data(storeProductBar);
+        }
+        return R.fail("新增失败");
+    }
+
+    @Override
+    public R<StoreProductBar> editStoreProductBar(StoreProductBar storeProductBar) {
+        log.info("StoreProductBarServiceImpl.editStoreProductBar?storeProductBar={}", storeProductBar);
+        if (storeProductBar.getId() == null) {
+            log.error("更新酒吧商品失败:ID不能为空");
+            return R.fail("ID不能为空");
+        }
+
+        // 设置更新人
+        if (storeProductBar.getUpdatedUserId() == null) {
+            storeProductBar.setUpdatedUserId(0L);
+        }
+
+        boolean result = this.updateById(storeProductBar);
+        if (result) {
+            return R.data(storeProductBar);
+        }
+        return R.fail("修改失败");
+    }
+
+    @Override
+    public R<Boolean> deleteStoreProductBar(Long id) {
+        log.info("StoreProductBarServiceImpl.deleteStoreProductBar?id={}", id);
+        boolean result = this.removeById(id);
+        if (result) {
+            return R.success("删除成功");
+        }
+        return R.fail("删除失败");
+    }
+
+    @Override
+    public R<StoreProductBar> getStoreProductBarById(Long id) {
+        log.info("StoreProductBarServiceImpl.getStoreProductBarById?id={}", id);
+        StoreProductBar storeProductBar = this.getById(id);
+        if (storeProductBar != null) {
+            return R.data(storeProductBar);
+        }
+        return R.fail("查询失败,数据不存在");
+    }
+
+    @Override
+    public IPage<StoreProductBar> getPage(int pageNum, int pageSize, String name, String category, Integer status, Long extId) {
+        LambdaQueryWrapper<StoreProductBar> queryWrapper = new LambdaQueryWrapper<>();
+
+        // 名称模糊查询
+        if (StringUtils.hasText(name)) {
+            queryWrapper.like(StoreProductBar::getName, name);
+        }
+
+        // 品类查询
+        if (StringUtils.hasText(category)) {
+            queryWrapper.eq(StoreProductBar::getCategory, category);
+        }
+
+        // 状态查询
+        if (status != null) {
+            queryWrapper.eq(StoreProductBar::getStatus, status);
+        }
+
+        // 商品表主键查询
+        if (extId != null) {
+            queryWrapper.eq(StoreProductBar::getExtId, extId);
+        }
+
+        // 按创建时间倒序
+        queryWrapper.orderByDesc(StoreProductBar::getCreatedTime);
+
+        return this.page(new Page<>(pageNum, pageSize), queryWrapper);
+    }
+
+    @Override
+    public List<StoreProductBar> getListByExtId(Long extId) {
+        if (extId == null) {
+            return null;
+        }
+        LambdaQueryWrapper<StoreProductBar> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(StoreProductBar::getExtId, extId)
+                .orderByDesc(StoreProductBar::getCreatedTime);
+        return this.list(queryWrapper);
+    }
+
+    @Override
+    public List<StoreProductBar> getListByCategory(String category) {
+        if (!StringUtils.hasText(category)) {
+            return null;
+        }
+        LambdaQueryWrapper<StoreProductBar> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(StoreProductBar::getCategory, category)
+                .orderByDesc(StoreProductBar::getCreatedTime);
+        return this.list(queryWrapper);
+    }
+
+    @Override
+    public boolean updateStatus(Long id, Integer status) {
+        if (id == null) {
+            log.error("更新酒吧商品状态失败:ID不能为空");
+            return false;
+        }
+        if (status == null || (status != 0 && status != 1)) {
+            log.error("更新酒吧商品状态失败:状态值无效,只能为0或1");
+            return false;
+        }
+
+        LambdaUpdateWrapper<StoreProductBar> updateWrapper = new LambdaUpdateWrapper<>();
+        updateWrapper.eq(StoreProductBar::getId, id)
+                .set(StoreProductBar::getStatus, status);
+
+        return this.update(updateWrapper);
+    }
+
+    @Override
+    public boolean deleteBatch(List<Long> ids) {
+        if (ids == null || ids.isEmpty()) {
+            log.error("批量删除酒吧商品失败:ID列表不能为空");
+            return false;
+        }
+        // 逻辑删除,MyBatis-Plus会自动处理
+        return this.removeByIds(ids);
+    }
+}

+ 164 - 0
alien-store/src/main/java/shop/alien/store/service/impl/StoreProductGymServiceImpl.java

@@ -0,0 +1,164 @@
+package shop.alien.store.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+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.StoreProductGym;
+import shop.alien.mapper.StoreProductGymMapper;
+import shop.alien.store.service.StoreProductGymService;
+
+import java.util.List;
+
+/**
+ * 运动健身商品表 服务实现类
+ *
+ * @author system
+ * @since 2025-01-XX
+ */
+@Slf4j
+@Transactional
+@Service
+@RequiredArgsConstructor
+public class StoreProductGymServiceImpl extends ServiceImpl<StoreProductGymMapper, StoreProductGym> implements StoreProductGymService {
+
+    @Override
+    public R<StoreProductGym> addStoreProductGym(StoreProductGym storeProductGym) {
+        log.info("StoreProductGymServiceImpl.addStoreProductGym?storeProductGym={}", storeProductGym);
+        // 设置默认值
+        if (storeProductGym.getPrice() == null) {
+            storeProductGym.setPrice(new java.math.BigDecimal("0.00"));
+        }
+        if (storeProductGym.getStatus() == null) {
+            storeProductGym.setStatus(1);
+        }
+        if (storeProductGym.getCreatedUserId() == null) {
+            storeProductGym.setCreatedUserId(0L);
+        }
+        if (storeProductGym.getUpdatedUserId() == null) {
+            storeProductGym.setUpdatedUserId(0L);
+        }
+
+        boolean result = this.save(storeProductGym);
+        if (result) {
+            return R.data(storeProductGym);
+        }
+        return R.fail("新增失败");
+    }
+
+    @Override
+    public R<StoreProductGym> editStoreProductGym(StoreProductGym storeProductGym) {
+        log.info("StoreProductGymServiceImpl.editStoreProductGym?storeProductGym={}", storeProductGym);
+        if (storeProductGym.getId() == null) {
+            log.error("更新运动健身商品失败:ID不能为空");
+            return R.fail("ID不能为空");
+        }
+
+        // 设置更新人
+        if (storeProductGym.getUpdatedUserId() == null) {
+            storeProductGym.setUpdatedUserId(0L);
+        }
+
+        boolean result = this.updateById(storeProductGym);
+        if (result) {
+            return R.data(storeProductGym);
+        }
+        return R.fail("修改失败");
+    }
+
+    @Override
+    public R<Boolean> deleteStoreProductGym(Long id) {
+        log.info("StoreProductGymServiceImpl.deleteStoreProductGym?id={}", id);
+        boolean result = this.removeById(id);
+        if (result) {
+            return R.success("删除成功");
+        }
+        return R.fail("删除失败");
+    }
+
+    @Override
+    public R<StoreProductGym> getStoreProductGymById(Long id) {
+        log.info("StoreProductGymServiceImpl.getStoreProductGymById?id={}", id);
+        StoreProductGym storeProductGym = this.getById(id);
+        if (storeProductGym != null) {
+            return R.data(storeProductGym);
+        }
+        return R.fail("查询失败,数据不存在");
+    }
+
+    @Override
+    public IPage<StoreProductGym> getPage(int pageNum, int pageSize, String name, String classMode, Integer status, Long extId) {
+        LambdaQueryWrapper<StoreProductGym> queryWrapper = new LambdaQueryWrapper<>();
+
+        // 名称模糊查询
+        if (StringUtils.hasText(name)) {
+            queryWrapper.like(StoreProductGym::getName, name);
+        }
+
+        // 上课形式查询
+        if (StringUtils.hasText(classMode)) {
+            queryWrapper.eq(StoreProductGym::getClassMode, classMode);
+        }
+
+        // 状态查询
+        if (status != null) {
+            queryWrapper.eq(StoreProductGym::getStatus, status);
+        }
+
+        // 商品表主键查询
+        if (extId != null) {
+            queryWrapper.eq(StoreProductGym::getExtId, extId);
+        }
+
+        // 按创建时间倒序
+        queryWrapper.orderByDesc(StoreProductGym::getCreatedTime);
+
+        return this.page(new Page<>(pageNum, pageSize), queryWrapper);
+    }
+
+    @Override
+    public List<StoreProductGym> getListByExtId(Long extId) {
+        if (extId == null) {
+            return null;
+        }
+        LambdaQueryWrapper<StoreProductGym> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(StoreProductGym::getExtId, extId)
+                .orderByDesc(StoreProductGym::getCreatedTime);
+        return this.list(queryWrapper);
+    }
+
+    @Override
+    public boolean updateStatus(Long id, Integer status) {
+        if (id == null) {
+            log.error("更新运动健身商品状态失败:ID不能为空");
+            return false;
+        }
+        if (status == null || (status != 0 && status != 1)) {
+            log.error("更新运动健身商品状态失败:状态值无效,只能为0或1");
+            return false;
+        }
+
+        LambdaUpdateWrapper<StoreProductGym> updateWrapper = new LambdaUpdateWrapper<>();
+        updateWrapper.eq(StoreProductGym::getId, id)
+                .set(StoreProductGym::getStatus, status);
+
+        return this.update(updateWrapper);
+    }
+
+    @Override
+    public boolean deleteBatch(List<Long> ids) {
+        if (ids == null || ids.isEmpty()) {
+            log.error("批量删除运动健身商品失败:ID列表不能为空");
+            return false;
+        }
+        // 逻辑删除,MyBatis-Plus会自动处理
+        return this.removeByIds(ids);
+    }
+}

+ 65 - 0
alien-store/src/main/java/shop/alien/store/service/impl/StoreProductItemServiceImpl.java

@@ -0,0 +1,65 @@
+package shop.alien.store.service.impl;
+
+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 shop.alien.entity.result.R;
+import shop.alien.entity.store.StoreProductItem;
+import shop.alien.mapper.StoreProductItemMapper;
+import shop.alien.store.service.StoreProductItemService;
+
+/**
+ * 商品表 服务实现类
+ *
+ * @author system
+ * @since 2025-01-XX
+ */
+@Slf4j
+@Transactional
+@Service
+@RequiredArgsConstructor
+public class StoreProductItemServiceImpl extends ServiceImpl<StoreProductItemMapper, StoreProductItem> implements StoreProductItemService {
+
+    @Override
+    public R<StoreProductItem> addStoreProductItem(StoreProductItem storeProductItem) {
+        log.info("StoreProductItemServiceImpl.addStoreProductItem?storeProductItem={}", storeProductItem);
+        boolean result = this.save(storeProductItem);
+        if (result) {
+            return R.data(storeProductItem);
+        }
+        return R.fail("新增失败");
+    }
+
+    @Override
+    public R<StoreProductItem> editStoreProductItem(StoreProductItem storeProductItem) {
+        log.info("StoreProductItemServiceImpl.editStoreProductItem?storeProductItem={}", storeProductItem);
+        boolean result = this.updateById(storeProductItem);
+        if (result) {
+            return R.data(storeProductItem);
+        }
+        return R.fail("修改失败");
+    }
+
+    @Override
+    public R<Boolean> deleteStoreProductItem(Long id) {
+        log.info("StoreProductItemServiceImpl.deleteStoreProductItem?id={}", id);
+        boolean result = this.removeById(id);
+        if (result) {
+            return R.success("删除成功");
+        }
+        return R.fail("删除失败");
+    }
+
+    @Override
+    public R<StoreProductItem> getStoreProductItemById(Long id) {
+        log.info("StoreProductItemServiceImpl.getStoreProductItemById?id={}", id);
+        StoreProductItem storeProductItem = this.getById(id);
+        if (storeProductItem != null) {
+            return R.data(storeProductItem);
+        }
+        return R.fail("查询失败,数据不存在");
+    }
+}
+

+ 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);
+    }
+}
+