springboot mysql物业管理小程序源码+pc后台

博主介绍:✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计
温馨提示:文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :)

项目名称

springboot mysql物业管理小程序源码+pc后台

演示视频

springboot mysql物业管理小程序源码+pc后台_哔哩哔哩_bilibili

系统介绍

开发环境及工具:

大等于jdk1.8,大于mysql5.5,idea(eclipse),微信开发者工具

技术说明:

springboot mybatis html vue.js bootstrap 小程序

代码注释齐全,没有多余代码,适合学习(毕设),二次开发,包含论文技术相关文档。

功能介绍:

用户端:

登录注册(含授权登录)

首页轮播图,缴费,报修,消息;新闻公告,点击公告进入详情,可评论

点击缴费进入缴费界面,点击待缴费项目缴费即可

点击报修进入报修界面,填写报修内容提交即可

点击消息可以看到消息列表

电话展示常用物业电话点击可拨打

个人中心显示我的信息(可编辑),我的房屋,我的车俩,我的缴费,我的报修

后台管理:

用户管理:查看注册用户信息,及删除

楼宇管理:楼宇增删改查

房屋管理:房屋增删改查

车位管理:车位增删改查

车辆管理:车辆增删改查

缴费管理:缴费删改查

新闻管理:新闻公告增删改查

消息管理:消息展示及给用户发送消息

管理员管理:后台管理员增删改查

系统截图

环境需要

1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可
4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 
5.数据库:MySql 5.7版本;
6.是否Maven项目:否;

技术栈

1. 后端:Spring+SpringMVC+Mybatis
2. 前端:JSP+CSS+JavaScript+jQuery

使用说明

1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;
若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行;
3. 将项目中springmvc-servlet.xml配置文件中的数据库配置改为自己的配置;
4. 运行项目,在浏览器中输入http://localhost:8080/ 登录

POM依赖:

<dependencies>
     
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <scope>runtime</scope>
    </dependency>
     
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-freemarker</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>
    
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
    </dependency>
    <dependency>
	    <groupId>commons-codec</groupId>
	    <artifactId>commons-codec</artifactId>
	</dependency>
    
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.31</version>
    </dependency>
    
    <dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-devtools</artifactId>
		<!-- optional=true, 依赖不会传递, 该项目依赖devtools; 
			之后依赖boot项目的项目如果想要使用devtools, 需要重新引入 -->
		<optional>true</optional>
	</dependency>
	
	<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-websocket</artifactId>
      <version>2.1.3.RELEASE</version><!--$NO-MVN-MAN-VER$-->
    </dependency>
	
	 <!-- webSocket 开始-->
	<dependency>
	    <groupId>javax.websocket</groupId>
	    <artifactId>javax.websocket-api</artifactId>
	    <scope>provided</scope>
	</dependency>
	 
	<dependency>
	    <groupId>javax</groupId>
	    <artifactId>javaee-api</artifactId>
	    <version>8.0</version>
	    <scope>provided</scope>
	</dependency>
	<!-- webSocket 结束-->
	
  </dependencies>

管理员管理控制层:


package com.sxl.controller.admin;

import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import com.sxl.controller.MyController;

@Controller("adminController")
@RequestMapping(value = "/admin")
public class AdminController extends MyController {
	

	@RequestMapping(value = "/index")
	public String frame(Model model, HttpServletRequest request)throws Exception {
		return "/admin/index";
	}
	
	@RequestMapping(value = "/main")
	public String main(Model model, HttpServletRequest request)throws Exception {
		return "/admin/main";
	}
	
	@RequestMapping(value = "/tj1")
	public String tj1(Model model, HttpServletRequest request)throws Exception {
		String sql="select DATE_FORMAT(insertDate,'%Y-%m-%d') dates,sum(allPrice) price from t_order order by DATE_FORMAT(insertDate,'%Y-%m-%d')  desc";
		List<Map> list = db.queryForList(sql);
		model.addAttribute("list", list);
		System.out.println(list);
		return "/admin/tj/tj1";
	}
	
	
	@RequestMapping(value = "/password")
	public String password(Model model, HttpServletRequest request)throws Exception {
		return "/admin/password";
	}
	
	
	@RequestMapping(value = "/changePassword")
	public ResponseEntity<String> loginSave(Model model,HttpServletRequest request,String oldPassword,String newPassword) throws Exception {
		Map admin = getAdmin(request);
		if(oldPassword.equals(admin.get("password").toString())){
			String sql="update t_admin set password=? where id=?";
			db.update(sql, new Object[]{newPassword,admin.get("id")});
			return renderData(true,"1",null);
		}else{
			return renderData(false,"1",null);
		}
	}
}

