数据库设计
针对项目需求进行了数据库的重新设计,表如下:
user表:
字段名 | 数据类型 | 长度 | 主键 |
---|---|---|---|
userid | varchar | 64 | 主键 |
name | varchar | 64 | |
pwd | varchar | 64 | |
money | varchar | 64 |
history表:
字段名 | 数据类型 | 长度 | 主键 |
---|---|---|---|
userid | varchar | 64 | 外键 |
time | datetime | ||
amount | decimal | 64 | |
operate | varchar | 128 |
说明:
User表用来管理用户的id,密码 ,用户的余额
Name是用户的账号
userid是用户的id
Pwd 是用户的密码
Money是用户的余额
History表是用来管理历史记录。
userid是user表里的userid的外键
Time是记录用户操作时间
Amount 是用户操作的金额
operate是用户的具体操作 比如 存款 取款
因为表history中没有name字段,所以要想在后台显示用户姓名,就得进行两个表联查:
进行项目后台部分功能初步编写
项目结构如下
ums通过服务器名调用notice微服务代码:
//notice的url
public static final String NOTICE_URL="http://NOTICE-SERVICE";
@Resource
private RestTemplate restTemplate;
@ApiOperation(value = "根据userid进行查询历史操作记录", notes = "根据userid进行查询历史操作记录")
@GetMapping(value="/sel/{userid}")
public JsonResult follow(@PathVariable String userid ){
//推送消息,是调用另一个微服务
return restTemplate.getForObject(NOTICE_URL+"/api/select/"+userid,JsonResult.class);
}
@ApiOperation(value = "根据userid进行存款", notes = "根据userid进行存款")
@PostMapping(value="/add/{userid}/{money}")
public JsonResult add(@PathVariable String userid,@PathVariable double money ){
User user=new User(userid,money);
return restTemplate.postForObject(NOTICE_URL+"/api/add/",user, JsonResult.class);
}
@ApiOperation(value = "根据userid,money进行取款", notes = "根据userid,money进行取款")
@PostMapping(value="/subtract/{userid}/{money}")
public JsonResult sub(@PathVariable String userid,@PathVariable double money ){
User user=new User(userid,money);
return restTemplate.postForObject(NOTICE_URL+"/api/subtract/",user, JsonResult.class);
}
notice微服务集群代码:
@Resource
private UserSrvImpl userSrv;
@Resource
private HistorySrvImpl historySrv;
@ApiOperation(value = "根据userid,money进行存款", notes = "根据userid,money进行存款")
@ApiImplicitParam(name = "userid", value = "用户id", required = true, dataType = "String", paramType = "path")
@PostMapping("/add")
public JsonResult addMoney(@RequestBody User user) {
JsonResult res=new JsonResult(0,"成功");
userSrv.addMoney(user);
History history = new History(user.getUserid(), "存款", user.getMoney(), new Date());
historySrv.insertHistory(history);
return res;
}
@ApiOperation(value = "根据userid,money进行取款", notes = "根据userid,money进行取款")
@ApiImplicitParam(name = "userid", value = "用户id", required = true, dataType = "String", paramType = "path")
@PostMapping("/subtract")
public JsonResult subtractMoney(@RequestBody User user) {
JsonResult res=new JsonResult(0,"取款成功");
User user1= selMoneyByUserid(user.getUserid());
if (user.getMoney()>user1.getMoney()){
res.setCode(1);
res.setMsg("账户余额不足");
}else{
userSrv.subtractMoney(user);
History history = new History(user.getUserid(), "取款", user.getMoney(), new Date());
historySrv.insertHistory(history);
}
return res;
}
@ApiOperation(value = "根据userid进行账户余额查询", notes = "根据userid查询余额")
@ApiImplicitParam(name = "userid", value = "用户id", required = true, dataType = "String", paramType = "path")
@PostMapping("/selMoneyByUserid/{userid}")
public User selMoneyByUserid(@PathVariable String userid) {
User user = userSrv.selMoneyByUserid(userid);
return user;
}