From 22fb5ec3a8aa7d4564050d1f07590b58457db474 Mon Sep 17 00:00:00 2001 From: Cauchy Date: Mon, 16 Oct 2023 17:51:37 +0800 Subject: [PATCH] express refactor --- pom.xml | 6 + .../peanut/common/Interface/KdApiEOrder.java | 213 ------------------ .../modules/book/dao/ExpressOrderDao.java | 10 + .../modules/book/entity/ExpressOrder.java | 2 +- .../book/entity/ShopProductEntity.java | 2 + .../modules/book/service/BuyOrderService.java | 5 - .../book/service/ExpressOrderService.java | 18 ++ .../service/impl/BuyOrderServiceImpl.java | 196 ++-------------- .../service/impl/ExpressOrderServiceImpl.java | 80 +++++++ .../modules/book/vo/ExpressCommodityVo.java | 16 ++ .../book/vo/ExpressOrderRequestVo.java | 37 +++ .../modules/book/vo/ExpressUserInfoVo.java | 36 +++ .../resources/mapper/book/ExpressOrderDao.xml | 10 + 13 files changed, 230 insertions(+), 401 deletions(-) delete mode 100644 src/main/java/com/peanut/common/Interface/KdApiEOrder.java create mode 100644 src/main/java/com/peanut/modules/book/dao/ExpressOrderDao.java create mode 100644 src/main/java/com/peanut/modules/book/service/ExpressOrderService.java create mode 100644 src/main/java/com/peanut/modules/book/service/impl/ExpressOrderServiceImpl.java create mode 100644 src/main/java/com/peanut/modules/book/vo/ExpressCommodityVo.java create mode 100644 src/main/java/com/peanut/modules/book/vo/ExpressOrderRequestVo.java create mode 100644 src/main/java/com/peanut/modules/book/vo/ExpressUserInfoVo.java create mode 100644 src/main/resources/mapper/book/ExpressOrderDao.xml diff --git a/pom.xml b/pom.xml index e1c2f5d6..a23cc8bd 100644 --- a/pom.xml +++ b/pom.xml @@ -99,6 +99,12 @@ 1.1.2-offical + + com.github.kuaidi100-api + sdk + 1.0.12 + + org.springframework.boot diff --git a/src/main/java/com/peanut/common/Interface/KdApiEOrder.java b/src/main/java/com/peanut/common/Interface/KdApiEOrder.java deleted file mode 100644 index 4f96de90..00000000 --- a/src/main/java/com/peanut/common/Interface/KdApiEOrder.java +++ /dev/null @@ -1,213 +0,0 @@ -package com.peanut.common.Interface; - - -import com.peanut.common.utils.HttpClientUtils; -import com.peanut.common.utils.KdUtils; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; - -import java.util.HashMap; -import java.util.Map; - -/** - * @技术QQ群: 可登录官网https://www.kdniao.com/右侧查看技术群号 - * @see: https://kdniao.com/api-eorder - * @copyright: 深圳市快金数据技术服务有限公司 - * ID和Key请到官网申请:https://kdniao.com/reg - *

- *

- * 电子面单接口 - * 此接口用于向快递/快运公司下发订单并获取快递单号,返回电子面单html模板,通知快递员上门取件。该功能支持情况需查看技术文档。 - * 正式地址:https://api.kdniao.com/api/EOrderService - *

- *

- * 系统级参数 - * RequestData String R 请求内容为JSON格式 详情可参考接口技术文档:https://www.kdniao.com/documents - * EBusinessID String R 用户ID - * RequestType String R 请求接口指令 - * DataSign String R 数据内容签名,加密方法为:把(请求内容(未编码)+ApiKey)进行MD5加密--32位小写,然后Base64编码,最后进行URL(utf-8)编码 - * DataType String R DataType=2,请求、返回数据类型均为JSON格式 - *

- * 应用级参数 - * R-必填(Required),O-可选(Optional),C-报文中该参数在一定条件下可选(Conditional) - * Callback String(50) O 用户自定义回传字段 - * CustomerName String(50) C 电子面单客户号,需要下载《快递鸟电子面单客户号参数对照表.xlsx》,参考对应字段传值 https://www.kdniao.com/documents - * CustomerPwd String(50) C 同上 - * SendSite String(50) C 同上 - * SendStaff String(50) C 同上 - * MonthCode String(20) C 同上 - * CustomArea String(500) O 商家自定义区域,需查看技术文档说明 - * WareHouseID String(30) C 发货仓编码(ShipperCode为JD或JDKY时必填) - * TransType Int(2) O 京东(ShipperCode为JD或JDKY)的产品类型,需查看技术文档说明 - * ShipperCode String(10) R 快递公司编码详细编码参考《快递鸟接口支持快递公司编码.xlsx》 https://www.kdniao.com/documents - * LogisticCode String(30) O 快递单号(仅宅急送可用) - * OrderCode String(30) R 订单编号(自定义,不可重复) - * ThrOrderCode String(50) C 京东商城的订单号(ShipperCode为JD且ExpType为1时必填) - * PayType Int(1) R 运费支付方式:1-现付,2-到付,3-月结 - * ExpType String(2) R 详细快递类型参考《快递公司快递业务类型.xlsx》 https://www.kdniao.com/documents - * IsReturnSignBill Int(1) O 是否要求签回单 0-不要求,1-要求 - * Receiver.Company String(30) O 收件人公司 - * Receiver.Name String(30) R 收件人 - * Receiver.Tel String(20) R 电话(电话与手机,必填一个) - * Receiver.Mobile String(20) R 手机(电话与手机,必填一个) - * Receiver.PostCode String(10) C 收件地邮编(ShipperCode为EMS、YZPY、YZBK时必填) - * Receiver.ProvinceName String(20) R 收件省(如广东省,不要缺少“省”;如是直辖市,请直接传北京、上海等;如是自治区,请直接传广西壮族自治区等) - * Receiver.CityName String(20) R 收件市(如深圳市,不要缺少“市;如是市辖区,请直接传北京市、上海市等”) - * Receiver.ExpAreaName String(20) R 收件区/县(如福田区,不要缺少“区”或“县”) - * Receiver.Address String(100) R 收件人详细地址(不用传省市区) - * Sender.Company String(30) O 发件人公司 - * Sender.Name String(30) R 发件人 - * Sender.Tel String(20) R 电话(电话与手机,必填一个) - * Sender.Mobile String(20) R 手机(电话与手机,必填一个) - * Sender.PostCode String(10) C 发件地邮编(ShipperCode为EMS、YZPY、YZBK时必填) - * Sender.ProvinceName String(20) R 发件省(如广东省,不要缺少“省”;如是直辖市,请直接传北京、上海等;如是自治区,请直接传广西壮族自治区等) - * Sender.CityName String(20) R 发件市(如深圳市,不要缺少“市;如是市辖区,请直接传北京市、上海市等”) - * Sender.ExpAreaName String(20) R 发件区/县(如福田区,不要缺少“区”或“县”) - * Sender.Address String(100) R 发件人详细地址(不用传省市区) - * IsNotice Int(1) O 是否通知快递员上门揽件 0-通知,1-不通知,不填则默认为1 - * StartDate String(32) O 上门揽件时间段,格式:YYYY-MM-DD HH24:MM:SS - * EndDate String(32) O 上门揽件时间段,格式:YYYY-MM-DD HH24:MM:SS - * Weight Double(10,3) C 包裹总重量kg 1、当为快运的订单时必填;2、ShipperCode为JD时必填; - * Quantity Int(2) R 包裹数(最多支持300件)一个包裹对应一个运单号,如果是大于1个包裹,返回则按照子母件的方式返回母运单号和子运单号 - * Volume Double(20,3) C 包裹总体积m3 1、当为快运的订单时必填;2、ShipperCode为JD时必填; - * Remark String(60) O 备注 - * AddService.Name String(20) C 增值服务名称(数组形式,可以有多个增值服务) - * AddService.Value String(30) C 增值服务值 - * AddService.CustomerID String(30) O 客户标识 - * Commodity.GoodsName String(100) R 商品名称(数组形式) - * IsReturnPrintTemplate String(1) O 是否返回电子面单模板:0-不需要,1-需要 - * IsSendMessage Int(1) O 是否订阅短信:0-不需要,1-需要 - * IsSubscribe String(1) O 是否订阅轨迹推送 0-不订阅,1-订阅,不填默认为1 - * TemplateSize String(10) O 模板规格,需查看技术文档说明 - * PackingType Int(2) C 包装类型(快运字段),需查看技术文档说明 - * DeliveryMethod Int(1) C 送货方式/派送类型/配送方式(快运字段),需查看技术文档说明 - * CurrencyCode String(10) C 货物单价的币种:CNY: 人民币 HKD: 港币 NTD: 新台币 MOP: 澳门元 (ShipperCode为SF且收件地址为港澳台地区,必填) - * Dutiable.DeclaredValue Number(15,3) C 申报价值:订单货物总声明价值,包含子母件,精确到小数点后3位 (ShipperCode为SF且收件地址为港澳台地区,必填) - */ - -public class KdApiEOrder { - - //用户ID,快递鸟提供,注意保管,不要泄漏 - private static String EBusinessID = "1788532";//即用户ID - // private static String EBusinessID="test1788532";//即用户ID - //API key,快递鸟提供,注意保管,不要泄漏 - private static String ApiKey = "f4342e6c-5cfa-458f-997b-f973eb29eb1d";//即API key -// private static String ApiKey="34f033ae-9c73-4b9a-899e-943a65fd86bf";//即API key - - - // 电子面单 - private static String OnlineReqURL = "https://api.kdniao.com/api/EOrderService"; - - -// 取消电子面单 - - private static String ReqURL = "https://api.kdniao.com/api/EOrderService"; - - - // 物流信息跟踪 - private String TrackReqURL = "https://api.kdniao.com/api/dist"; -// private static String TrackReqURL="http://sandboxapi.kdniao.com:8080/kdniaosandbox/gateway/exterfaceInvoke.json"; - - // 即时查询物流信息 - private static String QueryReqURL = "https://api.kdniao.com/Ebusiness/EbusinessOrderHandle.aspx"; - - /** - * 电子面单取消接口 - * 此接口用于取消“电子面单接口”下单成功的订单,回收快递单号。 - *

- * 应用级参数 - * R-必填(Required),O-可选(Optional),C-报文中该参数在一定条件下可选(Conditional) - * ShipperCode String(10) R 快递公司编码 - * OrderCode String(30) R 订单编号 - * ExpNo String(30) R 快递单号 - * CustomerName String(50) R 电子面单客户号 - * CustomerPwd String(30) R 电子面单密码(顺丰不需要) - */ - @RequestMapping("/cancel") - public static String cancelOrderByJson(@RequestParam Map param) throws Exception { - - // 组装应用级参数 - String RequestData = "{" + - "'ShipperCode':" + param.get("ShipperCode") + "," + - "'OrderCode': " + param.get("orderSn") + "," + - "'ExpNo': '" + param.get("ExpNo") + "'," + - "}"; - // 组装系统级参数 - Map params = new HashMap(); - params.put("RequestData", KdUtils.urlEncoder(RequestData, "UTF-8")); - params.put("EBusinessID", EBusinessID); - params.put("RequestType", "1147"); - String dataSign = KdUtils.encrypt(RequestData, ApiKey, "UTF-8"); - params.put("DataSign", KdUtils.urlEncoder(dataSign, "UTF-8")); - params.put("DataType", "2"); - // 以form表单形式提交post请求,post请求体中包含了应用级参数和系统级参数 - String result = HttpClientUtils.kdSendPost(ReqURL, params); - - //根据公司业务处理返回的信息...... - return result; - } - - - /** - * 即时查询接口(增值版) - * 此接口用于向快递公司实时查询物流轨迹信息。 - *

- * 应用级参数 - * R-必填(Required),O-可选(Optional),C-报文中该参数在一定条件下可选(Conditional) - * OrderCode String(30) O 订单编号 - * CustomerName String(50) C ShipperCode为SF时必填,对应寄件人/收件人手机号后四位;ShipperCode为其他快递时,可不填或保留字段,不可传值 - * ShipperCode String(10) R 快递公司编码 详细编码参考《快递鸟接口支持快递公司编码.xlsx》 - * LogisticCode String(30) R 快递单号 - */ - @RequestMapping("/queryOrder") - public static String queryOrderOnlineByJson(@RequestParam Map param) throws Exception { - // 组装应用级参数 - String RequestData = "{" + - "'ShipperCode': '" + param.get("ShipperCode") + "'," + - "'LogisticCode': '" + param.get("LogisticCode") + "'," + - "}"; - // 组装系统级参数 - Map params = new HashMap(); - params.put("RequestData", KdUtils.urlEncoder(RequestData, "UTF-8")); - params.put("EBusinessID", EBusinessID); - params.put("RequestType", "8001");//在途监控即时查询接口指令8001/地图版即时查询接口指令8003 - String dataSign = KdUtils.encrypt(RequestData, ApiKey, "UTF-8"); - params.put("DataSign", KdUtils.urlEncoder(dataSign, "UTF-8")); - params.put("DataType", "2"); - // 以form表单形式提交post请求,post请求体中包含了应用级参数和系统级参数 - String result = HttpClientUtils.kdSendPost(QueryReqURL, params); - return result; - } - - /** - * 物流跟踪接口(增值版) - * 此接口用于向快递鸟订阅物流轨迹信息。 - *

- * 应用级参数 - * R-必填(Required),O-可选(Optional),C-报文中该参数在一定条件下可选(Conditional) - * Callback String(50) O 用户自定义回传字段 - * ShipperCode String(10) R 快递公司编码 详细编码参考《快递鸟接口支持快递公司编码.xlsx》 - * LogisticCode String(30) R 快递单号 - * CustomerName String(50) C ShipperCode为SF时必填,对应寄件人/收件人手机号后四位;ShipperCode为其他快递时,可不填或保留字段,不可传值 - */ - @RequestMapping("/track") - public String trackOrderByJson(@RequestParam Map param) throws Exception { - // 组装应用级参数 - String RequestData = "{" + - "'Callback':'OrderCode'," + - "'ShipperCode':'" + param.get("ShipperCode") + "'," + - "'LogisticCode':'" + param.get("LogisticCode") + "'," + - "}"; - // 组装系统级参数 - Map params = new HashMap(); - params.put("RequestData", KdUtils.urlEncoder(RequestData, "UTF-8")); - params.put("EBusinessID", EBusinessID); - params.put("RequestType", "8008");//在途监控订阅接口指令8008/地图版订阅接口指令8005 - String dataSign = KdUtils.encrypt(RequestData, ApiKey, "UTF-8"); - params.put("DataSign", KdUtils.urlEncoder(dataSign, "UTF-8")); - params.put("DataType", "2"); - // 以form表单形式提交post请求,post请求体中包含了应用级参数和系统级参数 - String result = HttpClientUtils.kdSendPost(TrackReqURL, params); - return result; - } -} diff --git a/src/main/java/com/peanut/modules/book/dao/ExpressOrderDao.java b/src/main/java/com/peanut/modules/book/dao/ExpressOrderDao.java new file mode 100644 index 00000000..2fc030e8 --- /dev/null +++ b/src/main/java/com/peanut/modules/book/dao/ExpressOrderDao.java @@ -0,0 +1,10 @@ +package com.peanut.modules.book.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.peanut.modules.book.entity.ExpressOrder; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface ExpressOrderDao extends BaseMapper { + int insertNewExpressOrder(ExpressOrder expressOrder); +} diff --git a/src/main/java/com/peanut/modules/book/entity/ExpressOrder.java b/src/main/java/com/peanut/modules/book/entity/ExpressOrder.java index aaa3afd8..dc36f8dd 100644 --- a/src/main/java/com/peanut/modules/book/entity/ExpressOrder.java +++ b/src/main/java/com/peanut/modules/book/entity/ExpressOrder.java @@ -33,7 +33,7 @@ public class ExpressOrder { /** * 总重量 */ - private BigDecimal totalWeight; + private int totalWeight; /** * 创建时间 */ diff --git a/src/main/java/com/peanut/modules/book/entity/ShopProductEntity.java b/src/main/java/com/peanut/modules/book/entity/ShopProductEntity.java index 0560cba6..352ab7b0 100644 --- a/src/main/java/com/peanut/modules/book/entity/ShopProductEntity.java +++ b/src/main/java/com/peanut/modules/book/entity/ShopProductEntity.java @@ -167,4 +167,6 @@ public class ShopProductEntity implements Serializable { @TableField(exist = false) private List shoproudLabels; + + private int expressOrderId; } diff --git a/src/main/java/com/peanut/modules/book/service/BuyOrderService.java b/src/main/java/com/peanut/modules/book/service/BuyOrderService.java index 98282a83..43f4c6d0 100644 --- a/src/main/java/com/peanut/modules/book/service/BuyOrderService.java +++ b/src/main/java/com/peanut/modules/book/service/BuyOrderService.java @@ -1,10 +1,8 @@ package com.peanut.modules.book.service; -import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.peanut.common.utils.PageUtils; -import com.peanut.common.utils.R; import com.peanut.modules.book.entity.BuyOrderEntity; import java.util.List; @@ -24,9 +22,6 @@ public interface BuyOrderService extends IService { //更新订单状态 void updateOrderStatus(Integer userId, String orderSn, String type); - // 及时查询 - JSONObject queryFMS(String shipperCode, String expNo); - // 查询勾选的订单是否有可合并 List checkOrder(Integer[] orderIds); diff --git a/src/main/java/com/peanut/modules/book/service/ExpressOrderService.java b/src/main/java/com/peanut/modules/book/service/ExpressOrderService.java new file mode 100644 index 00000000..2ebf1efb --- /dev/null +++ b/src/main/java/com/peanut/modules/book/service/ExpressOrderService.java @@ -0,0 +1,18 @@ +package com.peanut.modules.book.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.peanut.modules.book.entity.ExpressOrder; +import org.springframework.stereotype.Service; + +@Service +public interface ExpressOrderService extends IService { + /** + * 新增快递订单信息 + * + * @param expressOrder 快递订单 + * @return object - id + */ + int insertNewExpressOrder(ExpressOrder expressOrder); + + +} diff --git a/src/main/java/com/peanut/modules/book/service/impl/BuyOrderServiceImpl.java b/src/main/java/com/peanut/modules/book/service/impl/BuyOrderServiceImpl.java index dbaacb42..a35b1f2d 100644 --- a/src/main/java/com/peanut/modules/book/service/impl/BuyOrderServiceImpl.java +++ b/src/main/java/com/peanut/modules/book/service/impl/BuyOrderServiceImpl.java @@ -1,23 +1,18 @@ package com.peanut.modules.book.service.impl; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.peanut.common.Interface.KdApiEOrder; import com.peanut.common.utils.ExcludeEmptyQueryWrapper; import com.peanut.common.utils.PageUtils; import com.peanut.common.utils.Query; import com.peanut.modules.book.dao.BuyOrderDao; -import com.peanut.modules.book.dao.BuyOrderDetailDao; import com.peanut.modules.book.dao.ShopProductDao; import com.peanut.modules.book.entity.*; import com.peanut.modules.book.service.*; -import com.peanut.modules.book.vo.ProductVo; import com.peanut.modules.book.vo.UserOrderVo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -25,7 +20,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import javax.annotation.Resource; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.*; @@ -38,15 +32,8 @@ public class BuyOrderServiceImpl extends ServiceImpl params) throws Exception { @@ -130,45 +123,6 @@ public class BuyOrderServiceImpl extends ServiceImpl param = new HashMap<>(); - param.put("ShipperCode", shipperCode); - param.put("LogisticCode", expNo); - try { - if (!expNo.equals(1)) { - String rntStr = KdApiEOrder.queryOrderOnlineByJson(param); - JSONObject jsonObject = JSONObject.parseObject(rntStr); - if ("true".equals(jsonObject.getString("Success"))) { - return jsonObject; - } - } else { - String rntStr = KdApiEOrder.queryOrderOnlineByJson(param); - JSONObject jsonObject = JSONObject.parseObject(rntStr); - if ("true".equals(jsonObject.getString("Success"))) { - return jsonObject; - } - } - - String rntStr = KdApiEOrder.queryOrderOnlineByJson(param); - JSONObject jsonObject = JSONObject.parseObject(rntStr); - if ("true".equals(jsonObject.getString("Success"))) { - return jsonObject; - } - } catch (Exception e) { - e.printStackTrace(); - } - return null; - } - /** * 查询勾选的订单是否有可合并 * @@ -301,136 +255,14 @@ public class BuyOrderServiceImpl extends ServiceImpl productList) { - - // 首重 - int amount = 0; - // 续重 - int continuousWeight = 0; - // 费用 - int fare = 0; - for (ProductVo p : productList) { - String prov = p.getArea().substring(0, p.getArea().indexOf("_")); - float weight = p.getNum() * p.getWeight(); - // 韵达计费规则 - if ("YD".equals(p.getKdCode())) { - // 如果ID等于71 说明是天津发天津 - if ("71".equals(prov)) { - amount = 6; - continuousWeight = 3; - } - // 首重十元 续重四元 - String tenStr[] = {"70", "73", "75", "76", "77", "79", "81", "82", "83", "84", "85", "86", "87", "88", "91", "92", "96", "80", "78"}; - boolean tenBoolean = Arrays.asList(tenStr).contains(prov); - if (tenBoolean) { - amount = 10; - continuousWeight = 4; - } - // 首重十二元 - String twelveStr[] = {"74", "89", "90", "93", "94", "97", "98", "99"}; - boolean twelveBoolean = Arrays.asList(twelveStr).contains(prov); - if (twelveBoolean) { - amount = 12; - continuousWeight = 5; - // 甘肃 97,青海 98,内蒙古 74 ,海南90 续重 6元 - if (prov.equals("97") || prov.equals("98") || prov.equals("74") || prov.equals("90")) { - continuousWeight = 6; - } - } - // 首重二十元,续重二十元 - if ("100".equals(prov)) { - amount = 20; - continuousWeight = 20; - } - - if (weight <= 1000) { - fare += amount; - } else { - fare += (int) (amount + (continuousWeight * Math.floor(weight / 1000))); - } - } - } - return fare; - - } - - - /** - * 计算快递费用 - * - * @param param - */ - public int getTransPrice(Map param) { - - int fare = 0; - String KDCode = param.get("kdCode").toString(); - String area = param.get("area").toString(); - String prov = area.substring(0, area.indexOf("_")); - float weight = (float) param.get("weight"); - // 韵达计费规则 - if ("YD".equals(KDCode)) { - // 如果ID等于71 说明是天津发天津 - int amount = 0; - int continuousWeight = 0; - if ("71".equals(prov)) { - amount = 6; - continuousWeight = 3; - } - // 首重十元 续重四元 - String tenStr[] = {"70", "73", "75", "76", "77", "79", "81", "82", "83", "84", "85", "86", "87", "88", "91", "92", "96", "80", "78"}; - boolean tenBoolean = Arrays.asList(tenStr).contains(prov); - if (tenBoolean) { - amount = 10; - continuousWeight = 4; - } - // 首重十二元 - String twelveStr[] = {"74", "89", "90", "93", "94", "97", "98", "99"}; - boolean twelveBoolean = Arrays.asList(twelveStr).contains(prov); - if (twelveBoolean) { - amount = 12; - continuousWeight = 5; - // 甘肃 97,青海 98,内蒙古 74 ,海南90 续重 6元 - if (prov.equals("97") || prov.equals("98") || prov.equals("74") || prov.equals("90")) { - continuousWeight = 6; - } - } - // 首重二十元,续重二十元 - if ("100".equals(prov)) { - amount = 20; - continuousWeight = 20; - } - // 如果重量等于0 说明是包邮 - if (weight == 0) { - return 0; - } else if (weight <= 1000) { - return amount; - } else { - return (int) (amount + (continuousWeight * Math.floor(weight / 1000))); - } - } - - return 0; - } - } \ No newline at end of file diff --git a/src/main/java/com/peanut/modules/book/service/impl/ExpressOrderServiceImpl.java b/src/main/java/com/peanut/modules/book/service/impl/ExpressOrderServiceImpl.java new file mode 100644 index 00000000..1ea639e7 --- /dev/null +++ b/src/main/java/com/peanut/modules/book/service/impl/ExpressOrderServiceImpl.java @@ -0,0 +1,80 @@ +package com.peanut.modules.book.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.peanut.modules.book.dao.ExpressOrderDao; +import com.peanut.modules.book.entity.ExpressOrder; +import com.peanut.modules.book.service.ExpressOrderService; +import com.peanut.modules.book.vo.ExpressOrderRequestVo; +import com.peanut.modules.book.vo.ExpressUserInfoVo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * @Description: 快递订单 Service 实现 + * @Author: Cauchy + * @CreateTime: 2023/10/16 + */ +@Service +public class ExpressOrderServiceImpl extends ServiceImpl implements ExpressOrderService { + @Autowired + private ExpressOrderDao expressOrderDao; + + @Override + public int insertNewExpressOrder(ExpressOrder expressOrder) { + expressOrderDao.insertNewExpressOrder(expressOrder); + return expressOrder.getId(); + } + + public void createExpressOrder() throws Exception { + ExpressUserInfoVo receiver = new ExpressUserInfoVo(); + receiver.setName("张三"); + receiver.setMobile("12345678910"); + receiver.setPrintAddr("广东省深圳市南山区科技南十二路"); + + ExpressUserInfoVo sender = new ExpressUserInfoVo(); + sender.setName("李四"); + sender.setMobile("12345678910"); + sender.setPrintAddr("北京市海淀区xxx路"); + + ExpressOrderRequestVo request = new ExpressOrderRequestVo(); + request.setKuaidicom(CompanyConstant.ZJS); + request.setCount(1); + request.setSiid(siid); + request.setTempId("60f6c17c7c223700131d8bc3"); + request.setSendMan(sender); + request.setRecMan(receiver); + request.setPrintType(PrintType.CLOUD); + + String param = new Gson().toJson(request); + String t = System.currentTimeMillis() + ""; + + PrintReq printReq = new PrintReq(); + printReq.setT(t); + printReq.setKey(key); + printReq.setSign(SignUtils.printSign(param, t, key, secret)); + printReq.setMethod(ApiInfoConstant.ORDER); + printReq.setParam(param); + + IBaseClient baseClient = new LabelV2(); + System.out.println(baseClient.execute(printReq)); + } + + public void testPrintOld() throws Exception { + RepeatPrintReq repeatPrintReq = new RepeatPrintReq(); + + repeatPrintReq.setTaskId("027B34AD22DE4F299643A13642B70D5F"); + + String param = new Gson().toJson(repeatPrintReq); + String t = System.currentTimeMillis() + ""; + + PrintReq printReq = new PrintReq(); + printReq.setT(t); + printReq.setKey(key); + printReq.setSign(SignUtils.printSign(param, t, key, secret)); + printReq.setMethod(ApiInfoConstant.CLOUD_PRINT_OLD_METHOD); + printReq.setParam(param); + + IBaseClient baseClient = new LabelV2(); + System.out.println(baseClient.execute(printReq)); + } +} diff --git a/src/main/java/com/peanut/modules/book/vo/ExpressCommodityVo.java b/src/main/java/com/peanut/modules/book/vo/ExpressCommodityVo.java new file mode 100644 index 00000000..1865ceff --- /dev/null +++ b/src/main/java/com/peanut/modules/book/vo/ExpressCommodityVo.java @@ -0,0 +1,16 @@ +package com.peanut.modules.book.vo; + +import lombok.Data; + +/** + * @Description: 货品 Value Object + * @Author: Cauchy + * @CreateTime: 2023/10/16 + */ +@Data +public class ExpressCommodityVo { + private String GoodsName; + private String GoodsCode; + private int Goodsquantity; + private double GoodsPrice; +} diff --git a/src/main/java/com/peanut/modules/book/vo/ExpressOrderRequestVo.java b/src/main/java/com/peanut/modules/book/vo/ExpressOrderRequestVo.java new file mode 100644 index 00000000..43abe52e --- /dev/null +++ b/src/main/java/com/peanut/modules/book/vo/ExpressOrderRequestVo.java @@ -0,0 +1,37 @@ +package com.peanut.modules.book.vo; + +import com.kuaidi100.sdk.contant.PrintType; +import com.kuaidi100.sdk.request.ManInfo; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @Description: 快递请求 Value Object + * @Author: Cauchy + * @CreateTime: 2023/10/16 + */ + +@Data +public class ExpressOrderRequestVo { + /** + * 订单号 + */ + private String OrderCode; + /** + * 快递公司编码 + */ + private String ShipperCode; + /** + * 支付类型 1 - 现付 2 - 到付 3 - 月结 4 - 第三方付 + */ + private int payType; + /** + * 快递公司业务类型 + */ + private int ExpType; + + +} + diff --git a/src/main/java/com/peanut/modules/book/vo/ExpressUserInfoVo.java b/src/main/java/com/peanut/modules/book/vo/ExpressUserInfoVo.java new file mode 100644 index 00000000..94eac6fc --- /dev/null +++ b/src/main/java/com/peanut/modules/book/vo/ExpressUserInfoVo.java @@ -0,0 +1,36 @@ +package com.peanut.modules.book.vo; + +import lombok.Data; + +/** + * @Description: 快递收/发件人 Value Object + * @Author: Cauchy + * @CreateTime: 2023/10/16 + */ +@Data +public class ExpressUserInfoVo { + /** + * 姓名 + */ + private String Name; + /** + * 电话 + */ + private String Mobile; + /** + * 省份 + */ + private String ProvinceName; + /** + * 城市 + */ + private String cityName; + /** + * 区 + */ + private String ExpAreaName; + /** + * 详细地址 + */ + private String Address; +} diff --git a/src/main/resources/mapper/book/ExpressOrderDao.xml b/src/main/resources/mapper/book/ExpressOrderDao.xml new file mode 100644 index 00000000..d7643948 --- /dev/null +++ b/src/main/resources/mapper/book/ExpressOrderDao.xml @@ -0,0 +1,10 @@ + + + + + + insert into express_order(user_id, user_address_id, express_fee, create_time, total_weight) + values (#{userId}, #{userAddressId}, #{expressFee}, #{createTime}, #{totalWeight}) + + \ No newline at end of file