修改密码业务逻辑:


package com.sxl.controller.admin;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import com.sxl.controller.MyController;

@Controller("userController")
@RequestMapping(value = "/user")
public class UserController extends MyController {
	

	@RequestMapping(value = "/index")
	public String frame(Model model, HttpServletRequest request)throws Exception {
		return "/user/index";
	}
	
	@RequestMapping(value = "/main")
	public String main(Model model, HttpServletRequest request)throws Exception {
		return "/user/main";
	}
	
	
	@RequestMapping(value = "/password")
	public String password(Model model, HttpServletRequest request)throws Exception {
		return "/user/password";
	}
	
	
	@RequestMapping(value = "/changePassword")
	public ResponseEntity<String> loginSave(Model model,HttpServletRequest request,String oldPassword,String newPassword) throws Exception {
		Map user = getUser(request);
		if(oldPassword.equals(user.get("password").toString())){
			String sql="update t_user set password=? where id=?";
			db.update(sql, new Object[]{newPassword,user.get("id")});
			return renderData(true,"1",null);
		}else{
			return renderData(false,"1",null);
		}
	}
	@RequestMapping(value = "/mine")
	public String mine(Model model, HttpServletRequest request)throws Exception {
Map user =getUser(request);Map map = db.queryForMap("select * from t_user where id=?",new Object[]{user.get("id")});model.addAttribute("map", map);		return "/user/mine";
	}
	
	

	@RequestMapping(value = "/mineSave")
	public ResponseEntity<String> mineSave(Model model,HttpServletRequest request,Long id
		,String username,String password,String name,String gh,String mobile) throws Exception{
		int result = 0;
			String sql="update t_user set name=?,gh=?,mobile=? where id=?";
			result = db.update(sql, new Object[]{name,gh,mobile,id});
		if(result==1){
			return renderData(true,"操作成功",null);
		}else{
			return renderData(false,"操作失败",null);
		}
	}
	}

通用管理模块:

package com.sxl.controller;


import java.nio.charset.Charset;
import java.util.Locale;
import java.util.ResourceBundle;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;

import com.sxl.util.JacksonJsonUtil;
import com.sxl.util.StringUtil;
import com.sxl.util.SystemProperties;


public class BaseController {
	public static final Long EXPIRES_IN = 1000 * 3600 * 24 * 1L;// 1天

	@Autowired
	private SystemProperties systemProperties;

	/**
	 * 获得配置文件内容
	 */
	public String getConfig(String key) {
		return systemProperties.getProperties(key);
	}

	/**
	 * 返回服务器地址 like http://192.168.1.1:8441/UUBean/
	 */
	public String getHostUrl(HttpServletRequest request) {
		String hostName = request.getServerName();
		Integer hostPort = request.getServerPort();
		String path = request.getContextPath();

		if (hostPort == 80) {
			return "http://" + hostName + path + "/";
		} else {
			return "http://" + hostName + ":" + hostPort + path + "/";
		}
	}

	/***
	 * 获取当前的website路径 String
	 */
	public static String getWebSite(HttpServletRequest request) {
		String returnUrl = request.getScheme() + "://"
				+ request.getServerName();

		if (request.getServerPort() != 80) {
			returnUrl += ":" + request.getServerPort();
		}

		returnUrl += request.getContextPath();

		return returnUrl;
	}



	/**
	 * 初始化HTTP头.
	 * 
	 * @return HttpHeaders
	 */
	public HttpHeaders initHttpHeaders() {
		HttpHeaders headers = new HttpHeaders();
		MediaType mediaType = new MediaType("text", "html",
				Charset.forName("utf-8"));
		headers.setContentType(mediaType);
		return headers;
	}

