AI提示词 —— 系统设计之经营竞赛系统 v2

团队要做经营竞赛系统,时间紧,任务重,让 AI 助理帮我设计一下!

系统架构设计(询问AI 1)

你现在是一个资深的系统架构师和产品经理,我会逐步提供给足够的产品信息给你,你需要按照我的要求生成系统模型设计,我会不断反馈你哪些需要做调整,你再不断输出优化后的设计。

如果你识别到模型和模型之间有通用的概念,需要将其进行抽象为一个新的底层模型。

产品信息如下:

  1. 以公司纬度组织比赛,参赛对象是各个站点;
  2. 每个站点信息包含其站点队徽 logo;每个站点归属与某一个事业部;
  3. 每个月公司可以使用经营指标设置多个“挑战赛”赛事,站点需要报名才能参加“挑战赛”;站点报名需交纳一定报名费;站点的经营指标达到赛事要求视为挑战成功,否则视为挑战失败;挑战成功将得到指定的奖金。
  4. 公司每半年举办一次“积分赛”赛事,“积分赛”会设置多个经营指标评分标准,达到指标即可获得对应分数;每次积分赛包含6个月,每个月进行一次指标考核并给出分数;站点6个月的积分累积之和就是该站点积分赛的最终得分;每个月当月积分的前10名给予一定的奖金;
  5. 公司每半年举办一次“冠军杯”赛事, 参赛的站点是上一个半年“积分赛”赛事最终积分的前32名;冠军杯分6个月, 每个月进行淘汰赛,32只队伍按照随机分组;
  1. “冠军杯”赛事前3名给予指定奖金;
  2. 参与"挑战赛"、“积分赛”需要交纳报名费,参与"冠军杯"则不需要;
  3. 所有赛事的奖励规则都是基于一个或多个指标纬度,根据这些纬度指标完成情况分成多个档位,按照不同档位等级进行不同等级的奖励。
  4. 每个站点都可以查看自己的获奖记录及其总的奖金;

你的第一个任务是分析并列出所有存在的模型,按照 "模型名称","模型描述" 依次列出。

系统架构设计(AI回答 1)

根据产品需求,我首先识别出以下模型:

站点模型(Site)

赛事模型(Event)

参赛模型(Participation)

比赛模型(Match)

奖励模型(Reward)

积分模型(Score)

排名模型(Ranking)

获奖记录模型(Award Record)

系统架构设计(询问AI 2)

请按照如下反馈重新生成模型列表,按照 "模型名称","模型描述" 依次列出。

反馈内容:

  1. 模型名称 不用 包含 "模型" 二字;
  2. 赛事(Event) 改名为 赛事(Race) ;
  3. 缺少了 "冠军杯"、"积分赛"、"挑战赛" 三个模型;
  4. 缺少了 "奖励档次" 、"奖励规则" 模型;
  5. 无需 排名(Ranking) 模型,在 参赛(Participation)模型中加入一个 rank 排名信息即可;
  6. 获奖记录(Award Record)模型记录的是站长获奖信息汇总,应该改名为 获奖账号(AwardAccount)

系统架构设计(AI回答 2)

好的,已按照要求调整模型列表:

站点(Site)

比赛(Match)

参赛(Participation)

赛事(Race)

冠军杯(Champion Cup)

积分赛(Score Race)

挑战赛(Challenge Race)

奖励档次(Reward Level)

奖励规则(Reward Rule)

获奖账号(Award Account)

请检查模型列表是否符合要求,谢谢!

系统架构设计(询问AI 3)

请保留以上模型信息,并参考如下反馈重新生成模型列表,按照 "模型名称","模型描述" 依次列出。

反馈内容:

  1. 缺少 比赛分数(RaceScore)模型,记录站点参与某一个赛事、某一个月、某一个指标所获得的分数;
  2. 缺少 比赛指标(Metric)模型,在奖励规则设置的时候需要进行关联;
  3. 比赛(Match) 改名为 淘汰赛对战(Knockout Match)模型;

系统架构设计(AI回答 3)

您好,已根据反馈调整模型列表,更新后的模型如下:

站点(Site)

