diff --git a/src/main/java/edu/situ/stlserver/dao/DashboardMapper.java b/src/main/java/edu/situ/stlserver/dao/DashboardMapper.java index ac75fe9..7c407f1 100644 --- a/src/main/java/edu/situ/stlserver/dao/DashboardMapper.java +++ b/src/main/java/edu/situ/stlserver/dao/DashboardMapper.java @@ -18,7 +18,7 @@ public interface DashboardMapper { @Select("SELECT COUNT(*) FROM members") int countMembers(); - @Select("SELECT COUNT(*) FROM members WHERE expire_date IS NULL") + @Select("SELECT COUNT(*) FROM members WHERE end_date IS NULL OR end_date >= CURDATE()") int countActiveMembers(); @Select("SELECT COUNT(*) FROM courses") @@ -33,6 +33,6 @@ public interface DashboardMapper { @Select("SELECT type, COUNT(*) as count FROM courses GROUP BY type") List> countCourseByType(); - @Select("SELECT DATE_FORMAT(join_date, '%Y-%m') as month, COUNT(*) as count FROM members GROUP BY month ORDER BY month") + @Select("SELECT DATE_FORMAT(start_date, '%Y-%m') as month, COUNT(*) as count FROM members GROUP BY month ORDER BY month") List> countMemberByMonth(); } diff --git a/src/main/java/edu/situ/stlserver/dao/MemberMapper.java b/src/main/java/edu/situ/stlserver/dao/MemberMapper.java index 609a962..1a9850d 100644 --- a/src/main/java/edu/situ/stlserver/dao/MemberMapper.java +++ b/src/main/java/edu/situ/stlserver/dao/MemberMapper.java @@ -19,8 +19,8 @@ public interface MemberMapper { " AND `sex` = #{sex}", "", "", - " AND expire_date IS NULL", - " AND expire_date IS NOT NULL", + " AND end_date IS NULL OR end_date >= CURDATE()", + " AND end_date IS NOT NULL AND end_date < CURDATE()", "", "", "", @@ -28,14 +28,14 @@ public interface MemberMapper { }) List select(MemberQueryDTO memberQueryDTO); - @Insert(value = "INSERT INTO `members`(`name`, `sex`, `phone`, `level`, `remark`, `avatar`, `join_date`, `remain_count`, `total_spend`) VALUES (#{name}, #{sex}, #{phone}, #{level}, #{remark}, #{avatar}, #{joinDate}, #{remainCount}, #{totalSpend})") + @Insert(value = "INSERT INTO `members`(`name`, `sex`, `phone`, `level`, `remark`, `avatar`, `start_date`, `end_date`, `remain_count`, `total_spend`) VALUES (#{name}, #{sex}, #{phone}, #{level}, #{remark}, #{avatar}, #{startDate}, #{endDate}, #{remainCount}, #{totalSpend})") @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id") void insert(Member member); - @Update(value = "UPDATE `members` SET `expire_date` = #{expireDate} WHERE `id` = #{id}") - void cancel(@Param("id") Integer id, @Param("expireDate") String expireDate); + @Update(value = "UPDATE `members` SET `end_date` = #{endDate} WHERE `id` = #{id}") + void cancel(@Param("id") Integer id, @Param("endDate") String endDate); - @Update(value = "UPDATE `members` SET `expire_date` = null WHERE `id` = #{id}") + @Update(value = "UPDATE `members` SET `end_date` = DATE_ADD(COALESCE(end_date, CURDATE()), INTERVAL 365 DAY) WHERE `id` = #{id}") void renew(Integer id); @Delete(value = "DELETE FROM `members` WHERE `id` = #{id}") diff --git a/src/main/java/edu/situ/stlserver/model/entity/Member.java b/src/main/java/edu/situ/stlserver/model/entity/Member.java index a639fbc..3de3907 100644 --- a/src/main/java/edu/situ/stlserver/model/entity/Member.java +++ b/src/main/java/edu/situ/stlserver/model/entity/Member.java @@ -14,8 +14,8 @@ public class Member { private String avatar; private String phone; private String remark; - private String expireDate; - private String joinDate; + private String startDate; + private String endDate; private String level; private Integer remainCount; private Integer totalSpend; diff --git a/src/main/java/edu/situ/stlserver/service/impl/MemberServiceImpl.java b/src/main/java/edu/situ/stlserver/service/impl/MemberServiceImpl.java index 644a6dc..c2f68bc 100644 --- a/src/main/java/edu/situ/stlserver/service/impl/MemberServiceImpl.java +++ b/src/main/java/edu/situ/stlserver/service/impl/MemberServiceImpl.java @@ -69,7 +69,8 @@ public class MemberServiceImpl implements MemberService { member.setPhone(memberAddDTO.getPhone()); member.setLevel(memberAddDTO.getLevel()); member.setRemark(memberAddDTO.getRemark()); - member.setJoinDate(DateUtil.today()); + member.setStartDate(DateUtil.today()); + member.setEndDate(null); member.setRemainCount(null); member.setTotalSpend(0); diff --git a/src/main/resources/data.sql b/src/main/resources/data.sql index 90525f4..3a36942 100644 --- a/src/main/resources/data.sql +++ b/src/main/resources/data.sql @@ -1,25 +1,25 @@ -- 会员模拟数据 -INSERT INTO `members` (`name`, `sex`, `phone`, `level`, `remark`, `join_date`, `remain_count`, `total_spend`) VALUES -('张三', 1, '13800138001', '金卡', '年卡会员,喜欢瑜伽', '2024-01-15', NULL, 5999), -('李四', 2, '13800138002', '银卡', '季卡会员,减脂塑形', '2024-06-20', NULL, 2999), -('王五', 1, '13800138003', '普通', '月卡会员,增肌训练', '2024-09-10', NULL, 999), -('赵六', 2, '13800138004', '钻石', '年卡会员,产后恢复', '2023-12-01', NULL, 12999), -('钱七', 1, '13800138005', '普通', '次卡会员,游泳爱好者', '2024-03-15', 5, 1500), -('孙八', 2, '13800138006', '金卡', '年卡会员,搏击训练', '2024-02-28', NULL, 8999), -('周九', 1, '13800138007', '银卡', '季卡会员,普拉提', '2024-07-05', NULL, 3499), -('吴十', 2, '13800138008', '普通', '月卡会员,有氧舞蹈', '2024-10-12', NULL, 799), -('郑十一', 1, '13800138009', '金卡', '年卡会员,自由重量', '2024-01-20', NULL, 6999), -('冯十二', 2, '13800138010', '普通', '次卡会员,动感单车', '2024-05-18', 8, 1200), -('陈十三', 1, '13800138011', '钻石', '年卡会员,拳击训练', '2023-11-25', NULL, 15999), -('楚十四', 2, '13800138012', '银卡', '季卡会员,形体塑造', '2024-08-08', NULL, 2599), -('魏十五', 1, '13800138013', '普通', '月卡会员,康复训练', '2024-10-01', NULL, 599), -('蒋十六', 2, '13800138014', '金卡', '年卡会员,舞蹈培训', '2024-03-10', NULL, 7499), -('沈十七', 1, '13800138015', '普通', '次卡会员,攀岩爱好者', '2024-06-15', 12, 1800), -('韩十八', 2, '13800138016', '银卡', '季卡会员,有氧操', '2024-09-20', NULL, 2799), -('杨十九', 1, '13800138017', '钻石', '年卡会员,力量训练', '2024-01-05', NULL, 18999), -('朱二十', 2, '13800138018', '普通', '月卡会员,纤体瑜伽', '2024-10-15', NULL, 699), -('秦廿一', 1, '13800138019', '金卡', '年卡会员,CrossFit', '2024-02-14', NULL, 9499), -('许廿二', 2, '13800138020', '银卡', '季卡会员,空中瑜伽', '2024-07-22', NULL, 3199); +INSERT INTO `members` (`name`, `sex`, `phone`, `level`, `remark`, `start_date`, `end_date`, `remain_count`, `total_spend`) VALUES +('张三', 1, '13800138001', '金卡', '年卡会员,喜欢瑜伽', '2024-01-15', '2025-01-15', NULL, 5999), +('李四', 2, '13800138002', '银卡', '季卡会员,减脂塑形', '2024-06-20', '2024-09-20', NULL, 2999), +('王五', 1, '13800138003', '普通', '月卡会员,增肌训练', '2024-09-10', '2024-10-10', NULL, 999), +('赵六', 2, '13800138004', '钻石', '年卡会员,产后恢复', '2023-12-01', NULL, NULL, 12999), +('钱七', 1, '13800138005', '普通', '次卡会员,游泳爱好者', '2024-03-15', '2024-06-15', 5, 1500), +('孙八', 2, '13800138006', '金卡', '年卡会员,搏击训练', '2024-02-28', '2025-02-28', NULL, 8999), +('周九', 1, '13800138007', '银卡', '季卡会员,普拉提', '2024-07-05', '2024-10-05', NULL, 3499), +('吴十', 2, '13800138008', '普通', '月卡会员,有氧舞蹈', '2024-10-12', '2024-11-12', NULL, 799), +('郑十一', 1, '13800138009', '金卡', '年卡会员,自由重量', '2024-01-20', '2025-01-20', NULL, 6999), +('冯十二', 2, '13800138010', '普通', '次卡会员,动感单车', '2024-05-18', '2024-08-18', 8, 1200), +('陈十三', 1, '13800138011', '钻石', '年卡会员,拳击训练', '2023-11-25', NULL, NULL, 15999), +('楚十四', 2, '13800138012', '银卡', '季卡会员,形体塑造', '2024-08-08', '2024-11-08', NULL, 2599), +('魏十五', 1, '13800138013', '普通', '月卡会员,康复训练', '2024-10-01', '2024-11-01', NULL, 599), +('蒋十六', 2, '13800138014', '金卡', '年卡会员,舞蹈培训', '2024-03-10', '2025-03-10', NULL, 7499), +('沈十七', 1, '13800138015', '普通', '次卡会员,攀岩爱好者', '2024-06-15', '2024-09-15', 12, 1800), +('韩十八', 2, '13800138016', '银卡', '季卡会员,有氧操', '2024-09-20', '2024-12-20', NULL, 2799), +('杨十九', 1, '13800138017', '钻石', '年卡会员,力量训练', '2024-01-05', NULL, NULL, 18999), +('朱二十', 2, '13800138018', '普通', '月卡会员,纤体瑜伽', '2024-10-15', '2024-11-15', NULL, 699), +('秦廿一', 1, '13800138019', '金卡', '年卡会员,CrossFit', '2024-02-14', '2025-02-14', NULL, 9499), +('许廿二', 2, '13800138020', '银卡', '季卡会员,空中瑜伽', '2024-07-22', '2024-10-22', NULL, 3199); -- 课程模拟数据 INSERT INTO `courses` (`name`, `type`, `coach_name`, `price`, `duration`, `status`, `remark`, `start_time`, `enrolled`, `capacity`) VALUES diff --git a/src/main/resources/schema.sql b/src/main/resources/schema.sql index cd6adda..34dbb71 100644 --- a/src/main/resources/schema.sql +++ b/src/main/resources/schema.sql @@ -16,8 +16,8 @@ CREATE TABLE IF NOT EXISTS `members` ( `avatar` VARCHAR(255) DEFAULT NULL, `phone` VARCHAR(20) NOT NULL, `remark` TEXT DEFAULT NULL, - `expire_date` DATE DEFAULT NULL COMMENT '过期日期,NULL表示有效', - `join_date` DATE NOT NULL COMMENT '入会日期', + `start_date` DATE NOT NULL COMMENT '办卡开始日期', + `end_date` DATE DEFAULT NULL COMMENT '办卡结束日期,NULL表示无限期', `level` VARCHAR(20) NOT NULL DEFAULT '普通' COMMENT '会员等级:普通/银卡/金卡/钻石', `remain_count` INT DEFAULT NULL COMMENT '剩余次数,NULL表示不限次', `total_spend` INT DEFAULT 0 COMMENT '累计消费(元)'