精华内容
下载资源
问答
  • 基于SSM_OA企业资源邮件管理系统
    2021-03-26 13:18:00

    小型OA企业资源邮件管理系统基于SSM(Spring+SpringMVC+MyBatis)框架,适用于毕业设计,采用javaweb,基于B/S模式,Myeclipse或者eclipse idea为开发工具,mysql数据库,主要包括登录模块、人事管理模块、公告管理模块、产品管理模块、和退出模块等多个模块。
    在这里插入图片描述
    在这里插入图片描述

    本系统主要包含了财务管理、人事管理、公告管理、产品管理、用户信息管理、留言等多个功能模块。下面分别简单阐述一下这几个功能模块需求。
    管理员的登录模块:管理员登录系统后台对本系统其他管理模块进行管理。
    添加管理员模块:向本系统中添加更多的管理人员,管理员包括普通用户和超级管理员。
    财务管理模块:
    财务列表:将数据库的商品表以列表的形式呈现给管理员。
    添加财务:实现管理员添加财务,应该包括名称等信息。
    修改财务:实现管理员修改财务,包括修改财务的等信息。
    产品管理模块:
    产品信息添加:对产品信息进行添加。
    产品信息列表:显示系统的所有产品信息,可以通过关键字查询。
    产品信息删除:对输入错误或过期的产品信息删除。
    人事管理模块:
    人事发布:管理员发布人事,包括标题、类别、内容、图片等。
    人事列表:使用mysql语句查询出来的人事列表,并实现分页。
    人事修改:通过管理员ID来指定要修改的人事,修改其其他的信息。
    人事删除:通过管理员ID来指定要删除的人事,从数据库完全剔除。
    公告管理模块:
    公告信息添加:对公告信息进行添加。
    公告信息列表:显示系统的所有公告信息,可以通过关键字查询。
    公告信息删除:对输入错误或过期的公告信息删除。
    邮件管理模块:
    邮件添加:对邮件进行添加。
    邮件列表:显示系统的所有邮件,可以通过关键字查询。
    邮件删除:对输入错误或过期的邮件删除。
    退出模块:
    管理员退出:管理员用来退出后台系统。
    在这里插入图片描述
    在这里插入图片描述

    目 录
    摘 要 I
    ABSTRACT I
    目 录 III
    第1章 绪论 1
    1.1开发背景 1
    1.2开发意义 1
    1.3研究内容 1
    第2章 主要技术和工具介绍 5
    2.1 SSM 框架 5
    2.1.1. Spring 框架 5
    2.1.2 SpringMVC 6
    2.1.3. MyBatis 的选用 6
    2.2 mysql数据库 6
    2.3 eclipse与Tomcat简介 6
    第3章 系统分析 4
    3.1可行性分析 4
    3.1.1经济可行性 4
    3.1.2技术可行性 4
    3.1.3操作可行性 4
    3.2需求分析 4
    3.3业务流程分析 5
    3.4数据流程分析 5
    第4章 系统设计 8
    4.1系统结构设计 8
    4.2功能模块设计 8
    4.3数据库设计 9
    4.3.1数据库设计概述 9
    4.3.1概念设计 9
    4.3.2表设计 11
    第5章 系统实现 15
    5.1基本论坛 15
    5.2主页面的实现 15
    5.3登录模块的实现 15
    5.4人事管理模块的实现 17
    5.6公告管理模块的实现 18
    5.6产品管理模块的实现 19
    5.7财务管理模块的实现 20
    5.8邮件管理模块的实现 21
    第6章 系统测试 23
    6.1测试目的 23
    6.2测试概述 23
    6.3单元测试 23
    6.3.1登录测试 23
    6.3.2人事测试 24
    6.4集成测试 25
    第7章 总结 26
    致 谢 27
    参考文献 27

    更多相关内容
  • 学习SSM框架,学习Java EE,学习Java项目
  • 基于Java的SSM框架技术,实现用户写信、收信、已发送、用户中心等功能
  • 基于SSM邮件管理系统
  • maven分模块项目+SSM宿舍管理系统+spring mvc+jquery+bootstrap+多模块+svn+分角色登录+分页+拦截器+收邮件。发邮件等。。。。。。 运行环境 jdk7+tomcat7+mysql+IntelliJ IDEA+maven 项目技术(必填) spring+...
  • 基于SSM实现的物流管理系统,导入eclipse,jdk1.8,tomcat8.0,如果导入后报错,记得右键项目properties,选择project Facets .然后右边java对应的version选择1.8,然后alt+f5更新下maven。
  • 基于SSM框架的会议管理系统系统,用户表。会议表,会议室表 用到的技术和实现的功能:存储过程用于数据实时变化,Ajax同步和异步技术,邮件发送功能需要的技术,用户登录权限,过滤器(非登录用户不可访问),eharts...
  • 基于ssm火车订票系统

    2021-10-02 09:23:28
    基于ssm的火车订票系统,功能包括: 系统管理:用户管理、角色管理、添加账号。 火车信息管理:火车信息管理、添加车次。 车站信息管理:车站信息管理、添加车站。 线路信息管理:线路信息管理。 车票信息管理:车票...
  • 功能点 ... 个人中心(头像修改、信息修改、评论管理、收藏管理、委托出租、成交记录) 管理员(各种信息的管理,入口页面为/WebContent/jsp/... 发送邮件提醒 找回密码 地图找房 用户数据分析 各种信息审核
  • 系统开发环境以及版本 操作系统: Windows_7 集成开发工具: Eclipse EE_4.7 编译环境:JDK_1.8 Web服务器:Tomcat_9.0 ...基于aop切面的日志管理 Layui前端框架 登录验证码 富文本输入框 md5加密加盐
  • 基于javaweb SSM邮件收发信息系统(数据库+源码+论文)实现了对登录、注册、邮件收发消息和通讯录添加以及草稿箱和个人设置模块的代码编写和效果实现

    🍅 作者主页:Java李杨勇 

    🍅 简介:Java领域优质创作者🏆、Java李杨勇公号作者✌  简历模板、学习资料、面试题库、技术互助【关注我,都给你】

    🍅文末获取源码联系方式 📝    

    项目使用java SpringMVC、 mybatis、jquery为核心技术编写

    多的不说,直接上一部分效果图吧

    主要实现功能:
     

    1. 用户模块管理:用户登录邮箱、用户注册邮箱

    2.邮件信息管理写邮件、发送邮件、收邮件信息

    3.草稿箱管理:在写邮箱的时候可以存为草稿箱编辑

    4.通讯录管理添加、删除联系人信息

    5.个人账号设置:修改个人邮箱信息

    源码结构图:

    用户登录:

    注册:

    系统主页功能

    收发件和草稿箱:

    通讯录:

    账户设置:

    相关系统设计实现推荐:

    基于java springboot+mybatis电影售票网站管理系统前台+后台设计和实现

    基于java ssm springboot+mybatis酒庄内部管理系统设计和实现

    基于JAVA springboot+mybatis智慧生活分享平台设计和实现

    查看更多博主首页更多实战项目 >>>

    获取完整源码:

    大家点赞、收藏、关注、评论啦 、查看👇🏻👇🏻👇🏻微信公众号获取联系👇🏻👇🏻👇🏻

     精彩专栏推荐:

    Java毕设项目精品实战案例《100套》

    HTML5大作业实战案例《100套》

    web前端网页实战《100套》

    展开全文
  • 基于SSM框架开发的企业物流(快递)配送管理平台。 3.功能简介 4. 技术栈: Jsp + SSM + MySQL + LayUI + Bootstrap 5. 运行环境 IntelliJ IDEA/Eclipse + MySQL5.7+ JDK1.8 + Maven3.5.4 + Tomcat9.0 6.前台...

    1. 获取代码:

    添加博主微信获取,备注来源:
    mryang511688

    2. 项目描述

    基于SSM框架开发的企业物流(快递)配送管理平台。

    3.功能简介

    在这里插入图片描述

    4. 技术栈:

    Jsp + SSM + MySQL + LayUI + Bootstrap

    5. 运行环境

    IntelliJ IDEA/Eclipse + MySQL5.7+ JDK1.8 + Maven3.5.4 + Tomcat9.0

    6.前台界面

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    7. 后台界面

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    8. 代码展示

    • 8.1 货物的实体类
    package cn.javabs.logistics.entity.common;
    
    import java.math.BigDecimal;
    
    import org.springframework.stereotype.Component;
    
    import cn.javabs.logistics.entity.admin.Enterprise;
    import cn.javabs.logistics.entity.admin.GoodsType;
    
    /**
     * 货物实体类
     * 
     * @author Mryang
     *
     */
    @Component
    public class Goods {
    
    	public static final int NAME_MAX_LENGTH = 18;// 名称最大长度
    	public static final int AMOUNT_MAX_VALUE = 1000000;// 可出售数量最大值
    	public static final int ADDRESS_MAX_LENGTH = 50;// 地址最大长度
    	public static final int SYNOPSIS_MAX_LENGTH = 50;// 简介最大长度
    
    	public static final int NOT_SELLING = 0;// 暂停售卖
    	public static final int IS_SELLING = 1;// 正在售卖
    
    	private Long id;// id
    	private String name;// 名称
    	private String number;// 编号
    	private Long goodsTypeId;// 货物类型id
    	private int amount;// 可出售数量
    	private int waitingQuantity = 0;// 待发货数量
    	private BigDecimal price;// 售价
    	private Long enterpriseId;// 企业id
    	private int status;// 状态
    	private String photo;// 图片
    	private String address;// 发货地址
    	private String synopsis;// 简介
    	private GoodsType goodsType;// 分类
    	private Enterprise enterprise;// 企业
    	private String details;// 详情
    
    	public String getDetails() {
    		return details;
    	}
    
    	public void setDetails(String details) {
    		this.details = details;
    	}
    
    	public Enterprise getEnterprise() {
    		return enterprise;
    	}
    
    	public void setEnterprise(Enterprise enterprise) {
    		this.enterprise = enterprise;
    	}
    
    	public GoodsType getGoodsType() {
    		return goodsType;
    	}
    
    	public void setGoodsType(GoodsType goodsType) {
    		this.goodsType = goodsType;
    	}
    
    	public String getSynopsis() {
    		return synopsis;
    	}
    
    	public void setSynopsis(String synopsis) {
    		this.synopsis = synopsis;
    	}
    
    	public String getPhoto() {
    		return photo;
    	}
    
    	public void setPhoto(String photo) {
    		this.photo = photo;
    	}
    
    	public Long getId() {
    		return id;
    	}
    
    	public void setId(Long id) {
    		this.id = id;
    	}
    
    	public String getName() {
    		return name;
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    
    	public String getNumber() {
    		return number;
    	}
    
    	public void setNumber(String number) {
    		this.number = number;
    	}
    
    	public Long getGoodsTypeId() {
    		return goodsTypeId;
    	}
    
    	public void setGoodsTypeId(Long goodsTypeId) {
    		this.goodsTypeId = goodsTypeId;
    	}
    
    	public int getAmount() {
    		return amount;
    	}
    
    	public void setAmount(int amount) {
    		this.amount = amount;
    	}
    
    	public int getWaitingQuantity() {
    		return waitingQuantity;
    	}
    
    	public void setWaitingQuantity(int waitingQuantity) {
    		this.waitingQuantity = waitingQuantity;
    	}
    
    	public BigDecimal getPrice() {
    		return price;
    	}
    
    	public void setPrice(BigDecimal price) {
    		this.price = price;
    	}
    
    	public Long getEnterpriseId() {
    		return enterpriseId;
    	}
    
    	public void setEnterpriseId(Long enterpriseId) {
    		this.enterpriseId = enterpriseId;
    	}
    
    	public int getStatus() {
    		return status;
    	}
    
    	public void setStatus(int status) {
    		this.status = status;
    	}
    
    	public String getAddress() {
    		return address;
    	}
    
    	public void setAddress(String address) {
    		this.address = address;
    	}
    
    	@Override
    	public String toString() {
    		return "Goods [id=" + id + ", name=" + name + ", number=" + number + ", goodsTypeId=" + goodsTypeId
    				+ ", amount=" + amount + ", waitingQuantity=" + waitingQuantity + ", price=" + price + ", enterpriseId="
    				+ enterpriseId + ", status=" + status + ", photo=" + photo + ", address=" + address + ", synopsis="
    				+ synopsis + ", goodsType=" + goodsType + ", enterprise=" + enterprise + "]";
    	}
    
    }
    
    
    • 8.2 货物的controller控制器
    package cn.javabs.logistics.controller.admin;
    
    import java.io.File;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.Date;
    import java.util.HashMap;
    import java.util.Map;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.apache.commons.lang.StringUtils;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.ResponseBody;
    import org.springframework.web.multipart.MultipartFile;
    import org.springframework.web.servlet.ModelAndView;
    
    import cn.javabs.logistics.bean.LoginTypeEnum;
    import cn.javabs.logistics.bean.PrefixEnum;
    import cn.javabs.logistics.entity.admin.Enterprise;
    import cn.javabs.logistics.entity.common.Goods;
    import cn.javabs.logistics.page.admin.Page;
    import cn.javabs.logistics.service.admin.EnterpriseService;
    import cn.javabs.logistics.service.admin.GoodsTypeService;
    import cn.javabs.logistics.service.common.GoodsService;
    import cn.javabs.logistics.util.StringUtil;
    
    import net.sf.json.JSONObject;
    
    @Controller
    @RequestMapping("/admin/goods")
    public class GoodsController {
    
    	@Autowired
    	private GoodsService goodsService;
    
    	@Autowired
    	private GoodsTypeService goodsTypeService;
    
    	@Autowired
    	private EnterpriseService enterpriseService;
    
    	/**
    	 * 列表页面
    	 *
    	 * @param model
    	 * @return
    	 */
    	@RequestMapping(value = "/list", method = RequestMethod.GET)
    	public ModelAndView list(ModelAndView model, HttpServletRequest request) {
    		Map<String, Object> queryMap = new HashMap<String, Object>();
    		model.addObject("goodsTypeList", goodsTypeService.findList(queryMap));
    		Object loginType = request.getSession().getAttribute("loginType");
    		if ((Integer) loginType == LoginTypeEnum.ENTERPRISE.getCode()) {
    			Enterprise loginEnterprise = (Enterprise) request.getSession().getAttribute("admin");
    			Enterprise enterprise = enterpriseService.findById(loginEnterprise.getId());
    			model.addObject("address", enterprise.getAddress());
    		} else {
    			model.addObject("address", "");
    		}
    		model.setViewName("goods/list");
    		return model;
    	}
    
    	/**
    	 * 获取列表
    	 *
    	 * @param page
    	 * @param name
    	 * @return
    	 */
    	@RequestMapping(value = "/list", method = RequestMethod.POST)
    	@ResponseBody
    	public Map<String, Object> getList(Page page, HttpServletRequest request,
    			@RequestParam(name = "name", required = false, defaultValue = "") String name,
    			@RequestParam(name = "number", required = false, defaultValue = "") String number,
    			@RequestParam(name = "goodsTypeId", required = false) Long goodsTypeId) {
    		Map<String, Object> ret = new HashMap<>();
    		Map<String, Object> queryMap = new HashMap<String, Object>();
    		Object loginType = request.getSession().getAttribute("loginType");
    		if ((Integer) loginType == LoginTypeEnum.ENTERPRISE.getCode()) {
    			Enterprise enterprise = (Enterprise) request.getSession().getAttribute("admin");
    			queryMap.put("enterpriseId", enterprise.getId());
    		}
    		queryMap.put("name", name);
    		queryMap.put("number", number);
    		queryMap.put("goodsTypeId", goodsTypeId);
    		queryMap.put("offset", page.getOffset());
    		queryMap.put("pageSize", page.getRows());
    		ret.put("rows", goodsService.findList(queryMap));
    		ret.put("total", goodsService.getTotal(queryMap));
    		return ret;
    	}
    
    	/**
    	 * 添加货物
    	 * 
    	 * @param goods
    	 * @param request
    	 * @return
    	 */
    	@RequestMapping(value = "/add", method = RequestMethod.POST)
    	@ResponseBody
    	public Map<String, String> add(Goods goods, HttpServletRequest request) {
    		Map<String, String> ret = new HashMap<String, String>();
    		Object loginType = request.getSession().getAttribute("loginType");
    		if ((Integer) loginType != LoginTypeEnum.ENTERPRISE.getCode()) {
    			ret.put("type", "error");
    			ret.put("msg", "请登录企业用户!");
    			return ret;
    		}
    		if (judge(goods, ret)) {
    			return ret;
    		}
    		if (goods.getAmount() < 1 || goods.getAmount() > Goods.AMOUNT_MAX_VALUE) {
    			ret.put("type", "error");
    			ret.put("msg", "数量需在1~" + Goods.AMOUNT_MAX_VALUE + "之间!");
    			return ret;
    		}
    		Enterprise enterprise = (Enterprise) request.getSession().getAttribute("admin");
    		goods.setEnterpriseId(enterprise.getId());
    		String number = StringUtil.generateSn(PrefixEnum.GOODS.getValue());
    		goods.setNumber(number);
    		if (goodsService.add(goods) <= 0) {
    			ret.put("type", "error");
    			ret.put("msg", "添加失败!");
    			return ret;
    		}
    		ret.put("type", "success");
    		ret.put("msg", "添加成功!");
    		return ret;
    	}
    
    	/**
    	 * 编辑
    	 * 
    	 * @param goods
    	 * @return
    	 */
    	@RequestMapping(value = "/edit", method = RequestMethod.POST)
    	@ResponseBody
    	public Map<String, String> edit(Goods goods, HttpServletRequest request) {
    		Map<String, String> ret = new HashMap<String, String>();
    		Object loginType = request.getSession().getAttribute("loginType");
    		if ((Integer) loginType != LoginTypeEnum.ENTERPRISE.getCode()) {
    			ret.put("type", "error");
    			ret.put("msg", "请登录企业用户!");
    			return ret;
    		}
    		if (judge(goods, ret)) {
    			return ret;
    		}
    		if (goodsService.edit(goods) <= 0) {
    			ret.put("type", "error");
    			ret.put("msg", "编辑失败!");
    			return ret;
    		}
    		ret.put("type", "success");
    		ret.put("msg", "编辑成功!");
    		return ret;
    	}
    
    	/**
    	 * 批量删除
    	 * 
    	 * @param ids
    	 * @return
    	 */
    	@RequestMapping(value = "/delete", method = RequestMethod.POST)
    	@ResponseBody
    	public Map<String, String> delete(String ids) {
    		Map<String, String> ret = new HashMap<String, String>();
    		if (StringUtils.isEmpty(ids)) {
    			ret.put("type", "error");
    			ret.put("msg", "选择要删除的数据!");
    			return ret;
    		}
    		if (ids.contains(",")) {
    			ids = ids.substring(0, ids.length() - 1);
    		}
    		try {
    			if (goodsService.delete(ids) <= 0) {
    				ret.put("type", "error");
    				ret.put("msg", "删除失败!");
    				return ret;
    			}
    		} catch (Exception e) {
    			ret.put("type", "error");
    			ret.put("msg", "所选择数据中有数据存在关联数据,无法删除!");
    			return ret;
    		}
    
    		ret.put("type", "success");
    		ret.put("msg", "删除成功!");
    		return ret;
    	}
    
    	// 判断
    	private boolean judge(Goods goods, Map<String, String> ret) {
    		if (goods == null) {
    			ret.put("type", "error");
    			ret.put("msg", "请填写正确的信息!");
    			return true;
    		}
    		if (goods.getGoodsTypeId() == null) {
    			ret.put("type", "error");
    			ret.put("msg", "请选择分类!");
    			return true;
    		}
    		if (StringUtils.isEmpty(goods.getPhoto())) {
    			ret.put("type", "error");
    			ret.put("msg", "请上传货物图片!");
    			return true;
    		}
    		if (StringUtils.isEmpty(goods.getName())) {
    			ret.put("type", "error");
    			ret.put("msg", "请填写名称!");
    			return true;
    		}
    		if (goods.getName().length() > Goods.NAME_MAX_LENGTH) {
    			ret.put("type", "error");
    			ret.put("msg", "名称最多为" + Goods.NAME_MAX_LENGTH + "位!");
    			return true;
    		}
    		if (StringUtils.isEmpty(goods.getAddress())) {
    			ret.put("type", "error");
    			ret.put("msg", "请填写发货地址!");
    			return true;
    		}
    		if (goods.getAddress().length() > Goods.ADDRESS_MAX_LENGTH) {
    			ret.put("type", "error");
    			ret.put("msg", "地址最多为" + Goods.ADDRESS_MAX_LENGTH + "位!");
    			return true;
    		}
    		return false;
    	}
    
    	@RequestMapping(value = "/addAmount", method = RequestMethod.POST)
    	@ResponseBody
    	public Map<String, String> addAmount(Goods goods) {
    		Map<String, String> ret = new HashMap<String, String>();
    		if (goods == null) {
    			ret.put("type", "error");
    			ret.put("msg", "请填写正确的信息!");
    			return ret;
    		}
    		if (goods.getAmount() < 1 || goods.getAmount() > Goods.AMOUNT_MAX_VALUE) {
    			ret.put("type", "error");
    			ret.put("msg", "数量需在1~" + Goods.AMOUNT_MAX_VALUE + "之间!");
    			return ret;
    		}
    		Goods byId = goodsService.findById(goods.getId());
    		byId.setAmount(byId.getAmount() + goods.getAmount());
    		if (goodsService.addAmount(byId) <= 0) {
    			ret.put("type", "error");
    			ret.put("msg", "数量添加失败,请联系管理员!");
    			return ret;
    		}
    		ret.put("type", "success");
    		ret.put("msg", "添加成功!");
    		return ret;
    	}
    
    	@RequestMapping(value = "/editDetails", method = RequestMethod.POST)
    	@ResponseBody
    	public Map<String, String> editDetails(Goods goods) {
    		Map<String, String> ret = new HashMap<String, String>();
    		if (goods == null) {
    			ret.put("type", "error");
    			ret.put("msg", "请填写正确的信息!");
    			return ret;
    		}
    		if (goodsService.editDetails(goods) <= 0) {
    			ret.put("type", "error");
    			ret.put("msg", "详情操作失败!");
    			return ret;
    		}
    		ret.put("type", "success");
    		ret.put("msg", "操作成功!");
    		return ret;
    	}
    
    	/**
    	 * 富文本kindedit的图片上传
    	 * 
    	 * @param request
    	 * @param response
    	 * @param imgFile
    	 * @throws IOException
    	 */
    	@ResponseBody
    	@RequestMapping(value = "/uploadFile", method = RequestMethod.POST)
    	public void uploadFile(HttpServletRequest request, HttpServletResponse response,
    			@RequestParam("imgFile") MultipartFile imgFile) throws IOException {
    		response.setContentType("application/json; charset=UTF-8");
    		JSONObject obj = new JSONObject();
    		/* Map obj = new HashMap<>(); */
    		obj.put("error", 0);
    		String massage = null;
    		PrintWriter out = response.getWriter();
    		// 判断文件类型是否是图片
    		String originalFilename = imgFile.getOriginalFilename();
    		// 获取文件后缀
    		String suffix = originalFilename.substring(originalFilename.lastIndexOf(".") + 1, originalFilename.length());
    		if (!"jpg,jpeg,gif,png".toUpperCase().contains(suffix.toUpperCase())) {
    			massage = "图片格式不正确,请选择jpg,jpeg,gif,png格式的图片!";
    			out.write("图片格式不正确,请选择jpg,jpeg,gif,png格式的图片!");
    			obj.put("error", 1);
    		}
    		if (imgFile.getSize() / 1024 > 1024 * 1024 * 1024) {
    			massage = "图片大小不能超过10M!";
    			out.write("图片大小不能超过10M");
    			obj.put("error", 1);
    		}
    		String savePath = request.getServletContext().getRealPath("/") + "/resources/upload/";
    		// 准备保存文件
    		File filePath = new File(savePath);
    		if (!filePath.exists()) {
    			// 若不存在文件夹,则创建一个文件夹
    			filePath.mkdir();
    		}
    
    		String filename = new Date().getTime() + "." + suffix;
    		try {
    			imgFile.transferTo(new File(savePath + filename));
    		} catch (IllegalStateException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		int error = (Integer) obj.get("error");
    		if (error == 0) {
    			obj.put("url", request.getServletContext().getContextPath() + "/resources/upload/" + filename);
    		} else {
    			obj.put("message", massage);
    		}
    		out.println(obj.toString());
    	}
    
    }
    
    
    • 8.3 货物的业务逻辑接口
    package cn.javabs.logistics.service.common;
    
    import java.util.List;
    import java.util.Map;
    
    import org.springframework.stereotype.Service;
    
    import cn.javabs.logistics.entity.common.Goods;
    import cn.javabs.logistics.entity.common.Orders;
    import cn.javabs.logistics.entity.common.Person;
    
    /**
     * 货物Service
     */
    @Service
    public interface GoodsService {
    
    	public Goods findById(Long id);// 根据id查找
    
    	public int add(Goods goods);// 添加
    
    	public int edit(Goods goods);// 编辑
    
    	public int delete(String ids);// 删除
    
    	public List<Goods> findList(Map<String, Object> queryMap);
    
    	public int getTotal(Map<String, Object> queryMap);
    
    	public int addAmount(Goods goods);// 添加货物数量
    
    	public List<Goods> findSendingList(Map<String, Object> queryMap);// 查询出售中的列表
    
    	public int findSendingTotal(Map<String, Object> queryMap);// 查询数量
    
    	public int editDetails(Goods goods);// 编辑详情
    
    	public int buyGoods(Goods goods, Person person, Orders orders);
    
    }
    
    
    • 8.4 货物的业务逻辑接口的实现类
    package cn.javabs.logistics.service.common.impl;
    
    import java.util.List;
    import java.util.Map;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    import org.springframework.transaction.annotation.Transactional;
    
    import cn.javabs.logistics.dao.admin.EnterpriseDao;
    import cn.javabs.logistics.dao.common.GoodsDao;
    import cn.javabs.logistics.dao.common.OrdersDao;
    import cn.javabs.logistics.dao.common.PersonDao;
    import cn.javabs.logistics.entity.admin.Enterprise;
    import cn.javabs.logistics.entity.common.Goods;
    import cn.javabs.logistics.entity.common.Orders;
    import cn.javabs.logistics.entity.common.Person;
    import cn.javabs.logistics.service.common.GoodsService;
    
    /**
     * 货物Service
     */
    @Service
    public class GoodsServiceImpl implements GoodsService {
    
    	@Autowired
    	private GoodsDao goodsDao;
    
    	@Autowired
    	private PersonDao personDao;
    
    	@Autowired
    	private EnterpriseDao enterpriseDao;
    
    	@Autowired
    	private OrdersDao ordersDao;
    
    	@Override
    	public Goods findById(Long id) {
    		return goodsDao.findById(id);
    	}
    
    	@Override
    	public int add(Goods goods) {
    		return goodsDao.add(goods);
    	}
    
    	@Override
    	public int edit(Goods goods) {
    		return goodsDao.edit(goods);
    	}
    
    	@Override
    	public int delete(String ids) {
    		return goodsDao.delete(ids);
    	}
    
    	@Override
    	public List<Goods> findList(Map<String, Object> queryMap) {
    		return goodsDao.findList(queryMap);
    	}
    
    	@Override
    	public int getTotal(Map<String, Object> queryMap) {
    		return goodsDao.getTotal(queryMap);
    	}
    
    	@Override
    	public int addAmount(Goods goods) {
    		return goodsDao.addAmount(goods);
    	}
    
    	@Override
    	public List<Goods> findSendingList(Map<String, Object> queryMap) {
    		// TODO Auto-generated method stub
    		return goodsDao.findSendingList(queryMap);
    	}
    
    	@Override
    	public int findSendingTotal(Map<String, Object> queryMap) {
    		return goodsDao.findSendingTotal(queryMap);
    	}
    
    	@Override
    	public int editDetails(Goods goods) {
    		// TODO Auto-generated method stub
    		return goodsDao.editDetails(goods);
    	}
    
    	/**
    	 * 购买商品
    	 * 
    	 * @param goods
    	 * @param person
    	 * @param order
    	 * @return
    	 */
    	@Override
    	@Transactional
    	public int buyGoods(Goods goods, Person person, Orders orders) {
    		// 前台用户修改余额
    		person.setBalance(person.getBalance().subtract(orders.getPrice()));
    		personDao.editBalance(person);
    		// 货物对应的企业修改余额
    		Enterprise enterprise = enterpriseDao.findById(goods.getEnterpriseId());
    		enterprise.setBalance(enterprise.getBalance().add(orders.getPrice()));
    		enterpriseDao.editBalance(enterprise);
    		ordersDao.add(orders);
    		goods.setAmount(goods.getAmount() - orders.getQuantity());
    		goods.setWaitingQuantity(goods.getWaitingQuantity() + orders.getQuantity());
    		return goodsDao.editAmountAndWaitingQuantity(goods);
    	}
    
    }
    
    
    • 8.5 货物的数据持久层的接口
    package cn.javabs.logistics.dao.common;
    
    import java.util.List;
    import java.util.Map;
    
    import org.springframework.stereotype.Repository;
    
    import cn.javabs.logistics.entity.common.Goods;
    
    @Repository
    public interface GoodsDao {
    
    	public Goods findById(Long id);// 根据id查找
    
    	public int add(Goods goods);// 添加
    
    	public int edit(Goods goods);// 编辑
    
    	public int delete(String ids);// 删除
    
    	public List<Goods> findList(Map<String, Object> queryMap);
    
    	public int getTotal(Map<String, Object> queryMap);
    
    	public int addAmount(Goods goods);// 添加货物数量
    
    	public List<Goods> findSendingList(Map<String, Object> queryMap);// 查询出售中货物
    
    	public int findSendingTotal(Map<String, Object> queryMap);// 查询数量
    
    	public int editDetails(Goods goods);// 编辑详情
    
    	public int editAmountAndWaitingQuantity(Goods goods);// 购买后对数量进行修改
    
    	public int editWaitingQuantity(Goods goods);// 修改待发货数量
    }
    
    
    • 8.6 货物的数据持久层的接口的映射文件
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE mapper
            PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="cn.javabs.logistics.dao.common.GoodsDao">
        <!-- 根据id查找 -->
        <select id="findById" parameterType="Long" resultType="Goods">
    		select * from goods where id = #{id}
    	</select>
        <!-- 添加-->
        <insert id="add" parameterType="Goods">
    		insert into goods(id,name,number,goodsTypeId,amount,waitingQuantity,price,enterpriseId,status,photo,address,synopsis)
    		values(null,#{name},#{number},#{goodsTypeId},#{amount},#{waitingQuantity},#{price},#{enterpriseId},#{status},#{photo},#{address},#{synopsis})
    	</insert>
        <!-- 修改货物数量-->
        <update id="addAmount" parameterType="Goods">
    		update goods set amount = #{amount} where id = #{id}
    	</update>
    	<!-- 修改货物待发货数量-->
        <update id="editWaitingQuantity" parameterType="Goods">
    		update goods set waitingQuantity=#{waitingQuantity} where id = #{id}
    	</update>
        <!-- 修改-->
        <update id="edit" parameterType="Goods">
    		update goods set name = #{name},goodsTypeId=#{goodsTypeId},
    		price = #{price},status= #{status},photo=#{photo},address=#{address},synopsis=#{synopsis} where id = #{id}
    	</update>
        <!-- 修改-->
        <update id="editAmountAndWaitingQuantity" parameterType="Goods">
    		update goods set amount=#{amount},waitingQuantity=#{waitingQuantity} where id = #{id}
    	</update>
    	<!-- 修改-->
        <update id="editDetails" parameterType="Goods">
    		update goods set details=#{details} where id = #{id}
    	</update>
        <!-- 删除 -->
        <delete id="delete" parameterType="String">
    		delete from goods where id in(${value})
    	</delete>
        <!-- 分页获取列表 -->
        <select id="findList" parameterType="Map" resultType="Goods">
            select * from goods where 1 = 1
            <if test="name != null">
                and name like '%${name}%'
            </if>
            <if test="goodsTypeId != null">
                and goodsTypeId = #{goodsTypeId}
            </if>
            <if test="number != null">
                and number like '%${number}%'
            </if>
            <if test="enterpriseId != null">
                and enterpriseId = #{enterpriseId}
            </if>
            <if test="offset != null and pageSize != null">
                limit #{offset},#{pageSize}
            </if>
        </select>
        <!-- 获取符合结果的总记录数 -->
        <select id="getTotal" parameterType="Map" resultType="Integer">
            select count(*) from goods where 1 = 1
            <if test="name != null">
                and name like '%${name}%'
            </if>
            <if test="enterpriseId != null">
                and enterpriseId = ${enterpriseId}
            </if>
        </select>
    
        <select id="findSendingTotal" parameterType="Map" resultType="Integer">
            select count(*)
            from goods where 1 = 1
            <if test="status != null">
                and status = #{status} 
            </if>
            <if test="name != null">
                and name like '%${name}%'
            </if>
            <if test="goodsTypeId != null">
                and goodsTypeId = #{goodsTypeId}
            </if>
        </select>
    
        <select id="findSendingList" parameterType="Map" resultMap="ResultMap">
            select g.*,t.name tName,e.username eUsername
            from (goods g left join goods_type t on g.goodsTypeId = t.id) 
            LEFT JOIN enterprise e on g.enterpriseId = e.id where 1 = 1
            <if test="status != null">
                and g.status = #{status}
            </if>
            <if test="name != null">
                and g.name like '%${name}%'
            </if>
            <if test="goodsTypeId != null">
                and g.goodsTypeId = #{goodsTypeId}
            </if>
            order by g.id desc
            <if test="offset != null and pageSize != null">
                limit #{offset},#{pageSize}
            </if>
        </select>
        
        <resultMap type="Goods" id="ResultMap">
        	<id property="id" column="id"/>
    		<result column="name" property="name"/>
    		<result column="number" property="number"/>
    		<result column="goodsTypeId" property="goodsTypeId"/>
    		<result column="amount" property="amount"/>
    		<result column="price" property="price"/>
    		<result column="enterpriseId" property="enterpriseId"/>
    		<result column="photo" property="photo"/>
    		<result column="address" property="address"/>
    		<result column="synopsis" property="synopsis"/>
    		<association property="goodsType" column="goodsType"
    		javaType="GoodsType" resultMap="goodsTypeResult"/>
    		<association property="enterprise" column="enterprise"
    		javaType="Enterprise" resultMap="enterpriseResult"/>
        </resultMap>
        
        <resultMap type="GoodsType" id="goodsTypeResult">
    		<result column="tName" property="name"/>
    	</resultMap>
    	
    	<resultMap type="Enterprise" id="enterpriseResult">
    		<result column="eUsername" property="username"/>
    		<result column="address" property="address"/>
    	</resultMap>
    </mapper>
    

    作者: 杨校

    出处: https://mryang.blog.csdn.net

    有意源码研究Wx-Me:mryang511688

    分享是快乐的,也见证了个人成长历程,文章大多都是工作经验总结以及平时学习积累,基于自身认知不足之处在所难免,也请大家指正,共同进步。

    本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 如有问题, 可邮件(397583050@qq.com)咨询

    展开全文
  • java-第23期基于ssm培训教务管理系统 1、项目简述 功能: 区分为超级管理员、教师、学生, 不同的角色进去看到的功能不一样, 管理员包含以下功能: 系统管理 员工管理 角色管理 角色变更 权限管理 权限变更 数据...
  • 基于ssm的应急物资管理系统 环境:开发工具:idea,数据库:MySQL5.7 jdk1.8 Tomcat8.5 架构:后端ssm,前端jsp 主要功能: 管理员:用户管理、系统管理、物资管理、组织管理等功能 普通用户:邮件管理、查看公告、...

    基于ssm的应急物资管理系统

    环境:开发工具:idea,数据库:MySQL5.7 jdk1.8 Tomcat8.5
    架构:后端ssm,前端jsp
    主要功能:
    管理员:用户管理、系统管理、物资管理、组织管理等功能
    普通用户:邮件管理、查看公告、突发事件等功能

    项目截图:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    想要的同学,点击获取

    展开全文
  • 学生宿舍管理系统SSM/Layui框架,毕业设计) 项目可包部署搭建 JAVA+MYSQL 关键字(亮点) 毕业设计???? MD5加密???? SSM框架???? Layui框架???? 二 主要功能 管理员的登录与登出 管理员,班级,学生,宿舍,卫生,访客...
  • 本系统是利用ssm框架做的完整的图书管理系统,包含后前台和后台,涉及到权限登录,发送邮件,答题模块,借书模块等等诸多功能。
  • 基于SSM的房屋租赁管理系统 精品源码 带项目讲解视频 附带项目视频讲解! 一.功能介绍 包括管理员、房东、租客三种角色,外加游客(未登录情况) 出租类型包含整租和合租权限 游客 < 租客 < 房东 ...
  • 基于SSM开发的客户关系管理系统,客户管理系统 系统说明 系统开发环境以及版本 操作系统: Windows_7 集成开发工具: Eclipse EE_4.7 编译环境:JDK_1.8 Web服务器:Tomcat_9.0 数据库:MySQL_5.7.23 系统框架 ...
  • ## 基于java的停车场管理系统 ### 1.基本实现了停车场该有的功能。 比如会员管理,收发邮件,优惠券生成与发放,车辆出库入库,自动计算停车费用,记录违章信息,记录停车信息等等。 ### 2.集成了车牌识别这部分...
  • 1、本系统是一个地方性旅游网站,后台基于SSM框架,前台使用BootStrap、js、jsp实现,数据库试用mysql; 2、功能点分析 1)注册成功会发送邮件,封装了邮件的工具类; 2)注册时候会对密码进行MD5加密;同样每次...
  • 基于SSM框架的学生信息管理系统(下)

    千次阅读 热门讨论 2020-12-31 21:27:41
    基于SSM框架的学生信息管理系统(下) 开发步骤 界面开发和数据传输 前端框架:jquery easy-ui及其API文档 前后端数据传输交互:jquery的ajax 登录 spring-mvc拦截器 public class LoginInterceptor implements ...
  • 基于SSM框架的校园迎新信息管理系统

    千次阅读 多人点赞 2021-01-20 19:48:05
    校园迎新信息管理系统 一、主要技术: 前端:jQuery、bootstrap 后端:spring、springmvc、mybatis 集成开发环境:Intellij IDEA 编程语言:java 数据库:mysql maven仓库 git代码托管 二、需求分析: 1、管理员模块: (1...
  • 基于SSM框架的学生信息管理系统(中)

    千次阅读 热门讨论 2020-12-28 23:00:30
    基于SSM框架的学生信息管理系统(中) 项目开发步骤 数据库设计 数据表关系图 系统总体ER图 管理员实体 学生实体 班级实体 学院实体 数据库逻辑结构设计 表名3.1 管理员信息表 序号 列名 数据类型 长度 ...
  • 4.1.3 管理管理用户 4.1.4 用户维护个人信息 4.2 课程管理 4.2.1教员发布课程、修改课程、删除课程 4.2.2学员查找课程、预约课程、取消课程 4.2.3课程分类管理 4.2.4学员个人课程表、教员个人教学表。 4.2.5学员...
  • 项目运行截图 登录系统账号密码 code51 登录首页 项目运行截图 登录系统账号密码 code51 登录首页 首页考勤管理 ...智能OA办公系统,包含系统管理,用户管理角色列表,考勤管理,流程管理,公告管理邮件
  • 基于SSM框架的学生信息管理系统(上)

    千次阅读 热门讨论 2020-12-28 16:19:57
    学生管理系统(上) 项目概述 一个基于ssm的学生信息管理 项目来源:YUbuntu0109 项目更改: 只保留了管理员一个身份 增加了多表查询操作 删去了年级管理和教师管理 删去了增加和修改等操作中所有需要上传头像部分...
  • 系统以JSP为开发技术,实现了一个网上物流相关信息管理系统。快递收发系统用户角色分为用户和管理员, 用户的功能模块有:个人信息管理、修改密码、快递查询; 管理员的功能模块有:用户管理、个人信息管理、...
  • 运行环境 Linux/Windows 毕业设计基于SSM/Springboot的商城项目,一个简单的商城,界面友好,但是不是很漂亮。实现了商城所有基本功能。 作为改写的基础模板,可以增加或者改写的功能: 增加word和excel模板 增加...
  • 基于SSM框架实现邮件发送工具类

    万次阅读 热门讨论 2018-09-15 20:33:30
    要实现qq邮箱发送邮件,前提需要开启POP3/SMTP服务。 如图: ...spring容器管理工具类(application-mail.xml) 一、实现发送邮件工具类 代码如下: import java.util.List; import javax.ma...
  • 房屋租赁管理系统 基于SSM框架

    千次阅读 2021-06-18 12:33:05
    房屋租赁管理系统 基于SSM框架 一.功能介绍 包括管理员、房东、租客三种角色,外加游客(未登录情况) 出租类型包含整租和合租权限 游客 < 租客 < 房东 < 管理员 1、游客功能 登录、注册(可以注册房东或租客...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,630
精华内容 652
关键字:

基于ssm的邮件管理系统