Browse Source

开单时保存收发货人地址信息(如果不存在)

按收发货人名称、电话 模糊查询收发货地址簿列表
qiaohui 2 years ago
parent
commit
06366c575c
  1. 43
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/logisticsaddressbook/controller/LogisticsAddressBookController.java
  2. 41
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/logisticsaddressbook/entity/LogisticsAddressBook.java
  3. 11
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/logisticsaddressbook/mapper/LogisticsAddressBookMapper.java
  4. 17
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/logisticsaddressbook/service/LogisticsAddressBookService.java
  5. 123
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/logisticsaddressbook/service/impl/LogisticsAddressBookServiceImpl.java
  6. 23
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/logisticsaddressbook/vo/LogisticsAddressBookQueryVo.java
  7. 6
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/logisticsorder/controller/LogisticsOrderController.java

43
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/logisticsaddressbook/controller/LogisticsAddressBookController.java

@ -0,0 +1,43 @@
package cc.hiver.mall.logisticsaddressbook.controller;
import cc.hiver.core.common.utils.ResultUtil;
import cc.hiver.core.common.vo.Result;
import cc.hiver.mall.logisticsaddressbook.entity.LogisticsAddressBook;
import cc.hiver.mall.logisticsaddressbook.service.LogisticsAddressBookService;
import cc.hiver.mall.logisticsaddressbook.vo.LogisticsAddressBookQueryVo;
import cc.hiver.mall.logisticsorder.entity.LogisticsOrder;
import cc.hiver.mall.logisticsorder.service.LogisticsOrderService;
import cc.hiver.mall.logisticsorder.vo.LogisticsOrderQueryVo;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
@Slf4j
@RestController
@Api(tags = "收发货地址信息接口")
@RequestMapping("/hiver/app/logisticsAddressBook/")
@Transactional
public class LogisticsAddressBookController {
@Autowired
private LogisticsAddressBookService logisticsAddressBookService;
/**
* 分页查询收发货地址簿的控制器方法
*
* @param logisticsAddressBookQueryVo 查询条件封装类
* @return 包含分页查询结果的响应对象
*/
@RequestMapping(value = "/getLogisticsAddressBookPageList", method = RequestMethod.POST)
@ApiOperation(value = "分页查询收发货地址簿")
public Result<IPage<LogisticsAddressBook>> getLogisticsOrderPageList(@RequestBody(required = false)LogisticsAddressBookQueryVo logisticsAddressBookQueryVo) {
final IPage<LogisticsAddressBook> result = logisticsAddressBookService.getLogisticsAddressBookPageList(logisticsAddressBookQueryVo);
return new ResultUtil<IPage<LogisticsAddressBook>>().setData(result);
}
}

41
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/logisticsaddressbook/entity/LogisticsAddressBook.java

@ -0,0 +1,41 @@
package cc.hiver.mall.logisticsaddressbook.entity;
import cc.hiver.core.base.HiverBaseEntity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 收发货地址簿实体
*
* @author 乔徽
* @date 2024/9/8
*/
@EqualsAndHashCode(callSuper = true)
@Data
@ApiModel(value = "收发货人地址簿表")
@TableName(value = "t_logistics_address_book", autoResultMap = true)
public class LogisticsAddressBook extends HiverBaseEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "货运类型")
private int addressType;
@ApiModelProperty(value = "收发货人名称")
private String shipperOrReceiverName;
@ApiModelProperty(value = "联系电话")
private String mobile;
@ApiModelProperty(value = "地址")
private String addressInfo;
@ApiModelProperty(value = "物流公司id")
private String companyId;
@ApiModelProperty(value = "物流公司名称")
private String companyName;
}

11
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/logisticsaddressbook/mapper/LogisticsAddressBookMapper.java

@ -0,0 +1,11 @@
package cc.hiver.mall.logisticsaddressbook.mapper;
import cc.hiver.mall.logisticsaddressbook.entity.LogisticsAddressBook;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface LogisticsAddressBookMapper extends BaseMapper<LogisticsAddressBook> {
}

17
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/logisticsaddressbook/service/LogisticsAddressBookService.java

