当前位置: 首页 > news >正文

汕头网站制作网络推广服务商

汕头网站制作,网络推广服务商,wordpress建好后安全,域名经纪公司推荐作者主页:源码空间codegym 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 1.介绍 垃圾分类查询管理系统,对不懂的垃圾进行查询进行分类并可以预约上门回收垃圾。 让用户自己分类垃圾, 按国家标准自己分类…
作者主页:源码空间codegym

简介:Java领域优质创作者、Java项目、学习资料、技术互助

文中获取源码

1.介绍

垃圾分类查询管理系统,对不懂的垃圾进行查询进行分类并可以预约上门回收垃圾。
让用户自己分类垃圾,
按国家标准自己分类,
然后在网上提交订单,
专门有人负责回收,
统一回收到垃圾处理站,
然后工人开始再次分类,
将可再次循环使用的贩卖给工厂(以后有钱自己开)。
订单处理完(一般7天内),
将一部分钱返还给用户。
让垃圾变成钱!

1.1 功能点

序号功能点
1用户管理
2页面管理
3角色管理
4首页
5贡献管理
6垃圾管理
7全国统计
8搜索记录
9分类管理
10分类列表
11垃圾列表
12修改奖励
13我的收益
14随机数据
15分类统计
16投放统计
17公告管理
18公告列表
19发布公告
21每日垃圾
22贡献记录
23预约管理

2.软件架构

JDK 1.8
SpringBoot 2.2.6.RELEASE
freemarker 2.3.28
mybatis-plus 3.2.0
shiro 1.3.2

运行指导

idea导入源码空间站顶目教程说明(Vindows版)-ssm篇:

http://mtw.so/5MHvZq

源码地址:http://codegym.top。

3.安装启动

输入图片说明

启动后访问地址:http://127.0.0.1:8083/
用户名:admin、密码:123456
输入图片说明

4.运行截图

输入图片说明

输入图片说明

输入图片说明

输入图片说明

输入图片说明

输入图片说明

输入图片说明

输入图片说明

输入图片说明

输入图片说明

输入图片说明

输入图片说明

输入图片说明

输入图片说明

输入图片说明

输入图片说明

代码

CustomRealm

