diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/logisticsaddressbook/controller/LogisticsAddressBookController.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/logisticsaddressbook/controller/LogisticsAddressBookController.java new file mode 100644 index 00000000..dab7001d --- /dev/null +++ b/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> getLogisticsOrderPageList(@RequestBody(required = false)LogisticsAddressBookQueryVo logisticsAddressBookQueryVo) { + final IPage result = logisticsAddressBookService.getLogisticsAddressBookPageList(logisticsAddressBookQueryVo); + return new ResultUtil>().setData(result); + } +} diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/logisticsaddressbook/entity/LogisticsAddressBook.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/logisticsaddressbook/entity/LogisticsAddressBook.java new file mode 100644 index 00000000..7ff3f760 --- /dev/null +++ b/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; + +} diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/logisticsaddressbook/mapper/LogisticsAddressBookMapper.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/logisticsaddressbook/mapper/LogisticsAddressBookMapper.java new file mode 100644 index 00000000..ec24bd94 --- /dev/null +++ b/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 { + + + + +} diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/logisticsaddressbook/service/LogisticsAddressBookService.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/logisticsaddressbook/service/LogisticsAddressBookService.java new file mode 100644 index 00000000..c82c7be4 --- /dev/null +++ b/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 { + + + boolean saveLogisticsAddressBook(LogisticsOrder logisticsOrder); + + + IPage getLogisticsAddressBookPageList(LogisticsAddressBookQueryVo logisticsAddressBookQueryVo); +} diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/logisticsaddressbook/service/impl/LogisticsAddressBookServiceImpl.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/logisticsaddressbook/service/impl/LogisticsAddressBookServiceImpl.java new file mode 100644 index 00000000..dc5118ad --- /dev/null +++ b/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; + +/** + * @ClassName:LogisticsAddressBookServiceImpl + * @Author: qiaohui + * @Date: 2024/9/8 10:15 + * @Description: 收发货地址簿接口 + */ +@Service +public class LogisticsAddressBookServiceImpl extends ServiceImplimplements LogisticsAddressBookService { + + + @Autowired + private LogisticsAddressBookMapper logisticsAddressBookMapper; + + /** + * 保存物流地址簿信息 + * + * @param logisticsOrder 物流订单对象,包含地址簿所需的信息 + * @return 保存成功返回true,否则返回false + */ + @Override + public boolean saveLogisticsAddressBook(LogisticsOrder logisticsOrder) { + + List list = new ArrayList<>(); + + //根据名称、电话、地址查询看是不是存在,如果不存在则新建一条 + LambdaQueryWrapper 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 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 getLogisticsAddressBookPageList(LogisticsAddressBookQueryVo logisticsAddressBookQueryVo) { + Page page = new Page<>(); + LambdaQueryWrapper 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); + } + +} diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/logisticsaddressbook/vo/LogisticsAddressBookQueryVo.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/logisticsaddressbook/vo/LogisticsAddressBookQueryVo.java new file mode 100644 index 00000000..f4aca3cd --- /dev/null +++ b/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; +} diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/logisticsorder/controller/LogisticsOrderController.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/logisticsorder/controller/LogisticsOrderController.java index a143885b..e9328f0f 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/logisticsorder/controller/LogisticsOrderController.java +++ b/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("保存失败!");