淘汰赛对战(Knockout Match)

参赛(Participation)

赛事(Race)

冠军杯(Champion Cup)

积分赛(Score Race)

挑战赛(Challenge Race)

奖励档次(Reward Level)

奖励规则(Reward Rule)

比赛分数(Race Score)

比赛指标(Metric)

获奖账号(Award Account)

请确认模型列表是否符合要求,感谢您的反馈。

系统架构设计(询问AI 4)

请记录以上生成的模型信息,按照之前提供的产品信息,分析每一个模型所有可能的信息,按照 "模型名称","模型字段列表" 依次列出。

比如:

系统架构设计(AI回答 4)

好的,已记录模型信息,并按照要求分析每个模型的字段,结果如下:

站点(Site):

淘汰赛对战(Knockout Match):

参赛(Participation):

赛事(Race):

冠军杯(Champion Cup):

积分赛(Score Race):

挑战赛(Challenge Race):

奖励档次(Reward Level):

奖励规则(Reward Rule):

比赛分数(Race Score):

比赛指标(Metric):

获奖账号(Award Account):

请确认模型字段是否正确,如果有需要调整的地方请指出,非常感谢!

系统架构设计(询问AI 5)

请记录以上生成的模型以及模型字段信息,根据以下调整要求,按照 "模型名称","模型字段列表" 依次列出。

调整要求:

系统架构设计(AI回答 5)

好的,已记录先前模型信息,并按照要求调整模型字段,更新后的模型列表如下:

站点(Site):

淘汰赛对战(Knockout Match):

参赛(Participation):

赛事(Race):

冠军杯(Champion Cup):

积分赛(Score Race):

挑战赛(Challenge Race):

奖励档次(Reward Level):

奖励规则(Reward Rule):

比赛分数(Race Score):

比赛指标(Metric):

赛事奖励(Race Award):

获奖账号(Award Account):

请确认调整后的模型是否满足要求,感谢!

系统架构设计(询问AI 6)

请记住以上生成的模型以及模型字段信息,将字段名称转变为英文, 根据字段关联建立模型之间的关系, 按照 mermaid 格式进行输出。

系统架构设计(AI回答 6)

好的,我已经记住之前生成的模型和字段信息,将字段转为英文,并根据字段关联建立了模型之间的关系,按照 mermaid 格式输出如下:

classDiagram
Site "1" --> "N" Participation
Race "1" --> "N" Participation
Race "1" --> "N" RewardLevel
Race "1" --> "N" RewardRule
Race "1" --> "N" RaceScore
Metric "1" --> "N" RewardRule
Metric "1" --> "N" RaceScore
RewardLevel "1" --> "N" RewardRule
RewardLevel "1" --> "N" RaceAward
Participation "1" --> "N" RaceScore
Participation "1" --> "1" RaceAward
Site "1" --> "N" RaceScore 
Site "1" --> "1" AwardAccount
AwardAccount "1" --> "1" Site

class Site {
  siteId
  siteName
  siteLogo
  businessUnit
}

class KnockoutMatch {
  matchId
  team1
  team2
  matchTime
  matchResult  
}

class Participation {
  participationId 
  siteId
  raceId
  enrollmentFee
  rank
}

class Race {
  raceId
  raceName
  raceType
  enrollmentFee
}

class ChampionCup {
  cupId 
  cupName
}

class ScoreRace {
  scoreRaceId
  scoreRaceName  
}

class ChallengeRace {
  challengeRaceId
  challengeRaceName
}
  
class RewardLevel {
  levelId
  raceId 
  levelName
  bonusAmount
}

class RewardRule {
  ruleId
  raceId
  metricId
  levelId
  minScore
  maxScore
}

class RaceScore {
  scoreId
  siteId
  raceId
  month
  metricId
  scoreValue
}

class Metric {
  metricId
  metricName
  metricDesc
}

class RaceAward {
  awardId
  raceId
  levelId
  bonusAmount
  siteId
  accountId  
}

class AwardAccount {
  accountId
  siteId
  totalWinTimes
  totalBonusAmount 
}