	/**
	 * 返回 信息数据
	 * 
	 * @param status
	 * @param msg
	 * @return
	 */
	public ResponseEntity<String> renderMsg(Boolean status, String msg) {
		if (StringUtils.isEmpty(msg)) {
			msg = "";
		}
		String str = "{\"status\":\"" + status + "\",\"msg\":\"" + msg + "\"}";
		ResponseEntity<String> responseEntity = new ResponseEntity<String>(str,
				initHttpHeaders(), HttpStatus.OK);
		return responseEntity;
	}

	/**
	 * 返回obj数据
	 * 
	 * @param status
	 * @param msg
	 * @param obj
	 * @return
	 */
	public ResponseEntity<String> renderData(Boolean status, String msg,
			Object obj) {
		if (StringUtils.isEmpty(msg)) {
			msg = "";
		}
		StringBuffer sb = new StringBuffer();
		sb.append("{");
		sb.append("\"status\":\"" + status + "\",\"msg\":\"" + msg + "\",");
		sb.append("\"data\":" + JacksonJsonUtil.toJson(obj) + "");
		sb.append("}");

		ResponseEntity<String> responseEntity = new ResponseEntity<String>(
				sb.toString(), initHttpHeaders(), HttpStatus.OK);
		return responseEntity;
	}