package com.gcms.shiro;import com.gcms.mapper.UserMapper;
import com.gcms.mapper.UserRoleMapper;
import com.gcms.pojo.User;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.*;
import org.apache.shiro.authz.AuthorizationInfo;
import org.apache.shiro.authz.SimpleAuthorizationInfo;
import org.apache.shiro.realm.AuthorizingRealm;
import org.apache.shiro.session.Session;
import org.apache.shiro.subject.PrincipalCollection;
import org.apache.shiro.subject.Subject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;import java.util.*;@Component
public class CustomRealm extends AuthorizingRealm {/** 用户信息service */private final UserMapper userMapper;/** 用户权限service */private final UserRoleMapper userRoleMapper;/** logback日志记录 */private final Logger logger = LoggerFactory.getLogger(CustomRealm.class);private static Map<String, Session> sessionMap = new HashMap<>();@Autowiredpublic CustomRealm(UserMapper userMapper, UserRoleMapper userRoleMapper) {this.userMapper = userMapper;this.userRoleMapper = userRoleMapper;}/*** @Override* @see org.apache.shiro.realm.AuthenticatingRealm#doGetAuthenticationInfo(AuthenticationToken)*      <BR>*      Method name: doGetAuthenticationInfo <BR>*      获取身份验证信息 Description: Shiro中,最终是通过 Realm 来获取应用程序中的用户、角色及权限信息的。 <BR>* @param authenticationToken 用户身份信息 token* @return 返回封装了用户信息的 AuthenticationInfo 实例* @throws AuthenticationException <BR>*/@Overrideprotected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken)throws AuthenticationException {// 获取token令牌UsernamePasswordToken token = (UsernamePasswordToken) authenticationToken;// 从数据库获取对应用户名密码的用户User user = userMapper.getByName(token.getUsername());if (null == user) {logger.warn("{}---用户不存在", token.getUsername());// 向前台抛出用户不存在json对象throw new AccountException("USERNAME_NOT_EXIST");}String password = user.getPassword();if (null == password) {logger.warn("{}---用户不存在", token.getUsername());// 向前台抛出用户不存在json对象throw new AccountException("USERNAME_NOT_EXIST");} else if (!password.equals(new String((char[]) token.getCredentials()))) {logger.warn("{}---输入密码错误", token.getUsername());// 向前台抛出输入密码错误json对象throw new AccountException("PASSWORD_ERR");}logger.info("{}---身份认证成功", user.getName());Subject subject = SecurityUtils.getSubject();// 设置shiro session过期时间(单位是毫秒!)subject.getSession().setTimeout(7_200_000);Session s = subject.getSession();String uid = user.getId()+"";try {Session s2 = sessionMap.get(uid);if (s2 != null) {s2.setTimeout(0);sessionMap.remove(s2);}} catch (Exception e) {// 已经退出,但是还是有他。sessionMap.remove(s);}// 把这个人登录的信息给放进全局变量sessionMap.put(uid, s);return new SimpleAuthenticationInfo(user, password, getName());}/*** @Override* @see AuthorizingRealm#doGetAuthorizationInfo(PrincipalCollection)*      <BR>*      Method name: doGetAuthorizationInfo <BR>*      Description: 获取授权信息 <BR>* @param principalCollection* @return <BR>*/@Overrideprotected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {// 从shro里面获取用户对象User user = (User) SecurityUtils.getSubject().getPrincipal();SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();// 角色列表List<String> roles = null;// 获得该用户角色if (null != user) {roles = userRoleMapper.getRoles(user.getId()+"");} else {logger.warn("用户session失效!");}Set<String> set = new HashSet<>();// 需要将 role 封装到 Set 作为 info.setRoles() 的参数for (String role : roles) {set.add(role);}// 设置该用户拥有的角色info.setRoles(set);return info;}
}

MyUtils