请确认关系建模是否正确,如有需要调整的地方请指出,非常感谢!

系统架构设计(询问AI 7)

请记录以上生成的模型以及模型字段信息,根据以下调整要求,按照 "模型名称","模型字段列表" 依次列出。

调整要求:

系统架构设计(AI回答 7)

好的,我已经记住之前的模型信息,并按照要求调整了模型字段,更新后的模型列表如下:

站点(Site):

淘汰赛对战(Knockout Match):

参赛(Participation):

赛事(Race):

冠军杯(Champion Cup):

积分赛(Score Race):

挑战赛(Challenge Race):

奖励档次(Reward Level):

奖励规则(Reward Rule):

比赛分数(Race Score):

比赛指标(Metric):

赛事奖励(Race Award):

获奖账号(Award Account):

请确认调整后的模型是否符合要求,非常感谢!

系统架构设计(询问AI 8)

请记住以上生成的模型以及模型字段信息, 根据字段关联建立模型之间的关系, 按照 mermaid 格式进行输出。

系统架构设计(AI回答 8)

好的,我已经记住调整后的模型信息,并根据字段关联建立了模型之间的关系,按照 mermaid 格式输出如下:

classDiagram
Site "1" --> "N" Participation
Race "1" --> "N" Participation
Race "1" --> "N" RewardLevel  
Race "1" --> "N" RewardRule
Race "1" --> "N" RaceScore
Metric "1" --> "N" RewardRule
Metric "1" --> "N" RaceScore
RewardLevel "1" --> "N" RewardRule
RewardLevel "1" --> "N" RaceAward
Participation "1" --> "N" RaceScore
Participation "1" --> "1" RaceAward
Site "1" --> "N" RaceScore
Site "1" --> "1" AwardAccount
AwardAccount "1" --> "1" Site
ChampionCup "1" --> "1" Race
ScoreRace "1" --> "1" Race
ChallengeRace "1" --> "1" Race 
KnockoutMatch "1" --> "1" Race
KnockoutMatch "1" --> "1" ChampionCup

class Site {
  siteId
  siteName  
  siteLogo
  businessUnit
}

class KnockoutMatch {
  matchId
  raceId
  cupId
  month
  team1
  team2
  matchTime
  matchResult
  winner  
}

class Participation {
  participationId
  siteId
  raceId 
  enrollmentFee
  rank
}

class Race {
  raceId
  raceName
  raceType
  enrollmentFee 
}

class ChampionCup {
  cupId
  raceId
  cupName
}

class ScoreRace {
  scoreRaceId  
  raceId
  scoreRaceName
}

class ChallengeRace {
  challengeRaceId
  raceId
  challengeRaceName  
}

class RewardLevel {
  levelId
  raceId
  levelName
  bonusAmount
}

class RewardRule {
  ruleId
  raceId
  metricId
  levelId
  minScore
  maxScore
}

class RaceScore {
  scoreId
  siteId
  raceId
  month
  metricId
  scoreValue
}

class Metric {
  metricId
  metricName
  metricDesc
}

class RaceAward {
  awardId
  raceId
  levelId 
  bonusAmount
  siteId
  accountId
}

class AwardAccount {
  accountId
  siteId
  totalWinTimes
  totalBonusAmount  
}

请确认关系建模是否正确,如有需要调整的地方请指出,非常感谢!

系统架构设计(询问AI 9)

根据以上生成的模型以及模型字段信息, 生成 mysql 建表sql 语法。

系统架构设计(AI回答 9)

好的,已根据之前生成的模型和字段信息,生成了mysql建表语句,代码如下:

--站点表
CREATE TABLE `site` (
  `site_id` int NOT NULL AUTO_INCREMENT,
  `site_name` varchar(50) NOT NULL,
  `site_logo` varchar(100) NOT NULL,
  `business_unit` varchar(50) NOT NULL,
  PRIMARY KEY (`site_id`)
);

