基於java springboot框架的電子發票管理系統

程序猿DaBo 2022-01-07 14:28:55 阅读数:312

java springboot 框架 管理

今天給大家介紹一個電子發票管理系統,適合電子發票的管理,用戶等級關系明確,功能豐富。

基於springboot框架的電子發票管理系統,附源碼

功能介紹

這個電子發票管理系統分為三級關系,系統管理員,租戶管理員,用戶。 三者關系,系統管理員管理全部,租戶管理員比如為市教育局,租戶為學校,用戶為老師。租戶的授權期限到了,租戶下的所有用戶都不能登錄。 每個租戶管理員只能管理本租戶內的租戶和用戶,用戶只能管理本租戶內的電子發票。該系統只針對電子發票管理,不開電子發票。

開發環境

開發工具:IDEA、Jdk1.8、SpringBoot2.0.6版本項目

數據庫:MySQL5.7

所用技術

前端:BootStrap、EasyUI、JQuery、HTML5+CSS3、Ajax

後端:SpringBoot+spring-data-jpa

安全控件:SpringSecurity

頁面采用:Thymeleaf

演示視頻如下

springboot電子發票管理系統票據管理畢業設計

登錄邏輯代碼

@Controller
public class LoginController {
@Autowired
private UserUtils userUtils;
@Autowired
private SysUserService userDAO;
@Autowired
private RoleService roleDAO;
@Autowired
private LesseeAdminService lesseeAdminDAO;
@Autowired
private JournalService journalDAO;
@Autowired
private UserService userDAO1;
@Autowired
private AccreditService accreditDAO;
//發送者的郵箱賬號
@Value("${spring.mail.username}")
private String mailusername;
@Autowired
JavaMailSender jms;
@RequestMapping(value="/login",method=RequestMethod.GET)
public String login() {
List<SysUser> list = userDAO.findAll();
if(list.size() == 0) {
test();
}
return "index";
}
@RequestMapping(value="/zhmm")
public String zhmm() {
return "zhmm";
}
//修改密碼
@RequestMapping(value="/xg")
public String xg(String pad) {
SysUser user = userUtils.getUser();
BCryptPasswordEncoder encoder=new BCryptPasswordEncoder();
user.setPassword(encoder.encode(pad));
userDAO.save(user);
return "redirect:logout";
}
@RequestMapping(value="/username")
@ResponseBody
public Boolean username(String username) {
SysUser user = userDAO.findByUsername(username);
if(user == null) {
return false;
}else {
return true;
}
}
@RequestMapping(value="/yx")
@ResponseBody
public String yx(String username, HttpSession session) {
//建立郵件消息
SimpleMailMessage mainMessage = new SimpleMailMessage();
//發送者
mainMessage.setFrom(mailusername);
//接收者
mainMessage.setTo(username);
//發送的標題
mainMessage.setSubject("電子發票管理系統");
String code = VerifyCodeUtils.generateVerifyCode(6);
//發送的內容
mainMessage.setText("請記住驗證碼:"+code);
jms.send(mainMessage);
System.out.println(code);
session.setAttribute("yzm", code);
return "ok";
}
@RequestMapping(value="/yz")
@ResponseBody
public Boolean yz(String code, HttpSession session) {
String code1 = (String) session.getAttribute("yzm");
if(code.equals(code1)) {
return true;
}else {
return false;
}
}
@RequestMapping(value="/zhmm1")
@ResponseBody
public String zhmm1(String username, String password, HttpSession session) {
SysUser user = userDAO.findByUsername(username);
BCryptPasswordEncoder encoder=new BCryptPasswordEncoder();
user.setPassword(encoder.encode(password));
userDAO.save(user);
session.removeAttribute("yzm");
return "密碼找回成功!";
}
//判斷原密碼是否正確
@RequestMapping(value="/pwd")
@ResponseBody
public Boolean pwd(String password) {
SysUser user = userUtils.getUser();
BCryptPasswordEncoder encoder=new BCryptPasswordEncoder();
boolean f = encoder.matches(password,user.getPassword());
return f;
}
//跳轉到登錄頁面
@RequestMapping(value="login1")
public String login1() {
return "login";
}
//登錄成功跳轉日志
@RequestMapping(value="/main")
public String main() {
SysUser user = userUtils.getUser();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//設置日期格式
String data = df.format(new Date());
Journal journal = new Journal();
journal.setDate(data);
journal.setUsername(user.getUsername());
journal.setOperationName("登入");
System.out.println(journal.getOperationName());
journalDAO.save(journal);
/*JournalUtil.log(user.getUsername(), "登入");*/
return "redirect:main1";
}
//登錄成功跳轉的歡迎頁面
@RequestMapping(value="/main1")
public String main1(HttpSession session) {
SysUser user = userUtils.getUser();
if(user.getSf() == null) {
return "main";
}else {
User user1 = userDAO1.findById(user.getId());
Accredit accredit = accreditDAO.findByLesseeId(user1.getLessee().getId());
String data = accredit.getOverDate();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
String data1 = df.format(new Date());
try {
Date bt=df.parse(data);
Date et=df.parse(data1);
if (bt.before(et)){
session.setAttribute("str", "租戶授權已到期");
return "redirect:logout";
}else {
session.removeAttribute("str");
return "index";
}
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
}
@RequestMapping(value="/str")
@ResponseBody
public String str(HttpSession session) {
session.removeAttribute("str");
return "ok";
}
@RequestMapping(value="/logout2")
public String logout2(HttpSession session) {
String str = (String) session.getAttribute("str");
if(str == null) {
return "index";
}else {
return "redirect:login1";
}
}
//退出日志
@RequestMapping(value="/logout1")
public String logout1() {
SysUser user = userUtils.getUser();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//設置日期格式
String data = df.format(new Date());
Journal journal = new Journal();
journal.setDate(data);
journal.setUsername(user.getUsername());
journal.setOperationName("登出");
System.out.println(journal.getOperationName());
journalDAO.save(journal);
/*JournalUtil.log(user.getUsername(), "登出");*/
return "redirect:logout";
}
//數據庫中沒有數據,先添加數據
private void test() {
BCryptPasswordEncoder encoder=new BCryptPasswordEncoder(); //密碼加密類
SysRole role = new SysRole();
role.setName("系統管理員");
role.setCode("ROLE_SYSTEM");
roleDAO.save(role);
SysRole role2 = new SysRole();
role2.setName("租戶管理員");
role2.setCode("ROLE_ADMIN");
roleDAO.save(role2);
SysRole role3 = new SysRole();
role3.setName("用戶");
role3.setCode("ROLE_USER");
roleDAO.save(role3);
SysUser user = new SysUser();
user.setUsername("system");
user.setPassword(encoder.encode("system")); //encode密碼加密方法
user.getRoles().add(role);
userDAO.save(user);
LesseeAdmin lesseeAdmin = new LesseeAdmin();
lesseeAdmin.setUsername("[email protected]");
lesseeAdmin.setPhone("123456");
lesseeAdmin.setUnit("宜昌");
lesseeAdmin.setName("管理員");
lesseeAdmin.setPassword(encoder.encode("admin"));
lesseeAdmin.getRoles().add(role2);
lesseeAdminDAO.save(lesseeAdmin);
}
}

版权声明:本文为[程序猿DaBo]所创,转载请带上原文链接,感谢。 https://gsmany.com/2022/01/202201071428551307.html