java包裹邮费计算_猿实战16——承运商之搭建你的运费基石
猿实战是一个原创系列文章,通过实战的方式,采用前后端分离的技术结合SpringMVC Spring Mybatis,手把手教你撸一个完整的电商系统,变身猿人找到工作不是问题。还等什么呢?关注公号,取基础代码,一起实战吧。
上几个章节,猿人君教会了你如何去实现前台类目的后台管理功能,今天我们一起来学习,如何实现承运商管理。
功能概览
承运商管理的功能虽然相对简单,主要用于维护供应商的一些基础信息,为之后要实现的运费模板提供数据支撑,是运费计算的基础信息。承运商管理功能,主要提供承运商信息列表以及新增/修改/启用/停用承运商功能。
数据库设计
基于之前的设计文章,我们可以快速的整理承运商的基本信息,并落地为数据库表,如上图所示。
后端功能实现
承运商管理的功能相对传统,提供新增/修改/删除/停用/启用/分页列表的功能。
值得注意的是,删除功能,我们是通过状态位来做的逻辑删除。之前有新手朋友似乎不明白什么是逻辑删除的含义,这里猿人君就稍微提这么一句了。所谓物理删除通常指的是通过delete语句删除表里的数据(其实并没有真正的物理掉,先不深究了),而逻辑删除又叫业务删除,通过给与数据一个“删除”状态,在之后的访问中,不访问删除状态的数据就可以了。
/** * Copyright(c) 2004-2020 pangzi * com.pz.basic.mall.controller.freight.MallLogisticsController.java */package com.pz.basic.mall.controller.freight; import com.pz.basic.mall.domain.base.Result;import com.pz.basic.mall.domain.base.enums.DataStatusEnum;import com.pz.basic.mall.domain.freight.MallLogistics;import com.pz.basic.mall.domain.freight.query.QueryMallLogistics;import com.pz.basic.mall.service.freight.MallLogisticsService;import org.springframework.web.bind.annotation.RequestBody;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController; import java.util.List; /** * * @author pangzi * @date 2020-06-22 20:47:27 * * */@RestController@RequestMapping("/logistics")public class MallLogisticsController { private MallLogisticsService mallLogisticsService; public void setMallLogisticsService(MallLogisticsService mallLogisticsService) { this.mallLogisticsService = mallLogisticsService; } /** * 新增物流供应商 * @param mallLogistics * @return */ @RequestMapping("/addMallLogistics") public Result addMallLogistics(@RequestBody MallLogistics mallLogistics){ try{ return mallLogisticsService.addMallLogistics(mallLogistics); }catch(Exception e){ e.printStackTrace(); return new Result(false); } } /** * 修改物流供应商 * @param mallLogistics * @return */ @RequestMapping("/updateMallLogistics") public Result updateMallLogistics(@RequestBody MallLogistics mallLogistics){ try{ return mallLogisticsService.updateMallLogisticsById(mallLogistics); }catch(Exception e){ e.printStackTrace(); return new Result(false); } } /** * 启用物流供应商 * @param mallLogistics * @return */ @RequestMapping("/enableMallLogistics") public Result enableMallLogistics(@RequestBody MallLogistics mallLogistics){ try{ MallLogistics modifiedData =new MallLogistics (); modifiedData.setId(mallLogistics.getId()); modifiedData.setStatus(DataStatusEnum.STATUS_ENABLE.getStatusValue()); return mallLogisticsService.updateMallLogisticsById(modifiedData); }catch(Exception e){ e.printStackTrace(); return new Result(false); } } /** * 停用物流供应商 * @param mallLogistics * @return */ @RequestMapping("/disableMallLogistics") public Result disableMallLogistics(@RequestBody MallLogistics mallLogistics){ try{ MallLogistics modifiedData =new MallLogistics (); modifiedData.setId(mallLogistics.getId()); modifiedData.setStatus(DataStatusEnum.STATUS_DISABLE.getStatusValue()); return mallLogisticsService.updateMallLogisticsById(modifiedData); }catch(Exception e){ e.printStackTrace(); return new Result(false); } } /** * 删除物流供应商 * @param mallLogistics * @return */ @RequestMapping("/deleteMallLogistics") public Result deleteMallLogistics(@RequestBody MallLogistics mallLogistics){ try{ MallLogistics modifiedData =new MallLogistics (); modifiedData.setId(mallLogistics.getId()); modifiedData.setStatus(DataStatusEnum.STATUS_DELETED.getStatusValue()); return mallLogisticsService.updateMallLogisticsById(modifiedData); }catch(Exception e){ e.printStackTrace(); return new Result(false); } } /** * 分页返回物流供应商列表 * @param queryMallLogistics * @return */ @RequestMapping("/findByPage") public Result> findByPage(@RequestBody QueryMallLogistics queryMallLogistics){ return mallLogisticsService.getMallLogisticssByPage(queryMallLogistics); } }
考虑到很多朋友编写mapper文件比较困难,这个章节的mapper就先给到你吧,不过做人不要太懒了,domain 和dao 以及service的实现,还是自己动手搞一下吧。
<?xml version="1.0" encoding="UTF-8" ?>id,logistics_code,logistics_name,logistics_icon,logistics_url,logistics_remark,freight_limit,custom_fee_limit,custom_time_limit,show_limit,status,create_user,modify_user,created,modifiedstatus>-1and id = #{id}and logistics_code = #{logisticsCode}and logistics_name = #{logisticsName}and logistics_icon = #{logisticsIcon}and logistics_url = #{logisticsUrl}and logistics_remark = #{logisticsRemark}and freight_limit = #{freightLimit}and custom_fee_limit = #{customFeeLimit}and custom_time_limit = #{customTimeLimit}and show_limit = #{showLimit}and status = #{status}and create_user = #{createUser}and modify_user = #{modifyUser}and created = #{created}and modified = #{modified}and logistics_name like concat(#{logisticsNameLike},'%')and logistics_code like concat(#{logisticsCodeLike},'%')selectfrom mall_logisticsselectfrom mall_logisticsLIMIT #{startRow},#{pageSize}selectfrom mall_logisticswhere id = #{id}delete from mall_logisticswhere id = #{id}delete from mall_logisticsINSERT INTOmall_logistics(id,logistics_code,logistics_name,logistics_icon,logistics_url,logistics_remark,freight_limit,custom_fee_limit,custom_time_limit,show_limit,status,create_user,modify_user,created,modified)VALUES(#{id},#{logisticsCode},#{logisticsName},#{logisticsIcon},#{logisticsUrl},#{logisticsRemark},#{freightLimit},#{customFeeLimit},#{customTimeLimit},#{showLimit},#{status},#{createUser},#{modifyUser},#{created},#{modified})SELECT @@IDENTITY AS IDinsert into mall_logisticsid,logistics_code,logistics_name,logistics_icon,logistics_url,logistics_remark,freight_limit,custom_fee_limit,custom_time_limit,show_limit,status,create_user,modify_user,created,modified,#{id},#{logisticsCode},#{logisticsName},#{logisticsIcon},#{logisticsUrl},#{logisticsRemark},#{freightLimit},#{customFeeLimit},#{customTimeLimit},#{showLimit},#{status},#{createUser},#{modifyUser},now(),now(),SELECT @@IDENTITY AS IDselect count(*) from mall_logisticsupdate mall_logisticslogistics_code = #{logisticsCode},logistics_name = #{logisticsName},logistics_icon = #{logisticsIcon},logistics_url = #{logisticsUrl},logistics_remark = #{logisticsRemark},freight_limit = #{freightLimit},custom_fee_limit = #{customFeeLimit},custom_time_limit = #{customTimeLimit},show_limit = #{showLimit},status = #{status},create_user = #{createUser},modify_user = #{modifyUser},created = #{created},modified=now(),where id = #{id}
前端功能实现
功能的实现,主要还是基于element-ui来实现的。这里提几个关键的点,最后也会把源代码给到你的。
列表展示:
主要是通过el-table组件实现的,属性data用于绑定需要展现的数据。需要你定义和操作。
新增/编辑弹框
弹框展示的标题和展示,通过页面定义的数据来控制。
表单中的下拉选项,通过el-select组件来实现。
注意使用的v-for指令,以及你需要在页面上定义你的选项数据。
关键点已经都告诉你了,最后,将页面的源码送你吧,不过还是希望你仅仅作为参考,自己动手去实现一次。
java包裹邮费计算_猿实战16——承运商之搭建你的运费基石相关推荐
- java包裹邮费计算_GitHub - honghailiang/FreightSystem: 基于Java Swing编写的简易运费计算工具...
FreightSystem 基于java Swing编写的运费计算系统 初始化数据 从excel中读取数据,转化为对象(只保存基础数据:序列号.始发站.目的站.省份.100kg以下(元/kg).100 ...
- Java MapReduce 基本计算操作实现实战
Java MapReduce 基本计算操作实现实战 特别注意: 1.在运行代码的过程中注意自己本地Hadoop版本必须与服务器版本一致,否则会出现许多意向不到的问题; 2.数据之间不能有空行间隔; ...
- Java web小项目_个人主页(1)—— 云环境搭建与项目部署
摘自:Java web小项目_个人主页(1)-- 云环境搭建与项目部署 作者:丶PURSUING 发布时间: 2021-03-26 23:59:39 网址:https://blog.csdn.net/ ...
- java运费模板设计_猿实战17——实现你未必知晓的运费模板
猿实战是一个原创系列文章,通过实战的方式,采用前后端分离的技术结合SpringMVC Spring Mybatis,手把手教你撸一个完整的电商系统,变身猿人找到工作不是问题.还等什么呢?关注公号,取基 ...
- element 下拉选择_猿实战18——商品发布之类目选择
猿实战是一个原创系列文章,通过实战的方式,采用前后端分离的技术结合SpringMVC Spring Mybatis,手把手教你撸一个完整的电商系统,变身猿人找到工作不是问题.还等什么呢?关注公号,取基 ...
- java统计excel数据_数据分析实战——EXCEL实现复购率计算
这是数据分析实战的第三篇(复购率计算篇),本文提供真实数据(脱敏),并梳理复购率计算思路和技巧,通过15分钟的阅读和实践,读者即可根据自己的订单数据灵活计算业务涉及到的复购率了.(实战数据在文末) 相 ...
- java unsafe获取指针_【实战Java高并发程序设计 1】Java中的指针:Unsafe类
是<实战Java高并发程序设计>第4章的几点. 如果你对技术有着不折不挠的追求,应该还会特别在意incrementAndGet() 方法中compareAndSet()的实现.现在,就让我 ...
- 西工大java高级网络编程_西工大16春《JAVA高级网络编程》平时作业
西工大16春<JAVA高级网络编程>平时作业 7 o& [9 w ^# D Z一.单选题:[25道,总分:100分]5 z# ?* Z! M% M1 h4 R# n. D+ a ...
- java 报文长度计算_从TcpClient.GetStream()读取而不知道长度 - java
我正在研究基于TCP的通信协议.我所知 有很多方法可以确定何时结束阅读. 在消息末尾关闭连接 将消息的长度放在数据本身之前 使用分隔符:一些在正常数据中永远不会出现的值(或者总会以某种方式转义) 通常 ...
最新文章
- 第二讲:Android系统构架分析和应用程序目录结构分析
- Android开发之详解五大布局
- sql 获取本周周一和周日
- 55. Jump Game
- 算法 深度优先,广度优先
- java标签组件命名_Java——标签组件:JLabel
- 画函数图形的C#程序(改进版) (转)
- php thikn_与ThinkPHP等框架结合
- 速读-高级技能二:并行输入训练
- 输入两棵二叉树A,B,判断B是不是A的子结构。(我们约定空树不是任意一个树的子结构)
- orCAD导入AD库 连不上线 更改元件库 出现Unable To Save Part
- 论文查重怎么看查重率
- 燃油经济性加速时间曲线matlab,汽车理论课后习题Matlab程序详解
- openwrt 使用自定义 DNS
- 多少卡路里,我应该吃是错误的
- UVA 1600 Patrol Robot 巡逻机器人(BFS)
- 指数用计算机怎么打,数学上的乘方指数在电脑上怎么打?问题是什么?
- 非精确一维线搜索(Armijo-Goldstein Rule 和 Wolfe-Powell Rule)
- 水平居中和垂直居中css_如何使用CSS将图像垂直和水平居中
- 《java入门第一季》之面向对象
热门文章
- 容斥原理和概率与数学期望
- 网易2019实习生招聘编程题集合 矩形重叠
- Quoted-printable编码的介绍和quopri库的使用
- 硬件入门之: 滞回比较器分析计算
- 图片太大,怎么压缩图片大小?
- 阿里P6员工炫耀:年薪60万,哪家外企接的住阿里的员工?
- 计算机的主板显卡内存条怎么查,电脑显卡在哪看?查看自己电脑显卡的显存等信息的方法...
- python递归 及 面向对象初识及编程思想
- 【十三】python面向对象之类和对象
- (附源码)springboot电商系统前端界面设计与浏览器兼容性研究 毕业设计 231058