一、Service层RegisterService.inteface
业务逻辑层的接口
package com.bbs.bbssystem.service.user.account;
import java.util.Map;
public interface RegisterService {
public Map<String,String> register(String username,String password,String confirmedPassword);
}
二、Pojo层User.java
模型层Model:与数据库一一对应。
package com.bbs.bbssystem.pojo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
@TableId(type= IdType.AUTO)
private Integer id;
private String username;
private String password;
private String photo;
}
三、Mapper层UserMapper.interface
数据访问交互层Mapper 接口
package com.kob.backend.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.kob.backend.pojo.User;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
@Repository
@Mapper
public interface UserMapper extends BaseMapper<User> {
}
四、Impl层RegisterServiceImpl.java
业务逻辑层(实现层)
package com.kob.backend.service.ipml.user.account;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.kob.backend.mapper.UserMapper;
import com.kob.backend.pojo.User;
import com.kob.backend.service.user.account.RegisterService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
public class RegisterServiceImp implements RegisterService {
@Autowired
UserMapper userMapper;
@Autowired
private PasswordEncoder passwordEncoder;
@Override
public Map<String, String> register(String username, String password, String confirmedPassword) {
Map<String,String> map=new HashMap<>();
if(username==null){
map.put("error_message","用户不能为空");
return map;
}
if(password==null || confirmedPassword==null){
map.put("error_message","密码不能为空");
return map;
}
username=username.trim();
if(username.length()==0){
map.put("error_message","用户名不能空");
return map;
}
if(password.length()==0 ||confirmedPassword.length()==0){
map.put("error_message","密码不能为空");
return map;
}
if(username.length()>100){
map.put("error_message","用户名长度不能大于100");
return map;
}
if(!password.equals(confirmedPassword)){
map.put("error_message","两次输入密码不一致");
return map;
}
QueryWrapper<User> queryWrapper=new QueryWrapper<>();
queryWrapper.eq("username",username);
List<User> users=userMapper.selectList(queryWrapper);
if(!users.isEmpty()){
map.put("error_message","用户名已存在");
return map;
}
String encodedPassword=passwordEncoder.encode(password);
String photo="https://cdn.acwing.com/media/user/profile/photo/147246_lg_efd031826c.jpg";
User user=new User(null,username,encodedPassword,photo);
userMapper.insert(user);
map.put("error_message","success");
return map;
}
}
五、Controller层RegisterController.java
控制层Controller:前端通过ajax请求,接受页面传过来的参数,传给Service处理,接到返回值,再传送给页面。
package com.bbs.bbssystem.controller.user.account;
import com.bbs.bbssystem.service.user.account.RegisterService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
@RestController
public class RegisterController {
@Autowired
private RegisterService registerService;
@PostMapping("/user/account/register/")
public Map<String,String> register(@RequestParam Map<String,String> map){
String username=map.get("username");
String password=map.get("password");
String confirmedPassword=map.get("confirmedPassword");
return registerService.register(username,password,confirmedPassword);
}
}