	/***
	 * 获取IP(如果是多级代理,则得到的是一串IP值)
	 */
	public static String getIpAddr(HttpServletRequest request) {
		String ip = request.getHeader("x-forwarded-for");
		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
			ip = request.getHeader("Proxy-Client-IP");
		}

		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
			ip = request.getHeader("WL-Proxy-Client-IP");
		}

		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
			ip = request.getRemoteAddr();
		}

		if (ip != null && ip.length() > 0) {
			String[] ips = ip.split(",");
			for (int i = 0; i < ips.length; i++) {
				if (!"unknown".equalsIgnoreCase(ips[i])) {
					ip = ips[i];
					break;
				}
			}
		}

		return ip;
	}

	/**
	 * 国际化获得语言内容
	 * 
	 * @param key
	 *            语言key
	 * @param args
	 * @param argsSplit
	 * @param defaultMessage
	 * @param locale
	 * @return
	 */
	public static String getLanguage(String key, String args, String argsSplit,
			String defaultMessage, String locale) {
		String language = "zh";
		String contry = "cn";
		String returnValue = defaultMessage;

		if (!StringUtil.isEmpty(locale)) {
			try {
				String[] localeArray = locale.split("_");
				language = localeArray[0];
				contry = localeArray[1];
			} catch (Exception e) {
			}
		}

		try {
			ResourceBundle resource = ResourceBundle.getBundle("lang.resource",
					new Locale(language, contry));
			returnValue = resource.getString(key);
			if (!StringUtil.isEmpty(args)) {
				String[] argsArray = args.split(argsSplit);
				for (int i = 0; i < argsArray.length; i++) {
					returnValue = returnValue.replace("{" + i + "}",
							argsArray[i]);
				}
			}
		} catch (Exception e) {
		}

		return returnValue;
	}
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
ThinkPHP内核全行业小程序运营管理系统码 自由DIY布局 一键生成小程序,内附安装说明 无需编程,各行业模版直接套用,一键生成,轻松搭建小程序 界面自由DIY,打造个性小程序 可拖拽式DIY布局,开启自定义功能新征程,无需繁琐操作,轻松拖拽即可实现界面布局;同步实时预览,可视化操作让您所见即所得,随心打造个性小程序。 丰富功能组件,应多种场景需求 多样的功能组件,不受行业框架限制,可自由组合适应当前场景,让您轻松满足客户的定制需求。 大量插件可用,实现多样营销功能 积分签到、积分兑换商城、拼团、店内点餐、手机客服等插件可用,满足各种行业场景营销需求,助力客户小程序营销推广。 无需技术基础,轻松玩转小程序 无需代码编程,无需技术基础,简单的操作页面,清晰的模块分划,详尽的功能组件,让您短时间即可轻松玩转小程序。 垂直研发,深度挖掘行业解决方案 深入行业了解不同行业的痛点和需求,致力于解决实际问题,给客户带来实际价值,深度挖掘不同行业的解决方案。 功能介绍 分销模块:帮助企业快速搭建企业独立在线商城,自由选择分销模式,从多方位,多角度提供服务支持,助力商户实现分销渠道裂变销货,连锁门店线上化高效经营。 消息通知:设置商品状态通知、成团通知、预约预定通知、系统表单通知、会员卡开卡通知等消息模板,配置商家收发消息邮箱实现邮件通知。 万能表单:超强大的自定义表单模块,不同行业和岗位的人员不需要特殊技能,都可以方便的创建出符合业务需求的表单小程序。数据收集,简单方便,客户登记、意见反馈、活动报名等轻松搞定。万能表单自动收集并整理数据,帮助用户节省工作时间,高效率、更便捷的完成工作。 文章管理系统:对文章详细内容、所属栏目、访问量、评论、分享操作、底部菜单、关联文章等进行管理。 预约报名:报名设预约报名期,在期限内预约用户进行报名。预约报名期内,用户通过填写和提交个人信息的方式进行报名,在约定期限内报满为止。 充值管理:对充值优惠规则、积分规则等进行设置和管理。 商品管理:对多规格商品、秒杀商品、预约商品进行设置和管理。 组图管理:对图片、幻灯片进行设置和管理小程序管理:对小程序跳转进行管理。 评论管理:对文章、组图、商品等内容下的评论进行审核和管理。 内容库管理:对多种模型的内容(文章、组图、商品)进行快速筛选 会员管理:对会员信息,会员开卡,会员卡折扣,会员卡积分等进行设置和管理。 多商户插件:多商户入驻平台插件 自定义菜单:底部菜单栏DIY,自定义外观、功能。 广告设置:对开屏广告、首页广告、弹窗广告等进行设置和管理。 一键模板:多行业优秀模板可选,一键生成场景适用小程序页面。 积分管理:对分享获取积分、充值获取积分、签到获取积分等多种积分获取形式以及积分兑换进行管理。 手机客服插件:商家为客户提供线上的咨询服务,通过手机客服为客户解决需求问题。 订单管理:对多规格商品、秒杀商品、预约预定商品等订单状态操作。 数据分析:对小程序流量数据、订单数据、交易数据等进行分析,统计活跃用户和热销商品等。 支付宝小程序:支付宝小程序制作与发布,无需编程,一键生成。 百度小程序:百度小程序制作,无需编程,一键生成,百变应用,自由组合。 权限管理:自定义配置用户可使用的功能,分别给予权限。 可拖拽DIY:APP设计制作一站式解决方案,创造出独一无二的专属小程序。无需懂代码,都可以借助DIY官网可视化工具,顷刻间打造自已的个性化移动应用。 多门店:多门店共享数据,可切换不同城市显示,搜索门店并显示门店详情。 付费视频系统:付费视频是为了维护视频版权,促进用户知识付费的一种手段。 多规格商城:多规格商城是指在商城中能够选取规格、多规格匹配。点击购买弹出弹框,用来选择规格和选择购买数量,并和库存匹配。 积分兑换商城:用户获得积分后可以在积分商城中兑换优惠券、礼品卡或商家指定商品等。 多栏目管理:对所有内容模型的栏目进行管理。 积分签到插件:用户登陆商家小程序进行每日签到,获取相应积分。 代理商管理:拥有底层码系统,发展自己的代理商,列表清晰展示各代理商状态,详细设置对代理商账号信息、创建小程序的个数、系统到期时间等进行管理。 店内点餐插件:无需呼叫服务员,省去排队等待时间,立即点餐,即点即用。线上线下零距离对接商家厨房最短时间送餐上桌,一键快捷支付,省时省力。每个订单实时对接后台,财务报表、资金流水、客流量盈亏分析随时掌握。 拼团商城插件:参加拼团的商品都有单独购买价格和拼团价格,在规定时间内达到相应的标准人数购买,则拼团成功。 优惠券:优惠券是一种相对成熟的营销工具,可在后台添加优惠券 付费预约:通过付费缴纳定金的方式进行预约,用户预约成功后在对应时间获得商户指

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全职计算机毕业设计

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值