package com.gcms.utils;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;import java.io.*;
import java.text.Format;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;/*** class name:MyUtils <BR>*/
public class MyUtils {private MyUtils() {throw new IllegalStateException("Utility class");}/** logback日志记录 */private static final Logger logger = LoggerFactory.getLogger(MyUtils.class);/*** Method name: isEmail <BR>* Description: 判断是不是邮箱,是就返回true <BR>* Remark: <BR>* * @param email* @return boolean<BR>*/public static boolean isEmail(String email) {String regex = "^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$";if (email.matches(regex)) {return true;} else {return false;}}/*** Method name: isPhoneNum <BR>* Description: 判断手机号是不是正确,是就返回true <BR>* Remark: <BR>* * @param phoneNume* @return boolean<BR>*/public static boolean isPhoneNum(String phoneNume) {String pattern = "^((1[3,5,8][0-9])|(14[5,7])|(17[0,6,7,8])|(19[7]))\\d{8}$";if (phoneNume.matches(pattern)) {return true;} else {return false;}}/*** Method name: nowDate <BR>* Description: 返回当前日期和时间yyyy-MM-dd HH:mm:ss <BR>* Remark: <BR>* * @return String<BR>*/public static String getNowDateTime() {String dateTime = "";String pattern = "yyyy-MM-dd HH:mm:ss";Date date = new Date();SimpleDateFormat sdf = new SimpleDateFormat(pattern);dateTime = sdf.format(date);return dateTime;}/*** Method name: getNowDateYMD <BR>* Description: 返回当前日期和时间 yyyy-MM-dd <BR>* Remark: <BR>* * @return String<BR>*/public static String getNowDateYMD() {String dateTime = "";String pattern = "yyyy-MM-dd";Date date = new Date();SimpleDateFormat sdf = new SimpleDateFormat(pattern);dateTime = sdf.format(date);return dateTime;}/*** Method name: getNowDateCHYMD <BR>* Description: 返回当前日期和时间 yyyy年MM月dd日<BR>* Remark: <BR>* * @return String<BR>*/public static String getNowDateCHYMD() {String dateTime = "";String pattern = "yyyy年MM月dd日";Date date = new Date();SimpleDateFormat sdf = new SimpleDateFormat(pattern);dateTime = sdf.format(date);return dateTime;}/*** Method name: getAutoNumber <BR>* Description: 根据时间获取编号:年月日+4位数字 <BR>* Remark: 格式:201809200001 <BR>* * @return String<BR>*/public static synchronized String getAutoNumber() {String autoNumber = "";int number = 0;String oldDate = "";SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");String nowDate = sdf.format(new Date());File f2 = new File(MyUtils.class.getResource("").getPath());String path = f2.getAbsolutePath();File f = new File(path + "/date.txt");try {BufferedReader br = new BufferedReader(new FileReader(f));String line = "";try {line = br.readLine();String[] sb = line.split(",");oldDate = sb[0];if (oldDate.equals(nowDate)) {number = Integer.parseInt(sb[1]);} else {number = 0;}br.close();} catch (IOException e) {logger.error("根据时间获取编号出现异常", e);}autoNumber += nowDate;number++;int i = 1;int n = number;while ((n = n / 10) != 0) {i++;}for (int j = 0; j < 4 - i; j++) {autoNumber += "0";}autoNumber += number;try {BufferedWriter bw = new BufferedWriter(new FileWriter(f));bw.write(nowDate + "," + number);bw.close();} catch (IOException e) {logger.error("根据时间获取编号出现异常", e);}} catch (FileNotFoundException e) {logger.error("根据时间获取编号出现异常", e);}return autoNumber;}/*** Method name: get2DateDay <BR>* Description: 获取两个日期之间的天数 <BR>* Remark: 如2018-09-01 和 2018-09-017 返回就是17天<BR>* * @param startDate* @param endDate* @return int<BR>*/public static int get2DateDay(String startDate, String endDate) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Date date1 = null;Date date2 = null;long days = 0;try {date1 = sdf.parse(startDate);date2 = sdf.parse(endDate);days = (date2.getTime() - date1.getTime()) / (24 * 3600 * 1000);} catch (ParseException e) {logger.error("获取两个日期之间的天数出现异常", e);}return (int) days + 1;}/*** Method name: toLowCase <BR>* Description: 第一个字母小写 <BR>* Remark: <BR>* * @param s* @return String<BR>*/public static String toLowCase(String s) {return s.substring(0, 1).toLowerCase() + s.substring(1, s.length());}/*** Method name: setStartUP <BR>* Description: 第一个字母大写 <BR>* Remark: <BR>* * @param s* @return String<BR>*/public static String setStartUP(String s) {return s.substring(0, 1).toUpperCase() + s.substring(1, s.length());}/*** Method name: getUp_ClassName <BR>* Description: 根据表名获取类名不带后缀Bean <BR>* Remark: <BR>* * @param s* @return String<BR>*/public static String getUp_ClassName(String s) {String cName = "";// 首字母大写cName = s.substring(1, 2).toUpperCase() + s.substring(2, s.length());String[] tem = cName.split("_");int len = tem.length;cName = tem[0];for (int i = 1; i < len; i++) {cName += setStartUP(tem[i]);}// tables.add(cName);//把所有的表添加到这里return cName;}/*** Method name: getFiled2Pro <BR>* Description: 根据字段名获取属性 <BR>* Remark: <BR>* * @return String<BR>*/public static String getFiled2Pro(String s) {String pName = "";String[] tem = s.split("_");int len = tem.length;pName = tem[0];for (int i = 1; i < len; i++) {pName += setStartUP(tem[i]);}return pName;}/*** Method name: getStringDate <BR>* Description: 根据字符串转成日期类型yyyt-MM-dd <BR>* * @param time* @return Date<BR>*/public static Date getStringDate(String time) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Date date = null;try {date = sdf.parse(time);} catch (ParseException e) {logger.error("日期转换出错:", e);}return date;}/*** Method name: getStringDate <BR>* Description: 根据字符串转成日期类型yyyt-MM-dd HH:mm:ss<BR>* * @param time* @return Date<BR>*/public static Date getStringDateTime(String time) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date date = null;try {date = sdf.parse(time);} catch (ParseException e) {logger.error("日期转换出错:", e);}return date;}/*** Method name: getNowDateFirstDay <BR>* Description: 根据系统时间获取当月第一天 <BR>* * @return String<BR>*/public static String getNowDateFirstDay() {Format format = new SimpleDateFormat("yyyy-MM-dd");// 获取当前月第一天:Calendar c = Calendar.getInstance();c.add(Calendar.MONTH, 0);c.set(Calendar.DAY_OF_MONTH, 1);// 设置为1号,当前日期既为本月第一天return format.format(c.getTime());}/*** Method name: getNowDateLastDay <BR>* Description: 根据系统时间获取当月最后一天 <BR>* * @return String<BR>*/public static String getNowDateLastDay() {Format format = new SimpleDateFormat("yyyy-MM-dd");// 获取当前月最后一天Calendar ca = Calendar.getInstance();ca.set(Calendar.DAY_OF_MONTH, ca.getActualMaximum(Calendar.DAY_OF_MONTH));return format.format(ca.getTime());}/*** 根据日期对象获取yyyy年MM月dd字符串* @param date* @return*/public static String getDate2String(Date date) {Format format = new SimpleDateFormat("yyyy年MM月dd日  HH时mm分ss秒");return format.format(date);}}

文章转载自:
http://dinncomelaena.bpmz.cn
http://dinncobiolysis.bpmz.cn
http://dinncoconsidered.bpmz.cn
http://dinncovivisector.bpmz.cn
http://dinncoprewar.bpmz.cn
http://dinncodentoid.bpmz.cn
http://dinncokenyan.bpmz.cn
http://dinncokibble.bpmz.cn
http://dinncomeniscocytosis.bpmz.cn
http://dinncopaymistress.bpmz.cn
http://dinncomyiasis.bpmz.cn
http://dinncohepaticoenterostomy.bpmz.cn
http://dinncodraggly.bpmz.cn
http://dinncosacaton.bpmz.cn
http://dinncomaillot.bpmz.cn
http://dinncoisostatic.bpmz.cn
http://dinncovolapuk.bpmz.cn
http://dinncopiemonte.bpmz.cn
http://dinncoobduracy.bpmz.cn
http://dinncoepiglottal.bpmz.cn
http://dinncotenrec.bpmz.cn
http://dinncogynaecologist.bpmz.cn
http://dinncofulbright.bpmz.cn
http://dinncocrossband.bpmz.cn
http://dinncoiliac.bpmz.cn
http://dinncopolished.bpmz.cn
http://dinncooverchoice.bpmz.cn
http://dinncomintmark.bpmz.cn
http://dinncoradiate.bpmz.cn
http://dinncoinobservant.bpmz.cn
http://dinncofingerstall.bpmz.cn
http://dinncopostulator.bpmz.cn
http://dinncoaves.bpmz.cn
http://dinncosalify.bpmz.cn
http://dinncohogwash.bpmz.cn
http://dinncoshrapnel.bpmz.cn
http://dinncoshipmaster.bpmz.cn
http://dinncodegranulation.bpmz.cn
http://dinncoofr.bpmz.cn
http://dinncoachondrite.bpmz.cn
http://dinncogingeli.bpmz.cn
http://dinncohardenable.bpmz.cn
http://dinncofluted.bpmz.cn
http://dinncoindonesian.bpmz.cn
http://dinncowilma.bpmz.cn
http://dinncoungenteel.bpmz.cn
http://dinncogorry.bpmz.cn
http://dinncodissipative.bpmz.cn
http://dinncoreinstallment.bpmz.cn
http://dinncothionine.bpmz.cn
http://dinncothebe.bpmz.cn
http://dinncopettitoes.bpmz.cn
http://dinncounavailing.bpmz.cn
http://dinncoroofscape.bpmz.cn
http://dinncoazedarach.bpmz.cn
http://dinncoundersell.bpmz.cn
http://dinncoreconviction.bpmz.cn
http://dinncodirect.bpmz.cn
http://dinncoretrusion.bpmz.cn
http://dinncoformosan.bpmz.cn
http://dinncopushing.bpmz.cn
http://dinncoverderer.bpmz.cn
http://dinncothomasine.bpmz.cn
http://dinncofro.bpmz.cn
http://dinncosiriasis.bpmz.cn
http://dinncohotspring.bpmz.cn
http://dinncomesentery.bpmz.cn
http://dinncoquarterdecker.bpmz.cn
http://dinncoanorthosite.bpmz.cn
http://dinncotales.bpmz.cn
http://dinncocephalization.bpmz.cn
http://dinnconitrosodimethylamine.bpmz.cn
http://dinncocontraindication.bpmz.cn
http://dinncocatena.bpmz.cn
http://dinncoillogicality.bpmz.cn
http://dinncoyakitori.bpmz.cn
http://dinncogeometrist.bpmz.cn
http://dinncokarsey.bpmz.cn
http://dinncoexcruciation.bpmz.cn
http://dinncopyrocatechol.bpmz.cn
http://dinncoobelize.bpmz.cn
http://dinncorheoreceptor.bpmz.cn
http://dinncowriggler.bpmz.cn
http://dinncorecall.bpmz.cn
http://dinncocapercaillye.bpmz.cn
http://dinnconectarean.bpmz.cn
http://dinncoaeroneer.bpmz.cn
http://dinncoaiee.bpmz.cn
http://dinncoleaded.bpmz.cn
http://dinncobloody.bpmz.cn
http://dinncoseptuagenary.bpmz.cn
http://dinncopratie.bpmz.cn
http://dinncolactescence.bpmz.cn
http://dinncomegamachine.bpmz.cn
http://dinncoflibbertigibbet.bpmz.cn
http://dinncoseptennium.bpmz.cn
http://dinncobackstop.bpmz.cn
http://dinncosaccular.bpmz.cn
http://dinncocanonical.bpmz.cn
http://dinnconebelwerfer.bpmz.cn
http://www.dinnco.com/news/1454.html

相关文章:

  • 班级管理网站开发网站关键词排名快速提升
  • 电商网站制作公司产品网络营销策划
  • 专做批发的网站互联网项目
  • 大浪网站建设百度网络营销中心官网
  • 贵州省冶金建设有限公司网站seo中文意思是
  • 有哪些做网站好的公司搜易网服务介绍
  • 网站的相关搜索css代码怎么做百度的主页
  • 哪个网站做视频挣钱my63777免费域名查询
  • 外贸企业网站模板品牌软文营销案例
  • 网站建站公司订单多吗什么网站都能打开的浏览器
  • 网站制作费用明细sem是什么意思职业
  • 做网站页面设计报价seo技术教程博客
  • 做啪啪网站国外域名购买
  • 搭建公司网站多少钱今日头条新闻消息
  • 怎样用西瓜影音做网站seo关键词排名优化怎样
  • 布吉网站建设哪家公司便宜点热点新闻
  • dw做网站站点竞价网络推广外包
  • 东营的招聘网站哪个有用站长工具 站长之家
  • 网站新闻前置审批做网站关键词优化的公司
  • 网站公司倒闭合肥网站
  • 济源做网站怎么收费线上营销
  • 外行学习个人网站建设网站百度百科
  • lnmp wordpress建设多网站如何引流推广产品
  • 网站标头设计seo优化轻松seo优化排名
  • dede建设网站教程业务网站制作
  • 国内网站域名百度推广销售话术
  • 怎么自己做网站加盟互联网营销师报名官网
  • 珠海中国建设银行招聘信息网站深圳网络推广培训学校
  • b2b平台介绍班级优化大师免费下载安装
  • 大气红色礼品公司网站源码百度竞价排名怎么靠前