@ -0,0 +1,17 @@
package cc.hiver.mall.logisticsaddressbook.service;
import cc.hiver.mall.logisticsaddressbook.entity.LogisticsAddressBook;
import cc.hiver.mall.logisticsaddressbook.vo.LogisticsAddressBookQueryVo;
import cc.hiver.mall.logisticsorder.entity.LogisticsOrder;
import cc.hiver.mall.logisticsorder.vo.LogisticsOrderQueryVo;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
public interface LogisticsAddressBookService extends IService<LogisticsAddressBook> {
boolean saveLogisticsAddressBook(LogisticsOrder logisticsOrder);
IPage<LogisticsAddressBook> getLogisticsAddressBookPageList(LogisticsAddressBookQueryVo logisticsAddressBookQueryVo);
}

123
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/logisticsaddressbook/service/impl/LogisticsAddressBookServiceImpl.java

@ -0,0 +1,123 @@
package cc.hiver.mall.logisticsaddressbook.service.impl;
import cc.hiver.mall.logisticsaddressbook.entity.LogisticsAddressBook;
import cc.hiver.mall.logisticsaddressbook.mapper.LogisticsAddressBookMapper;
import cc.hiver.mall.logisticsaddressbook.service.LogisticsAddressBookService;
import cc.hiver.mall.logisticsaddressbook.vo.LogisticsAddressBookQueryVo;
import cc.hiver.mall.logisticsorder.entity.LogisticsOrder;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.gson.Gson;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
* @ClassNameLogisticsAddressBookServiceImpl
* @Author: qiaohui
* @Date: 2024/9/8 10:15
* @Description: 收发货地址簿接口
*/
@Service
public class LogisticsAddressBookServiceImpl extends ServiceImpl<LogisticsAddressBookMapper, LogisticsAddressBook>implements LogisticsAddressBookService {
@Autowired
private LogisticsAddressBookMapper logisticsAddressBookMapper;
/**
* 保存物流地址簿信息
*
* @param logisticsOrder 物流订单对象包含地址簿所需的信息
* @return 保存成功返回true否则返回false
*/
@Override
public boolean saveLogisticsAddressBook(LogisticsOrder logisticsOrder) {
List<LogisticsAddressBook> list = new ArrayList<>();
//根据名称、电话、地址查询看是不是存在,如果不存在则新建一条
LambdaQueryWrapper<LogisticsAddressBook> stuQuery = new LambdaQueryWrapper<>();
stuQuery.eq(LogisticsAddressBook::getShipperOrReceiverName, logisticsOrder.getShipperName())
.eq(LogisticsAddressBook::getAddressType, 1)
.eq(LogisticsAddressBook::getMobile, logisticsOrder.getShipperMobile())
.eq(LogisticsAddressBook::getAddressInfo, logisticsOrder.getShipperAddress());
Long count = getBaseMapper().selectCount(stuQuery);
if(count == 0){
// 创建发货人地址簿
LogisticsAddressBook shipperAddressBook = new LogisticsAddressBook();
// 设置发货人名称,从物流订单的发货人名称中获取
shipperAddressBook.setShipperOrReceiverName(logisticsOrder.getShipperName());
// 设置地址信息,从物流订单的发货人地址获取
shipperAddressBook.setAddressInfo(logisticsOrder.getShipperAddress());
// 设置地址类型,1表示发货人地址
shipperAddressBook.setAddressType(1);
// 设置公司ID,从物流订单中获取
shipperAddressBook.setCompanyId(logisticsOrder.getCompanyId());
// 设置公司名称,从物流订单中获取
shipperAddressBook.setCompanyName(logisticsOrder.getCompanyName());
// 设置创建人,从物流订单中获取
shipperAddressBook.setCreateBy(logisticsOrder.getCreateBy());
// 设置联系电话,从物流订单的发货人手机信息中获取
shipperAddressBook.setMobile(logisticsOrder.getShipperMobile());
// 设置收发货人名称,从物流订单的发货人名称中获取
shipperAddressBook.setShipperOrReceiverName(logisticsOrder.getShipperName());
// 设置创建人
shipperAddressBook.setCreateBy(logisticsOrder.getCreateBy());
list.add(shipperAddressBook);
}
LambdaQueryWrapper<LogisticsAddressBook> stuQuery2 = new LambdaQueryWrapper<>();
stuQuery2.eq(LogisticsAddressBook::getShipperOrReceiverName, logisticsOrder.getReceiverName())
.eq(LogisticsAddressBook::getAddressType, 2)
.eq(LogisticsAddressBook::getMobile, logisticsOrder.getReceiverMobile())
.eq(LogisticsAddressBook::getAddressInfo, logisticsOrder.getReceiverAddress());
Long count2 = getBaseMapper().selectCount(stuQuery2);
if(count2 == 0) {
// 创建收货人地址簿
LogisticsAddressBook reciverAddressBook = new LogisticsAddressBook();
// 设置收货人名称,从物流订单的收货人名称中获取
reciverAddressBook.setShipperOrReceiverName(logisticsOrder.getReceiverName());
// 设置地址信息,从物流订单的发货人地址获取
reciverAddressBook.setAddressInfo(logisticsOrder.getReceiverAddress());
// 设置地址类型,1表示发货人地址
reciverAddressBook.setAddressType(2);
// 设置公司ID,从物流订单中获取
reciverAddressBook.setCompanyId(logisticsOrder.getCompanyId());
// 设置公司名称,从物流订单中获取
reciverAddressBook.setCompanyName(logisticsOrder.getCompanyName());
// 设置创建人,从物流订单中获取
reciverAddressBook.setCreateBy(logisticsOrder.getCreateBy());
// 设置联系电话,从物流订单的发货人手机信息中获取
reciverAddressBook.setMobile(logisticsOrder.getReceiverMobile());
// 设置创建人
reciverAddressBook.setCreateBy(logisticsOrder.getCreateBy());
list.add(reciverAddressBook);
}
// 调用save方法保存地址簿信息,返回保存结果
Gson gson = new Gson();
System.out.println(gson.toJson(list));
return saveBatch(list);
}
@Override
public IPage<LogisticsAddressBook> getLogisticsAddressBookPageList(LogisticsAddressBookQueryVo logisticsAddressBookQueryVo) {
Page<LogisticsAddressBook> page = new Page<>();
LambdaQueryWrapper<LogisticsAddressBook> wrapper = new LambdaQueryWrapper<>();
if(logisticsAddressBookQueryVo != null && StringUtils.isNotEmpty(logisticsAddressBookQueryVo.getShipperOrReceiverName())){
wrapper.like(LogisticsAddressBook::getShipperOrReceiverName, logisticsAddressBookQueryVo.getShipperOrReceiverName());
}
if(logisticsAddressBookQueryVo != null && StringUtils.isNotEmpty(logisticsAddressBookQueryVo.getMobile())){
wrapper.like(StringUtils.isNotEmpty(logisticsAddressBookQueryVo.getMobile()), LogisticsAddressBook::getMobile, logisticsAddressBookQueryVo.getMobile());
}
return logisticsAddressBookMapper.selectPage(page,wrapper);
}
}

