前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >杨校老师项目之基于SSM企业物流快递配送管理系统

杨校老师项目之基于SSM企业物流快递配送管理系统

作者头像
杨校
发布2022-05-07 15:08:46
3370
发布2022-05-07 15:08:46
举报
文章被收录于专栏:Java技术分享圈Java技术分享圈
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 货物的实体类
代码语言:javascript
复制
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控制器
代码语言:javascript
复制
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 货物的业务逻辑接口
代码语言:javascript
复制
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 货物的业务逻辑接口的实现类
代码语言:javascript
复制
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 货物的数据持久层的接口
代码语言:javascript
复制
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 货物的数据持久层的接口的映射文件
代码语言:javascript
复制
<?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

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

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-03-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 获取代码:
  • 2. 项目描述
  • 3.功能简介
  • 4. 技术栈:
  • 5. 运行环境
  • 6.前台界面
  • 7. 后台界面
  • 8. 代码展示
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档