--淘汰赛对战表 
CREATE TABLE `knockout_match` (
  `match_id` int NOT NULL AUTO_INCREMENT,
  `race_id` int NOT NULL,
  `cup_id` int NOT NULL,
  `month` int NOT NULL,
  `team1` int NOT NULL,
  `team2` int NOT NULL,
  `match_time` datetime NOT NULL,
  `match_result` varchar(10) NOT NULL,
  `winner` int NOT NULL,
  PRIMARY KEY (`match_id`)
);

--参赛表
CREATE TABLE `participation` (
  `participation_id` int NOT NULL AUTO_INCREMENT,
  `site_id` int NOT NULL,
  `race_id` int NOT NULL,
  `enrollment_fee` decimal(10,2) NOT NULL,
  `rank` int NOT NULL,
  PRIMARY KEY (`participation_id`)
);

--赛事表
CREATE TABLE `race` (
  `race_id` int NOT NULL AUTO_INCREMENT,
  `race_name` varchar(50) NOT NULL,
  `race_type` varchar(20) NOT NULL,
  `enrollment_fee` decimal(10,2) NOT NULL,
  PRIMARY KEY (`race_id`)
);

--冠军杯表
CREATE TABLE `champion_cup` (
  `cup_id` int NOT NULL AUTO_INCREMENT,
  `race_id` int NOT NULL,
  `cup_name` varchar(50) NOT NULL,
  PRIMARY KEY (`cup_id`)
);

--积分赛表
CREATE TABLE `score_race` (
  `score_race_id` int NOT NULL AUTO_INCREMENT,
  `race_id` int NOT NULL,
  `score_race_name` varchar(50) NOT NULL,
  PRIMARY KEY (`score_race_id`)
);

--挑战赛表
CREATE TABLE `challenge_race` (
  `challenge_race_id` int NOT NULL AUTO_INCREMENT,
  `race_id` int NOT NULL,
  `challenge_race_name` varchar(50) NOT NULL,
  PRIMARY KEY (`challenge_race_id`)
);

--奖励档次表
CREATE TABLE `reward_level` (
  `level_id` int NOT NULL AUTO_INCREMENT,
  `race_id` int NOT NULL,
  `level_name` varchar(50) NOT NULL,
  `bonus_amount` decimal(10,2) NOT NULL,
  PRIMARY KEY (`level_id`)
);

--奖励规则表
CREATE TABLE `reward_rule` (
  `rule_id` int NOT NULL AUTO_INCREMENT,
  `race_id` int NOT NULL,
  `metric_id` int NOT NULL,
  `level_id` int NOT NULL,
  `min_score` int NOT NULL,
  `max_score` int NOT NULL,
  PRIMARY KEY (`rule_id`)
);

--比赛分数表
CREATE TABLE `race_score` (
  `score_id` int NOT NULL AUTO_INCREMENT,
  `site_id` int NOT NULL,
  `race_id` int NOT NULL,
  `month` int NOT NULL,
  `metric_id` int NOT NULL,
  `score_value` int NOT NULL,
  PRIMARY KEY (`score_id`)
);

--比赛指标表
CREATE TABLE `metric` (
  `metric_id` int NOT NULL AUTO_INCREMENT,
  `metric_name` varchar(50) NOT NULL,
  `metric_desc` varchar(100) NOT NULL,
  PRIMARY KEY (`metric_id`)
);

--赛事奖励表
CREATE TABLE `race_award` (
  `award_id` int NOT NULL AUTO_INCREMENT,
  `race_id` int NOT NULL,
  `level_id` int NOT NULL,
  `bonus_amount` decimal(10,2) NOT NULL,
  `site_id` int NOT NULL,
  `account_id` int NOT NULL,
  PRIMARY KEY (`award_id`)
);

--获奖账号表
CREATE TABLE `award_account` (
  `account_id` int NOT NULL AUTO_INCREMENT,
  `site_id` int NOT NULL,
  `total_win_times` int NOT NULL,
  `total_bonus_amount` decimal(10,2) NOT NULL,
  PRIMARY KEY (`account_id`)
);

请检查sql语句是否正确,如有需要调整的地方请指出,非常感谢!

系统架构设计(询问AI 10)

根据以上生成的模型以及模型字段信息, 生成 java 模型对象, 模型对象满足如下要求:

系统架构设计(AI回答 10)

