12306系统会员基础功能的实现

发布时间 2023-04-17 15:44:02作者: 夏雪冬蝉

乘车人表的设计

新增/修改时间保存到毫秒

drop table if exists `passenger`;
create table `passenger` (
  `id` bigint not null comment 'id',
  `member_id` bigint not null comment '会员id',
  `name` varchar(20) not null comment '姓名',
  `id_card` varchar(18) not null comment '身份证',
  `type` char(1) not null comment '旅客类型|枚举[PassengerTypeEnum]',
  `create_time` datetime(3) comment '新增时间',
  `update_time` datetime(3) comment '修改时间',
   primary key (`id`),
   index `member_id_index` (`member_id`)
) engine=innodb default charset=utf8mb4 comment='乘车人';

用generator-config-member.xml生成持久层代码

<table tableName="passenger" domainObjectName="Passenger"/>

打开方式Maven--generator--Plugins--mybatis-generator--双击

增加乘车人类型枚举

 1 package com.zihans.train.member.enums;
 2 
 3 import java.util.ArrayList;
 4 import java.util.EnumSet;
 5 import java.util.HashMap;
 6 import java.util.List;
 7 
 8 public enum PassengerTypeEnum {
 9 
10     ADULT("1", "成人"),
11     CHILD("2", "儿童"),
12     STUDENT("3", "学生");
13 
14     private String code;
15 
16     private String desc;
17 
18     PassengerTypeEnum(String code, String desc) {
19         this.code = code;
20         this.desc = desc;
21     }
22 
23     public String getCode() {
24         return code;
25     }
26 
27     public void setCode(String code) {
28         this.code = code;
29     }
30 
31     public void setDesc(String desc) {
32         this.desc = desc;
33     }
34 
35     public String getDesc() {
36         return desc;
37     }
38 
39     public static List<HashMap<String,String>> getEnumList() {
40         List<HashMap<String, String>> list = new ArrayList<>();
41         for (PassengerTypeEnum anEnum : EnumSet.allOf(PassengerTypeEnum.class)) {
42             HashMap<String, String> map = new HashMap<>();
43             map.put("code",anEnum.code);
44             map.put("desc",anEnum.desc);
45             list.add(map);
46         }
47         return list;
48     }
49 }
PassengerTypeEnum.java

乘车人新增接口开发

暂时与Passager相同

 1 package com.zihans.train.member.req;
 2 
 3 import java.util.Date;
 4 
 5 public class PassengerSaveReq {
 6     private Long id;
 7 
 8     private Long memberId;
 9 
10     private String name;
11 
12     private String idCard;
13 
14     private String type;
15 
16     private Date createTime;
17 
18     private Date updateTime;
19 
20     public Long getId() {
21         return id;
22     }
23 
24     public void setId(Long id) {
25         this.id = id;
26     }
27 
28     public Long getMemberId() {
29         return memberId;
30     }
31 
32     public void setMemberId(Long memberId) {
33         this.memberId = memberId;
34     }
35 
36     public String getName() {
37         return name;
38     }
39 
40     public void setName(String name) {
41         this.name = name;
42     }
43 
44     public String getIdCard() {
45         return idCard;
46     }
47 
48     public void setIdCard(String idCard) {
49         this.idCard = idCard;
50     }
51 
52     public String getType() {
53         return type;
54     }
55 
56     public void setType(String type) {
57         this.type = type;
58     }
59 
60     public Date getCreateTime() {
61         return createTime;
62     }
63 
64     public void setCreateTime(Date createTime) {
65         this.createTime = createTime;
66     }
67 
68     public Date getUpdateTime() {
69         return updateTime;
70     }
71 
72     public void setUpdateTime(Date updateTime) {
73         this.updateTime = updateTime;
74     }
75 
76     @Override
77     public String toString() {
78         StringBuilder sb = new StringBuilder();
79         sb.append(getClass().getSimpleName());
80         sb.append(" [");
81         sb.append("Hash = ").append(hashCode());
82         sb.append(", id=").append(id);
83         sb.append(", memberId=").append(memberId);
84         sb.append(", name=").append(name);
85         sb.append(", idCard=").append(idCard);
86         sb.append(", type=").append(type);
87         sb.append(", createTime=").append(createTime);
88         sb.append(", updateTime=").append(updateTime);
89         sb.append("]");
90         return sb.toString();
91     }
92 }
PassengerSaveReq.java

保存用户信息

 1 package com.zihans.train.member.service;
 2 
 3 import cn.hutool.core.bean.BeanUtil;
 4 import cn.hutool.core.date.DateTime;
 5 import com.zihans.train.common.util.SnowUtil;
 6 import com.zihans.train.member.domain.Passenger;
 7 import com.zihans.train.member.mapper.PassengerMapper;
 8 import com.zihans.train.member.req.PassengerSaveReq;
 9 import jakarta.annotation.Resource;
10 import org.springframework.stereotype.Service;
11 
12 @Service
13 public class PassengerService {
14 
15     @Resource
16     private PassengerMapper passengerMapper;
17 
18     public void save(PassengerSaveReq req) {
19         DateTime now = DateTime.now();
20         Passenger passenger = BeanUtil.copyProperties(req, Passenger.class);
21         passenger.setId(SnowUtil.getSnowflakeNextId());
22         passenger.setCreateTime(now);
23         passenger.setUpdateTime(now);
24         passengerMapper.insert(passenger);
25     }
26 }
PassengerService.java

controller

 1 package com.zihans.train.member.controller;
 2 
 3 
 4 import com.zihans.train.common.resp.CommonResp;
 5 import com.zihans.train.member.req.PassengerSaveReq;
 6 import com.zihans.train.member.service.PassengerService;
 7 import jakarta.annotation.Resource;
 8 import jakarta.validation.Valid;
 9 import org.springframework.web.bind.annotation.PostMapping;
10 import org.springframework.web.bind.annotation.RequestBody;
11 import org.springframework.web.bind.annotation.RequestMapping;
12 import org.springframework.web.bind.annotation.RestController;
13 
14 @RestController
15 @RequestMapping("/passenger")
16 public class PassengerController {
17 
18     @Resource
19     private PassengerService passengerService;
20 
21     @PostMapping("/save")
22     public CommonResp<Object> save(@Valid @RequestBody PassengerSaveReq req) {
23         passengerService.save(req);
24         return new CommonResp<>();
25     }
26 
27 }
PassengerController.java