23
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/logisticsaddressbook/vo/LogisticsAddressBookQueryVo.java

@ -0,0 +1,23 @@
package cc.hiver.mall.logisticsaddressbook.vo;
import cc.hiver.core.base.HiverBasePageQuery;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 收发货地址簿查询条件
*
* @author 乔徽
* @date 2024/9/8
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class LogisticsAddressBookQueryVo extends HiverBasePageQuery {
@ApiModelProperty(value = "联系电话")
private String mobile;
@ApiModelProperty(value = "收发货人名称")
private String shipperOrReceiverName;
}

6
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/logisticsorder/controller/LogisticsOrderController.java

@ -2,6 +2,7 @@ package cc.hiver.mall.logisticsorder.controller;
import cc.hiver.core.common.utils.ResultUtil;
import cc.hiver.core.common.vo.Result;
import cc.hiver.mall.logisticsaddressbook.service.LogisticsAddressBookService;
import cc.hiver.mall.logisticsorder.entity.LogisticsOrder;
import cc.hiver.mall.logisticsorder.service.LogisticsOrderService;
import cc.hiver.mall.logisticsorder.vo.LogisticsOrderQueryVo;
@ -30,12 +31,17 @@ public class LogisticsOrderController {
@Autowired
private LogisticsOrderService logisticsOrderService;
@Autowired
private LogisticsAddressBookService logisticsAddressBookService;
@PostMapping(value = "/addLogisticsOrder")
@ApiOperation("新增物流订单")
public Result addLogisticsOrder(@RequestBody LogisticsOrder logisticsOrder) {
final boolean b = logisticsOrderService.saveOrUpdate(logisticsOrder);
if (b) {
//保存收发货人地址簿
logisticsAddressBookService.saveLogisticsAddressBook(logisticsOrder);
return ResultUtil.success("保存成功!");
} else {
return ResultUtil.error("保存失败!");

Loading…
Cancel
Save