From ab2474b35975af523c39c422f40f48747489fdf8 Mon Sep 17 00:00:00 2001 From: liwentao Date: Mon, 4 May 2026 13:15:52 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E4=BC=9A=E5=91=98=E6=9F=A5?= =?UTF-8?q?=E7=9C=8B=E4=B8=AA=E4=BA=BA=E4=BF=A1=E6=81=AF=EF=BC=8C=E4=BC=9A?= =?UTF-8?q?=E5=91=98=E7=BC=96=E8=BE=91=E4=B8=AA=E4=BA=BA=E5=9F=BA=E7=A1=80?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E5=8A=9F=E8=83=BD=EF=BC=88=E8=A1=A5=E5=85=85?= =?UTF-8?q?=E9=81=97=E6=BC=8F=E7=9A=84=E6=9C=AA=E7=AE=A1=E7=90=86=E6=96=87?= =?UTF-8?q?=E4=BB=B6=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../db/entity/GymBodyMeasurementEntity.java | 297 +++++++++++++ .../manage/db/entity/GymCheckInEntity.java | 100 +++++ .../gym/manage/db/entity/GymMemberEntity.java | 409 ++++++++++++++++++ .../entity/GymMembershipCardTypeEntity.java | 116 +++++ .../sys/core/domain/GymBodyMeasurement.java | 235 ++++++++++ .../manage/sys/core/domain/GymCheckIn.java | 80 ++++ .../gym/manage/sys/core/domain/GymMember.java | 324 ++++++++++++++ .../core/domain/GymMembershipCardType.java | 91 ++++ 8 files changed, 1652 insertions(+) create mode 100644 gym-manage-api/manage-db/src/main/java/cn/novalon/gym/manage/db/entity/GymBodyMeasurementEntity.java create mode 100644 gym-manage-api/manage-db/src/main/java/cn/novalon/gym/manage/db/entity/GymCheckInEntity.java create mode 100644 gym-manage-api/manage-db/src/main/java/cn/novalon/gym/manage/db/entity/GymMemberEntity.java create mode 100644 gym-manage-api/manage-db/src/main/java/cn/novalon/gym/manage/db/entity/GymMembershipCardTypeEntity.java create mode 100644 gym-manage-api/manage-sys/src/main/java/cn/novalon/gym/manage/sys/core/domain/GymBodyMeasurement.java create mode 100644 gym-manage-api/manage-sys/src/main/java/cn/novalon/gym/manage/sys/core/domain/GymCheckIn.java create mode 100644 gym-manage-api/manage-sys/src/main/java/cn/novalon/gym/manage/sys/core/domain/GymMember.java create mode 100644 gym-manage-api/manage-sys/src/main/java/cn/novalon/gym/manage/sys/core/domain/GymMembershipCardType.java diff --git a/gym-manage-api/manage-db/src/main/java/cn/novalon/gym/manage/db/entity/GymBodyMeasurementEntity.java b/gym-manage-api/manage-db/src/main/java/cn/novalon/gym/manage/db/entity/GymBodyMeasurementEntity.java new file mode 100644 index 0000000..a465844 --- /dev/null +++ b/gym-manage-api/manage-db/src/main/java/cn/novalon/gym/manage/db/entity/GymBodyMeasurementEntity.java @@ -0,0 +1,297 @@ +package cn.novalon.gym.manage.db.entity; + +import org.springframework.data.relational.core.mapping.Column; +import org.springframework.data.relational.core.mapping.Table; + +import java.math.BigDecimal; +import java.time.LocalDate; + +/** + * 顾客体测记录表 + * + * @author 黎文涛 + * @date 2026-05-04 + */ +@Table("gym_body_measurement") +public class GymBodyMeasurementEntity extends BaseEntity { + + /** + * 会员ID + */ + @Column("member_id") + private Long memberId; + + /** + * 测量日期 + */ + @Column("measure_date") + private LocalDate measureDate; + + /** + * 身高(cm) + */ + @Column("height") + private BigDecimal height; + + /** + * 体重(kg) + */ + @Column("weight") + private BigDecimal weight; + + /** + * BMI指数 + */ + @Column("bmi") + private BigDecimal bmi; + + /** + * 体脂率(%) + */ + @Column("body_fat_percentage") + private BigDecimal bodyFatPercentage; + + /** + * 肌肉量(kg) + */ + @Column("muscle_mass") + private BigDecimal muscleMass; + + /** + * 水分量(kg) + */ + @Column("body_water") + private BigDecimal bodyWater; + + /** + * 骨量(kg) + */ + @Column("bone_mass") + private BigDecimal boneMass; + + /** + * 内脏脂肪等级 + */ + @Column("visceral_fat_level") + private Integer visceralFatLevel; + + /** + * 基础代谢(kcal) + */ + @Column("basal_metabolism") + private BigDecimal basalMetabolism; + + /** + * 腰围(cm) + */ + @Column("waist_circumference") + private BigDecimal waistCircumference; + + /** + * 臀围(cm) + */ + @Column("hip_circumference") + private BigDecimal hipCircumference; + + /** + * 胸围(cm) + */ + @Column("chest_circumference") + private BigDecimal chestCircumference; + + /** + * 臂围(cm) + */ + @Column("arm_circumference") + private BigDecimal armCircumference; + + /** + * 大腿围(cm) + */ + @Column("thigh_circumference") + private BigDecimal thighCircumference; + + /** + * 收缩压(mmHg) + */ + @Column("systolic_blood_pressure") + private Integer systolicBloodPressure; + + /** + * 舒张压(mmHg) + */ + @Column("diastolic_blood_pressure") + private Integer diastolicBloodPressure; + + /** + * 心率(次/分) + */ + @Column("heart_rate") + private Integer heartRate; + + /** + * 备注 + */ + @Column("remark") + private String remark; + + public Long getMemberId() { + return memberId; + } + + public void setMemberId(Long memberId) { + this.memberId = memberId; + } + + public LocalDate getMeasureDate() { + return measureDate; + } + + public void setMeasureDate(LocalDate measureDate) { + this.measureDate = measureDate; + } + + public BigDecimal getHeight() { + return height; + } + + public void setHeight(BigDecimal height) { + this.height = height; + } + + public BigDecimal getWeight() { + return weight; + } + + public void setWeight(BigDecimal weight) { + this.weight = weight; + } + + public BigDecimal getBmi() { + return bmi; + } + + public void setBmi(BigDecimal bmi) { + this.bmi = bmi; + } + + public BigDecimal getBodyFatPercentage() { + return bodyFatPercentage; + } + + public void setBodyFatPercentage(BigDecimal bodyFatPercentage) { + this.bodyFatPercentage = bodyFatPercentage; + } + + public BigDecimal getMuscleMass() { + return muscleMass; + } + + public void setMuscleMass(BigDecimal muscleMass) { + this.muscleMass = muscleMass; + } + + public BigDecimal getBodyWater() { + return bodyWater; + } + + public void setBodyWater(BigDecimal bodyWater) { + this.bodyWater = bodyWater; + } + + public BigDecimal getBoneMass() { + return boneMass; + } + + public void setBoneMass(BigDecimal boneMass) { + this.boneMass = boneMass; + } + + public Integer getVisceralFatLevel() { + return visceralFatLevel; + } + + public void setVisceralFatLevel(Integer visceralFatLevel) { + this.visceralFatLevel = visceralFatLevel; + } + + public BigDecimal getBasalMetabolism() { + return basalMetabolism; + } + + public void setBasalMetabolism(BigDecimal basalMetabolism) { + this.basalMetabolism = basalMetabolism; + } + + public BigDecimal getWaistCircumference() { + return waistCircumference; + } + + public void setWaistCircumference(BigDecimal waistCircumference) { + this.waistCircumference = waistCircumference; + } + + public BigDecimal getHipCircumference() { + return hipCircumference; + } + + public void setHipCircumference(BigDecimal hipCircumference) { + this.hipCircumference = hipCircumference; + } + + public BigDecimal getChestCircumference() { + return chestCircumference; + } + + public void setChestCircumference(BigDecimal chestCircumference) { + this.chestCircumference = chestCircumference; + } + + public BigDecimal getArmCircumference() { + return armCircumference; + } + + public void setArmCircumference(BigDecimal armCircumference) { + this.armCircumference = armCircumference; + } + + public BigDecimal getThighCircumference() { + return thighCircumference; + } + + public void setThighCircumference(BigDecimal thighCircumference) { + this.thighCircumference = thighCircumference; + } + + public Integer getSystolicBloodPressure() { + return systolicBloodPressure; + } + + public void setSystolicBloodPressure(Integer systolicBloodPressure) { + this.systolicBloodPressure = systolicBloodPressure; + } + + public Integer getDiastolicBloodPressure() { + return diastolicBloodPressure; + } + + public void setDiastolicBloodPressure(Integer diastolicBloodPressure) { + this.diastolicBloodPressure = diastolicBloodPressure; + } + + public Integer getHeartRate() { + return heartRate; + } + + public void setHeartRate(Integer heartRate) { + this.heartRate = heartRate; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } +} \ No newline at end of file diff --git a/gym-manage-api/manage-db/src/main/java/cn/novalon/gym/manage/db/entity/GymCheckInEntity.java b/gym-manage-api/manage-db/src/main/java/cn/novalon/gym/manage/db/entity/GymCheckInEntity.java new file mode 100644 index 0000000..763dbc2 --- /dev/null +++ b/gym-manage-api/manage-db/src/main/java/cn/novalon/gym/manage/db/entity/GymCheckInEntity.java @@ -0,0 +1,100 @@ +package cn.novalon.gym.manage.db.entity; + +import org.springframework.data.relational.core.mapping.Column; +import org.springframework.data.relational.core.mapping.Table; + +import java.time.LocalDateTime; + +/** + * 顾客签到记录表 + * + * @author 黎文涛 + * @date 2026-05-04 + */ +@Table("gym_check_in") +public class GymCheckInEntity extends BaseEntity { + + /** + * 会员ID + */ + @Column("member_id") + private Long memberId; + + /** + * 签到时间 + */ + @Column("check_in_time") + private LocalDateTime checkInTime; + + /** + * 签退时间 + */ + @Column("check_out_time") + private LocalDateTime checkOutTime; + + /** + * 签到类型(1刷卡 2扫码 3指纹 4人脸) + */ + @Column("check_in_type") + private String checkInType; + + /** + * 刷卡卡号 + */ + @Column("card_id") + private String cardId; + + /** + * 签到设备信息 + */ + @Column("device_info") + private String deviceInfo; + + public Long getMemberId() { + return memberId; + } + + public void setMemberId(Long memberId) { + this.memberId = memberId; + } + + public LocalDateTime getCheckInTime() { + return checkInTime; + } + + public void setCheckInTime(LocalDateTime checkInTime) { + this.checkInTime = checkInTime; + } + + public LocalDateTime getCheckOutTime() { + return checkOutTime; + } + + public void setCheckOutTime(LocalDateTime checkOutTime) { + this.checkOutTime = checkOutTime; + } + + public String getCheckInType() { + return checkInType; + } + + public void setCheckInType(String checkInType) { + this.checkInType = checkInType; + } + + public String getCardId() { + return cardId; + } + + public void setCardId(String cardId) { + this.cardId = cardId; + } + + public String getDeviceInfo() { + return deviceInfo; + } + + public void setDeviceInfo(String deviceInfo) { + this.deviceInfo = deviceInfo; + } +} \ No newline at end of file diff --git a/gym-manage-api/manage-db/src/main/java/cn/novalon/gym/manage/db/entity/GymMemberEntity.java b/gym-manage-api/manage-db/src/main/java/cn/novalon/gym/manage/db/entity/GymMemberEntity.java new file mode 100644 index 0000000..64db140 --- /dev/null +++ b/gym-manage-api/manage-db/src/main/java/cn/novalon/gym/manage/db/entity/GymMemberEntity.java @@ -0,0 +1,409 @@ +package cn.novalon.gym.manage.db.entity; + +import org.springframework.data.relational.core.mapping.Column; +import org.springframework.data.relational.core.mapping.Table; + +import java.math.BigDecimal; +import java.time.LocalDate; + +/** + * 健身房顾客用户表 + * + * @author 黎文涛 + * @date 2026-05-04 + */ +@Table("gym_member") +public class GymMemberEntity extends BaseEntity { + + /** + * 会员编号(唯一) + */ + @Column("member_no") + private String memberNo; + + /** + * 用户名(登录用) + */ + @Column("username") + private String username; + + /** + * 真实姓名 + */ + @Column("real_name") + private String realName; + + /** + * 性别(0男 1女 2未知) + */ + @Column("gender") + private String gender; + + /** + * 出生日期 + */ + @Column("birthday") + private LocalDate birthday; + + /** + * 手机号码 + */ + @Column("phone") + private String phone; + + /** + * 邮箱 + */ + @Column("email") + private String email; + + /** + * 身份证号 + */ + @Column("id_card") + private String idCard; + + /** + * 省份 + */ + @Column("province") + private String province; + + /** + * 城市 + */ + @Column("city") + private String city; + + /** + * 区县 + */ + @Column("district") + private String district; + + /** + * 详细地址 + */ + @Column("address") + private String address; + + /** + * 身高(cm) + */ + @Column("height") + private BigDecimal height; + + /** + * 体重(kg) + */ + @Column("weight") + private BigDecimal weight; + + /** + * BMI指数 + */ + @Column("bmi") + private BigDecimal bmi; + + /** + * 注册日期 + */ + @Column("registration_date") + private LocalDate registrationDate; + + /** + * 会员卡类型ID + */ + @Column("card_type_id") + private Long cardTypeId; + + /** + * 会员卡开始日期 + */ + @Column("card_start_date") + private LocalDate cardStartDate; + + /** + * 会员卡结束日期 + */ + @Column("card_end_date") + private LocalDate cardEndDate; + + /** + * 会员卡状态(0正常 1即将到期 2已过期 3冻结) + */ + @Column("card_status") + private String cardStatus; + + /** + * 剩余次数(次卡使用) + */ + @Column("remaining_times") + private Integer remainingTimes; + + /** + * 私教ID + */ + @Column("coach_id") + private Long coachId; + + /** + * 紧急联系人 + */ + @Column("emergency_contact") + private String emergencyContact; + + /** + * 紧急联系电话 + */ + @Column("emergency_phone") + private String emergencyPhone; + + /** + * 备注信息 + */ + @Column("remark") + private String remark; + + /** + * 用户状态(0正常 1停用 2黑名单) + */ + @Column("status") + private Integer status; + + /** + * 客户来源(如地推、转介绍、线上广告等) + */ + @Column("source") + private String source; + + /** + * 头像URL + */ + @Column("avatar_url") + private String avatarUrl; + + public String getMemberNo() { + return memberNo; + } + + public void setMemberNo(String memberNo) { + this.memberNo = memberNo; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getRealName() { + return realName; + } + + public void setRealName(String realName) { + this.realName = realName; + } + + public String getGender() { + return gender; + } + + public void setGender(String gender) { + this.gender = gender; + } + + public LocalDate getBirthday() { + return birthday; + } + + public void setBirthday(LocalDate birthday) { + this.birthday = birthday; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getIdCard() { + return idCard; + } + + public void setIdCard(String idCard) { + this.idCard = idCard; + } + + public String getProvince() { + return province; + } + + public void setProvince(String province) { + this.province = province; + } + + public String getCity() { + return city; + } + + public void setCity(String city) { + this.city = city; + } + + public String getDistrict() { + return district; + } + + public void setDistrict(String district) { + this.district = district; + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public BigDecimal getHeight() { + return height; + } + + public void setHeight(BigDecimal height) { + this.height = height; + } + + public BigDecimal getWeight() { + return weight; + } + + public void setWeight(BigDecimal weight) { + this.weight = weight; + } + + public BigDecimal getBmi() { + return bmi; + } + + public void setBmi(BigDecimal bmi) { + this.bmi = bmi; + } + + public LocalDate getRegistrationDate() { + return registrationDate; + } + + public void setRegistrationDate(LocalDate registrationDate) { + this.registrationDate = registrationDate; + } + + public Long getCardTypeId() { + return cardTypeId; + } + + public void setCardTypeId(Long cardTypeId) { + this.cardTypeId = cardTypeId; + } + + public LocalDate getCardStartDate() { + return cardStartDate; + } + + public void setCardStartDate(LocalDate cardStartDate) { + this.cardStartDate = cardStartDate; + } + + public LocalDate getCardEndDate() { + return cardEndDate; + } + + public void setCardEndDate(LocalDate cardEndDate) { + this.cardEndDate = cardEndDate; + } + + public String getCardStatus() { + return cardStatus; + } + + public void setCardStatus(String cardStatus) { + this.cardStatus = cardStatus; + } + + public Integer getRemainingTimes() { + return remainingTimes; + } + + public void setRemainingTimes(Integer remainingTimes) { + this.remainingTimes = remainingTimes; + } + + public Long getCoachId() { + return coachId; + } + + public void setCoachId(Long coachId) { + this.coachId = coachId; + } + + public String getEmergencyContact() { + return emergencyContact; + } + + public void setEmergencyContact(String emergencyContact) { + this.emergencyContact = emergencyContact; + } + + public String getEmergencyPhone() { + return emergencyPhone; + } + + public void setEmergencyPhone(String emergencyPhone) { + this.emergencyPhone = emergencyPhone; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } + + public String getSource() { + return source; + } + + public void setSource(String source) { + this.source = source; + } + + public String getAvatarUrl() { + return avatarUrl; + } + + public void setAvatarUrl(String avatarUrl) { + this.avatarUrl = avatarUrl; + } +} \ No newline at end of file diff --git a/gym-manage-api/manage-db/src/main/java/cn/novalon/gym/manage/db/entity/GymMembershipCardTypeEntity.java b/gym-manage-api/manage-db/src/main/java/cn/novalon/gym/manage/db/entity/GymMembershipCardTypeEntity.java new file mode 100644 index 0000000..a6d91b3 --- /dev/null +++ b/gym-manage-api/manage-db/src/main/java/cn/novalon/gym/manage/db/entity/GymMembershipCardTypeEntity.java @@ -0,0 +1,116 @@ +package cn.novalon.gym.manage.db.entity; + +import org.springframework.data.relational.core.mapping.Column; +import org.springframework.data.relational.core.mapping.Table; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.LocalDateTime; + +/** + * 会员卡类型表 + * + * @author 黎文涛 + * @date 2026-05-04 + */ +@Table("gym_membership_card_type") +public class GymMembershipCardTypeEntity extends BaseEntity { + + /** + * 卡类型名称(如年卡、季卡、次卡) + */ + @Column("card_type_name") + private String cardTypeName; + + /** + * 卡类型编码 + */ + @Column("card_type_code") + private String cardTypeCode; + + /** + * 有效天数 + */ + @Column("duration_days") + private Integer durationDays; + + /** + * 价格 + */ + @Column("price") + private BigDecimal price; + + /** + * 描述 + */ + @Column("description") + private String description; + + /** + * 排序 + */ + @Column("sort") + private Integer sort; + + /** + * 状态(0正常 1停用) + */ + @Column("status") + private Integer status; + + public String getCardTypeName() { + return cardTypeName; + } + + public void setCardTypeName(String cardTypeName) { + this.cardTypeName = cardTypeName; + } + + public String getCardTypeCode() { + return cardTypeCode; + } + + public void setCardTypeCode(String cardTypeCode) { + this.cardTypeCode = cardTypeCode; + } + + public Integer getDurationDays() { + return durationDays; + } + + public void setDurationDays(Integer durationDays) { + this.durationDays = durationDays; + } + + public BigDecimal getPrice() { + return price; + } + + public void setPrice(BigDecimal price) { + this.price = price; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public Integer getSort() { + return sort; + } + + public void setSort(Integer sort) { + this.sort = sort; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } +} \ No newline at end of file diff --git a/gym-manage-api/manage-sys/src/main/java/cn/novalon/gym/manage/sys/core/domain/GymBodyMeasurement.java b/gym-manage-api/manage-sys/src/main/java/cn/novalon/gym/manage/sys/core/domain/GymBodyMeasurement.java new file mode 100644 index 0000000..c32500b --- /dev/null +++ b/gym-manage-api/manage-sys/src/main/java/cn/novalon/gym/manage/sys/core/domain/GymBodyMeasurement.java @@ -0,0 +1,235 @@ +package cn.novalon.gym.manage.sys.core.domain; + +import io.swagger.v3.oas.annotations.media.Schema; +import java.math.BigDecimal; +import java.time.LocalDate; + +/** + * 顾客体测记录领域对象 + * + * @author 黎文涛 + * @date 2026-05-04 + */ +@Schema(description = "顾客体测记录实体") +public class GymBodyMeasurement extends BaseDomain { + + @Schema(description = "会员ID", example = "1") + private Long memberId; + + @Schema(description = "测量日期", example = "2024-01-15") + private LocalDate measureDate; + + @Schema(description = "身高(cm)", example = "175.00") + private BigDecimal height; + + @Schema(description = "体重(kg)", example = "70.00") + private BigDecimal weight; + + @Schema(description = "BMI指数", example = "22.86") + private BigDecimal bmi; + + @Schema(description = "体脂率(%)", example = "18.50") + private BigDecimal bodyFatPercentage; + + @Schema(description = "肌肉量(kg)", example = "45.00") + private BigDecimal muscleMass; + + @Schema(description = "水分量(kg)", example = "42.00") + private BigDecimal bodyWater; + + @Schema(description = "骨量(kg)", example = "3.50") + private BigDecimal boneMass; + + @Schema(description = "内脏脂肪等级", example = "3") + private Integer visceralFatLevel; + + @Schema(description = "基础代谢(kcal)", example = "1500.00") + private BigDecimal basalMetabolism; + + @Schema(description = "腰围(cm)", example = "80.00") + private BigDecimal waistCircumference; + + @Schema(description = "臀围(cm)", example = "90.00") + private BigDecimal hipCircumference; + + @Schema(description = "胸围(cm)", example = "95.00") + private BigDecimal chestCircumference; + + @Schema(description = "臂围(cm)", example = "35.00") + private BigDecimal armCircumference; + + @Schema(description = "大腿围(cm)", example = "55.00") + private BigDecimal thighCircumference; + + @Schema(description = "收缩压(mmHg)", example = "120") + private Integer systolicBloodPressure; + + @Schema(description = "舒张压(mmHg)", example = "80") + private Integer diastolicBloodPressure; + + @Schema(description = "心率(次/分)", example = "72") + private Integer heartRate; + + @Schema(description = "备注", example = "无") + private String remark; + + public Long getMemberId() { + return memberId; + } + + public void setMemberId(Long memberId) { + this.memberId = memberId; + } + + public LocalDate getMeasureDate() { + return measureDate; + } + + public void setMeasureDate(LocalDate measureDate) { + this.measureDate = measureDate; + } + + public BigDecimal getHeight() { + return height; + } + + public void setHeight(BigDecimal height) { + this.height = height; + } + + public BigDecimal getWeight() { + return weight; + } + + public void setWeight(BigDecimal weight) { + this.weight = weight; + } + + public BigDecimal getBmi() { + return bmi; + } + + public void setBmi(BigDecimal bmi) { + this.bmi = bmi; + } + + public BigDecimal getBodyFatPercentage() { + return bodyFatPercentage; + } + + public void setBodyFatPercentage(BigDecimal bodyFatPercentage) { + this.bodyFatPercentage = bodyFatPercentage; + } + + public BigDecimal getMuscleMass() { + return muscleMass; + } + + public void setMuscleMass(BigDecimal muscleMass) { + this.muscleMass = muscleMass; + } + + public BigDecimal getBodyWater() { + return bodyWater; + } + + public void setBodyWater(BigDecimal bodyWater) { + this.bodyWater = bodyWater; + } + + public BigDecimal getBoneMass() { + return boneMass; + } + + public void setBoneMass(BigDecimal boneMass) { + this.boneMass = boneMass; + } + + public Integer getVisceralFatLevel() { + return visceralFatLevel; + } + + public void setVisceralFatLevel(Integer visceralFatLevel) { + this.visceralFatLevel = visceralFatLevel; + } + + public BigDecimal getBasalMetabolism() { + return basalMetabolism; + } + + public void setBasalMetabolism(BigDecimal basalMetabolism) { + this.basalMetabolism = basalMetabolism; + } + + public BigDecimal getWaistCircumference() { + return waistCircumference; + } + + public void setWaistCircumference(BigDecimal waistCircumference) { + this.waistCircumference = waistCircumference; + } + + public BigDecimal getHipCircumference() { + return hipCircumference; + } + + public void setHipCircumference(BigDecimal hipCircumference) { + this.hipCircumference = hipCircumference; + } + + public BigDecimal getChestCircumference() { + return chestCircumference; + } + + public void setChestCircumference(BigDecimal chestCircumference) { + this.chestCircumference = chestCircumference; + } + + public BigDecimal getArmCircumference() { + return armCircumference; + } + + public void setArmCircumference(BigDecimal armCircumference) { + this.armCircumference = armCircumference; + } + + public BigDecimal getThighCircumference() { + return thighCircumference; + } + + public void setThighCircumference(BigDecimal thighCircumference) { + this.thighCircumference = thighCircumference; + } + + public Integer getSystolicBloodPressure() { + return systolicBloodPressure; + } + + public void setSystolicBloodPressure(Integer systolicBloodPressure) { + this.systolicBloodPressure = systolicBloodPressure; + } + + public Integer getDiastolicBloodPressure() { + return diastolicBloodPressure; + } + + public void setDiastolicBloodPressure(Integer diastolicBloodPressure) { + this.diastolicBloodPressure = diastolicBloodPressure; + } + + public Integer getHeartRate() { + return heartRate; + } + + public void setHeartRate(Integer heartRate) { + this.heartRate = heartRate; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } +} \ No newline at end of file diff --git a/gym-manage-api/manage-sys/src/main/java/cn/novalon/gym/manage/sys/core/domain/GymCheckIn.java b/gym-manage-api/manage-sys/src/main/java/cn/novalon/gym/manage/sys/core/domain/GymCheckIn.java new file mode 100644 index 0000000..44d3bf1 --- /dev/null +++ b/gym-manage-api/manage-sys/src/main/java/cn/novalon/gym/manage/sys/core/domain/GymCheckIn.java @@ -0,0 +1,80 @@ +package cn.novalon.gym.manage.sys.core.domain; + +import io.swagger.v3.oas.annotations.media.Schema; +import java.time.LocalDateTime; + +/** + * 顾客签到记录领域对象 + * + * @author 黎文涛 + * @date 2026-05-04 + */ +@Schema(description = "顾客签到记录实体") +public class GymCheckIn extends BaseDomain { + + @Schema(description = "会员ID", example = "1") + private Long memberId; + + @Schema(description = "签到时间", example = "2024-01-15 08:30:00") + private LocalDateTime checkInTime; + + @Schema(description = "签退时间", example = "2024-01-15 10:30:00") + private LocalDateTime checkOutTime; + + @Schema(description = "签到类型(1刷卡 2扫码 3指纹 4人脸)", example = "1") + private String checkInType; + + @Schema(description = "刷卡卡号", example = "CARD0001") + private String cardId; + + @Schema(description = "签到设备信息", example = "设备A-001") + private String deviceInfo; + + public Long getMemberId() { + return memberId; + } + + public void setMemberId(Long memberId) { + this.memberId = memberId; + } + + public LocalDateTime getCheckInTime() { + return checkInTime; + } + + public void setCheckInTime(LocalDateTime checkInTime) { + this.checkInTime = checkInTime; + } + + public LocalDateTime getCheckOutTime() { + return checkOutTime; + } + + public void setCheckOutTime(LocalDateTime checkOutTime) { + this.checkOutTime = checkOutTime; + } + + public String getCheckInType() { + return checkInType; + } + + public void setCheckInType(String checkInType) { + this.checkInType = checkInType; + } + + public String getCardId() { + return cardId; + } + + public void setCardId(String cardId) { + this.cardId = cardId; + } + + public String getDeviceInfo() { + return deviceInfo; + } + + public void setDeviceInfo(String deviceInfo) { + this.deviceInfo = deviceInfo; + } +} \ No newline at end of file diff --git a/gym-manage-api/manage-sys/src/main/java/cn/novalon/gym/manage/sys/core/domain/GymMember.java b/gym-manage-api/manage-sys/src/main/java/cn/novalon/gym/manage/sys/core/domain/GymMember.java new file mode 100644 index 0000000..4232c5f --- /dev/null +++ b/gym-manage-api/manage-sys/src/main/java/cn/novalon/gym/manage/sys/core/domain/GymMember.java @@ -0,0 +1,324 @@ +package cn.novalon.gym.manage.sys.core.domain; + +import io.swagger.v3.oas.annotations.media.Schema; +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.LocalDateTime; + +/** + * 健身房顾客用户领域对象 + * + * @author 黎文涛 + * @date 2026-05-04 + */ +@Schema(description = "健身房顾客用户实体") +public class GymMember extends BaseDomain { + + @Schema(description = "会员编号(唯一)", example = "MEM0001") + private String memberNo; + + @Schema(description = "用户名(登录用)", example = "zhangsan") + private String username; + + @Schema(description = "真实姓名", example = "张三") + private String realName; + + @Schema(description = "性别(0男 1女 2未知)", example = "0") + private Long gender; + + @Schema(description = "出生日期", example = "1990-01-01") + private LocalDateTime birthday; + + @Schema(description = "手机号码", example = "13800138000") + private String phone; + + @Schema(description = "邮箱", example = "zhangsan@example.com") + private String email; + + @Schema(description = "身份证号", example = "110101199001011234") + private String idCard; + + @Schema(description = "省份", example = "广东省") + private String province; + + @Schema(description = "城市", example = "深圳市") + private String city; + + @Schema(description = "区县", example = "南山区") + private String district; + + @Schema(description = "详细地址", example = "科技园路88号") + private String address; + + @Schema(description = "身高(cm)", example = "175.00") + private BigDecimal height; + + @Schema(description = "体重(kg)", example = "70.00") + private BigDecimal weight; + + @Schema(description = "BMI指数", example = "22.86") + private BigDecimal bmi; + + @Schema(description = "注册日期", example = "2024-01-15") + private LocalDate registrationDate; + + @Schema(description = "会员卡类型ID", example = "1") + private Long cardTypeId; + + @Schema(description = "会员卡开始日期", example = "2024-01-15") + private LocalDate cardStartDate; + + @Schema(description = "会员卡结束日期", example = "2025-01-14") + private LocalDate cardEndDate; + + @Schema(description = "会员卡状态(0正常 1即将到期 2已过期 3冻结)", example = "0") + private String cardStatus; + + @Schema(description = "剩余次数(次卡使用)", example = "10") + private Integer remainingTimes; + + @Schema(description = "私教ID", example = "1") + private Long coachId; + + @Schema(description = "紧急联系人", example = "李四") + private String emergencyContact; + + @Schema(description = "紧急联系电话", example = "13900139000") + private String emergencyPhone; + + @Schema(description = "备注信息", example = "无") + private String remark; + + @Schema(description = "用户状态(0正常 1停用 2黑名单)", example = "0") + private Integer status; + + @Schema(description = "客户来源(如地推、转介绍、线上广告等)", example = "地推") + private String source; + + @Schema(description = "头像URL", example = "https://example.com/avatar.jpg") + private String avatarUrl; + + public String getMemberNo() { + return memberNo; + } + + public void setMemberNo(String memberNo) { + this.memberNo = memberNo; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getRealName() { + return realName; + } + + public void setRealName(String realName) { + this.realName = realName; + } + + public Long getGender() { + return gender; + } + + public void setGender(Long gender) { + this.gender = gender; + } + + public LocalDateTime getBirthday() { + return birthday; + } + + public void setBirthday(LocalDateTime birthday) { + this.birthday = birthday; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getIdCard() { + return idCard; + } + + public void setIdCard(String idCard) { + this.idCard = idCard; + } + + public String getProvince() { + return province; + } + + public void setProvince(String province) { + this.province = province; + } + + public String getCity() { + return city; + } + + public void setCity(String city) { + this.city = city; + } + + public String getDistrict() { + return district; + } + + public void setDistrict(String district) { + this.district = district; + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public BigDecimal getHeight() { + return height; + } + + public void setHeight(BigDecimal height) { + this.height = height; + } + + public BigDecimal getWeight() { + return weight; + } + + public void setWeight(BigDecimal weight) { + this.weight = weight; + } + + public BigDecimal getBmi() { + return bmi; + } + + public void setBmi(BigDecimal bmi) { + this.bmi = bmi; + } + + public LocalDate getRegistrationDate() { + return registrationDate; + } + + public void setRegistrationDate(LocalDate registrationDate) { + this.registrationDate = registrationDate; + } + + public Long getCardTypeId() { + return cardTypeId; + } + + public void setCardTypeId(Long cardTypeId) { + this.cardTypeId = cardTypeId; + } + + public LocalDate getCardStartDate() { + return cardStartDate; + } + + public void setCardStartDate(LocalDate cardStartDate) { + this.cardStartDate = cardStartDate; + } + + public LocalDate getCardEndDate() { + return cardEndDate; + } + + public void setCardEndDate(LocalDate cardEndDate) { + this.cardEndDate = cardEndDate; + } + + public String getCardStatus() { + return cardStatus; + } + + public void setCardStatus(String cardStatus) { + this.cardStatus = cardStatus; + } + + public Integer getRemainingTimes() { + return remainingTimes; + } + + public void setRemainingTimes(Integer remainingTimes) { + this.remainingTimes = remainingTimes; + } + + public Long getCoachId() { + return coachId; + } + + public void setCoachId(Long coachId) { + this.coachId = coachId; + } + + public String getEmergencyContact() { + return emergencyContact; + } + + public void setEmergencyContact(String emergencyContact) { + this.emergencyContact = emergencyContact; + } + + public String getEmergencyPhone() { + return emergencyPhone; + } + + public void setEmergencyPhone(String emergencyPhone) { + this.emergencyPhone = emergencyPhone; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } + + public String getSource() { + return source; + } + + public void setSource(String source) { + this.source = source; + } + + public String getAvatarUrl() { + return avatarUrl; + } + + public void setAvatarUrl(String avatarUrl) { + this.avatarUrl = avatarUrl; + } +} \ No newline at end of file diff --git a/gym-manage-api/manage-sys/src/main/java/cn/novalon/gym/manage/sys/core/domain/GymMembershipCardType.java b/gym-manage-api/manage-sys/src/main/java/cn/novalon/gym/manage/sys/core/domain/GymMembershipCardType.java new file mode 100644 index 0000000..055a094 --- /dev/null +++ b/gym-manage-api/manage-sys/src/main/java/cn/novalon/gym/manage/sys/core/domain/GymMembershipCardType.java @@ -0,0 +1,91 @@ +package cn.novalon.gym.manage.sys.core.domain; + +import io.swagger.v3.oas.annotations.media.Schema; +import java.math.BigDecimal; + +/** + * 会员卡类型领域对象 + * + * @author 黎文涛 + * @date 2026-05-04 + */ +@Schema(description = "会员卡类型实体") +public class GymMembershipCardType extends BaseDomain { + + @Schema(description = "卡类型名称(如年卡、季卡、次卡)", example = "年卡") + private String cardTypeName; + + @Schema(description = "卡类型编码", example = "YEAR_CARD") + private String cardTypeCode; + + @Schema(description = "有效天数", example = "365") + private Integer durationDays; + + @Schema(description = "价格", example = "1999.00") + private BigDecimal price; + + @Schema(description = "描述", example = "全年不限次数") + private String description; + + @Schema(description = "排序", example = "1") + private Integer sort; + + @Schema(description = "状态(0正常 1停用)", example = "0") + private Integer status; + + public String getCardTypeName() { + return cardTypeName; + } + + public void setCardTypeName(String cardTypeName) { + this.cardTypeName = cardTypeName; + } + + public String getCardTypeCode() { + return cardTypeCode; + } + + public void setCardTypeCode(String cardTypeCode) { + this.cardTypeCode = cardTypeCode; + } + + public Integer getDurationDays() { + return durationDays; + } + + public void setDurationDays(Integer durationDays) { + this.durationDays = durationDays; + } + + public BigDecimal getPrice() { + return price; + } + + public void setPrice(BigDecimal price) { + this.price = price; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public Integer getSort() { + return sort; + } + + public void setSort(Integer sort) { + this.sort = sort; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } +} \ No newline at end of file