好的,已根据要求对之前的Java模型对象进行调整:

@Data
@TableName("site")  
public class Site {

  @Id
  private Long siteId;
  
  private String siteName;
  
  private String siteLogo;

  private String businessUnit;

}

@Data
@TableName("knockout_match")
public class KnockoutMatch {

  @Id
  private Long matchId;

  private Long raceId;

  private Long cupId;

  private Integer month;

  private Long team1;

  private Long team2;

  private Date matchTime;

  private String matchResult;

  private Long winner;

}

@Data
@TableName("participation")
public class Participation {

  @Id
  private Long participationId;

  private Long siteId;

  private Long raceId;

  private BigDecimal enrollmentFee;

  private Integer rank;

}

@Data
@TableName("race")  
public class Race {

  @Id
  private Long raceId;

  private String raceName;

  private String raceType;

  private BigDecimal enrollmentFee;

}

@Data
@TableName("champion_cup")
public class ChampionCup {

  @Id
  private Long cupId;

  private Long raceId;

  private String cupName;

}

@Data
@TableName("score_race") 
public class ScoreRace {

  @Id
  private Long scoreRaceId;

  private Long raceId;

  private String scoreRaceName;

}

@Data
@TableName("challenge_race")
public class ChallengeRace {

  @Id
  private Long challengeRaceId;

  private Long raceId;

  private String challengeRaceName;

}

@Data
@TableName("reward_level")   
public class RewardLevel {

  @Id
  private Long levelId;

  private Long raceId;

  private String levelName;

  private BigDecimal bonusAmount;

}

@Data
@TableName("reward_rule")
public class RewardRule {

  @Id
  private Long ruleId;

  private Long raceId;

  private Long metricId;

  private Long levelId;

  private Integer minScore;

  private Integer maxScore;

}

@Data
@TableName("race_score")
public class RaceScore {

  @Id
  private Long scoreId;

  private Long siteId;

  private Long raceId;

  private Integer month;

  private Long metricId;

  private Integer scoreValue;

}

@Data  
@TableName("metric")
public class Metric {

  @Id
  private Long metricId;

  private String metricName;

  private String metricDesc;

}

@Data
@TableName("race_award")
public class RaceAward {

  @Id
  private Long awardId;

  private Long raceId;

  private Long levelId;

  private BigDecimal bonusAmount;

  private Long siteId;

  private Long accountId;

}

@Data
@TableName("award_account") 
public class AwardAccount {

  @Id
  private Long accountId;

  private Long siteId;

  private Integer totalWinTimes;

  private BigDecimal totalBonusAmount;

}

请检查调整后的Java模型类是否符合要求,如有需要修改的地方请指出,非常感谢!

系统架构设计(询问AI 11)

java 服务代码实现 包含 三层:

  1. Mapper 层, 继承 mybatisplus 库的 BaseMapper 类, 实现对象 ORM 映射, 如 RaceMapper;
  2. DAO 层, 继承 mybatisplus 库的 ServiceImpl 类, 提供常用数据访问方法, 如 RaceDAO;
  3. Service 层, 调用 DAO 层实现 CRUD 操作, 如 RaceService;

请用 java 生成 Race 模型的服务实现代码。

系统架构设计(AI回答 11)

好的,已根据要求使用Java生成了Race模型的三层服务实现代码:

// Mapper层 
public interface RaceMapper extends BaseMapper<Race> {

}

// DAO层
@Service
public class RaceDAO extends ServiceImpl<RaceMapper, Race> {

} 

// Service层
@Service   
public class RaceService {

  @Autowired
  private RaceDAO raceDAO;

  public void saveRace(Race race) {
    raceDAO.save(race); 
  }
  
  public Race getRace(Long id) {
    return raceDAO.getById(id);
  }
  
  public void updateRace(Race race) {  
    raceDAO.updateById(race);
  }

  public void deleteRace(Long id) {
    raceDAO.removeById(id);
  }

  public List<Race> listRaces() {
    return raceDAO.list();
  }

}

请检查生成的三层服务代码是否符合要求,如有需要调整的地方请指出,非常感谢!