Commit 80e5931c authored by huangcb's avatar huangcb

新增货主接口:收货地址

parent d6f4008e
......@@ -67,4 +67,15 @@ public class ErrorMessageComponent {
@Value("${error-message.goodsowner.delivery-address.detail.1001}")
private String goodsOwnerDeliveryAddressDetail1001;
@Value("${error-message.goodsowner.receive-address.add.1001}")
private String goodsOwnerReceiveAddressAdd1001;
@Value("${error-message.goodsowner.receive-address.edit.1001}")
private String goodsOwnerReceiveAddressEdit1001;
@Value("${error-message.goodsowner.receive-address.edit.1002}")
private String goodsOwnerReceiveAddressEdit1002;
@Value("${error-message.goodsowner.receive-address.detail.1001}")
private String goodsOwnerReceiveAddressDetail1001;
}
package com.esv.freight.customer.module.goodsowner.controller;
import com.alibaba.fastjson.JSONObject;
import com.esv.freight.customer.common.exception.EException;
import com.esv.freight.customer.common.response.EResponse;
import com.esv.freight.customer.common.validator.groups.*;
import com.esv.freight.customer.module.goodsowner.GoodsOwnerConstants;
import com.esv.freight.customer.module.goodsowner.form.DeleteAddressForm;
import com.esv.freight.customer.module.goodsowner.form.ReceiveAddressForm;
import com.esv.freight.customer.module.goodsowner.service.DeliveryAddressService;
import com.esv.freight.customer.module.goodsowner.service.ReceiveAddressService;
import com.esv.freight.customer.module.goodsowner.validator.groups.AddressBrief;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @description: 承运商收货地址Controller
* @project: freight-customer-service
* @name: com.esv.freight.customer.module.goodsowner.controller.ReceiveAddressController
* @author: 黄朝斌
* @email: huangchaobin@esvtek.com
* @createTime: 2020/04/21 15:40
* @version:1.0
*/
@Slf4j
@RestController
@RequestMapping("/goodsowner/receive/address")
@Validated
public class ReceiveAddressController {
private DeliveryAddressService deliveryAddressService;
private ReceiveAddressService receiveAddressService;
@Autowired
public ReceiveAddressController(DeliveryAddressService deliveryAddressService, ReceiveAddressService receiveAddressService) {
this.deliveryAddressService = deliveryAddressService;
this.receiveAddressService = receiveAddressService;
}
/**
* description 新增收货地址
* param [form]
* return com.esv.freight.customer.common.response.EResponse
* author Administrator
* createTime 2020/04/21 16:56
**/
@PostMapping("/add")
public EResponse add(@RequestBody @Validated(ValidatorInsert.class) ReceiveAddressForm form) throws EException {
// 判断是否复制地址
if (GoodsOwnerConstants.ADDRESS_COPY_YES.equals(form.getAddressCopy())) {
}
Long id = receiveAddressService.addAddress(form);
JSONObject data = new JSONObject();
data.put("id", id);
return EResponse.ok(data);
}
/**
* description 编辑收货地址
* param [form]
* return com.esv.freight.customer.common.response.EResponse
* author Administrator
* createTime 2020/04/21 18:56
**/
@PostMapping("/edit")
public EResponse edit(@RequestBody @Validated(ValidatorUpdate.class) ReceiveAddressForm form) throws EException {
receiveAddressService.editAddress(form);
return EResponse.ok();
}
/**
* description 查看收货地址详情
* param [form]
* return com.esv.freight.customer.common.response.EResponse
* author Administrator
* createTime 2020/04/21 19:55
**/
@PostMapping("/detail")
public EResponse detail(@RequestBody @Validated(ValidatorDetail.class) ReceiveAddressForm form) throws EException {
return EResponse.ok(receiveAddressService.getAddressDetail(form));
}
/**
* description 获取所有收货地址列表
* param [form]
* return com.esv.freight.customer.common.response.EResponse
* author Administrator
* createTime 2020/04/21 20:08
**/
@PostMapping("/all")
public EResponse all(@RequestBody @Validated(AddressBrief.class) ReceiveAddressForm form) throws EException {
return EResponse.ok(receiveAddressService.getAllAddress(form));
}
/**
* description 删除收货地址
* param [form]
* return com.esv.freight.customer.common.response.EResponse
* author Administrator
* createTime 2020/04/21 19:27
**/
@PostMapping("/delete")
public EResponse delete(@RequestBody @Validated(ValidatorDelete.class) DeleteAddressForm form) throws EException {
int count = receiveAddressService.deleteAddress(form);
JSONObject data = new JSONObject();
data.put("count", count);
return EResponse.ok(data);
}
/**
* description 分页查询收货地址列表
* param [form]
* return com.esv.freight.customer.common.response.EResponse
* author Administrator
* createTime 2020/04/22 9:28
**/
@PostMapping("/list")
public EResponse list(@RequestBody @Validated(ValidatorList.class) ReceiveAddressForm form) throws EException {
return EResponse.ok(receiveAddressService.selectAddressList(form));
}
}
package com.esv.freight.customer.module.goodsowner.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.esv.freight.customer.module.goodsowner.entity.ReceiveAddressEntity;
import org.apache.ibatis.annotations.Mapper;
import java.util.Map;
/**
* 货主收货地址表
*
......@@ -14,6 +17,6 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface ReceiveAddressDao extends BaseMapper<ReceiveAddressEntity> {
IPage selectAddressList(IPage page, Map<String, Object> queryObj);
}
package com.esv.freight.customer.module.goodsowner.dto;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
* 货主发货地址表
*
* @author 黄朝斌
* @email huangchaobin@esvtek.com
* @date 2020-04-21 15:27:27
*/
@Data
public class ReceiveAddressDto {
/**
*
*/
private Long id;
/**
* 货主类型:1-个人、2-企业
*/
private String ownerType;
/**
* 客户名称
*/
private String ownerFullName;
/**
* (个人或企业)联系人
*/
private String contactor;
/**
* 地址编码
*/
private String addressNumber;
/**
* 地址名称
*/
private String addressName;
/**
* 省份代码
*/
private String provinceCode;
/**
* 市代码
*/
private String cityCode;
/**
* 区县代码
*/
private String districtCode;
/**
* 详细地址
*/
private String detailAddress;
/**
* 收货人
*/
private String receiver;
/**
* 收货人电话
*/
private String receiverPhone;
/**
* 收货人座机
*/
private String receiverTelephone;
/**
* 经度
*/
private BigDecimal lon;
/**
* 纬度
*/
private BigDecimal lat;
/**
* 是否默认收货地址:0-非默认,1-默认
*/
private Boolean defaultAddress;
/**
* 0-未删除,1-已删除
*/
private Boolean deleted;
/**
* 创建者
*/
private String createUser;
/**
* 修改者
*/
private String updateUser;
/**
* 创建时间
*/
private Date createTime;
/**
* 修改时间
*/
private Date updateTime;
}
package com.esv.freight.customer.module.goodsowner.form;
import com.esv.freight.customer.common.validator.groups.ValidatorDetail;
import com.esv.freight.customer.common.validator.groups.ValidatorInsert;
import com.esv.freight.customer.common.validator.groups.ValidatorList;
import com.esv.freight.customer.common.validator.groups.ValidatorUpdate;
import com.esv.freight.customer.module.goodsowner.validator.groups.AddressBrief;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.Range;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
/**
* @description:
* @project: freight-customer-service
* @name: com.esv.freight.customer.module.goodsowner.form.ReceiveAddressForm
* @author: 黄朝斌
* @email: huangchaobin@esvtek.com
* @createTime: 2020/04/17 16:11
* @version:1.0
*/
@Data
public class ReceiveAddressForm {
@NotNull(message = "参数id不能为空", groups = {ValidatorUpdate.class, ValidatorDetail.class})
private Long id;
@NotNull(message = "参数ownerId不能为空", groups = {ValidatorInsert.class, ValidatorUpdate.class, AddressBrief.class})
private Long ownerId;
@Length(max = 50, message = "参数addressName长度不合法", groups = {ValidatorInsert.class, ValidatorUpdate.class})
@NotBlank(message = "参数addressName不能为空", groups = {ValidatorInsert.class})
private String addressName;
@Length(min = 6, max = 6, message = "参数provinceCode长度不合法", groups = {ValidatorInsert.class, ValidatorUpdate.class, ValidatorList.class})
@NotBlank(message = "参数provinceCode不能为空", groups = {ValidatorInsert.class})
private String provinceCode;
@Length(min = 6, max = 6, message = "参数cityCode长度不合法", groups = {ValidatorInsert.class, ValidatorUpdate.class, ValidatorList.class})
@NotBlank(message = "参数cityCode不能为空", groups = {ValidatorInsert.class})
private String cityCode;
@Length(min = 6, max = 6, message = "参数districtCode长度不合法", groups = {ValidatorInsert.class, ValidatorUpdate.class})
@NotBlank(message = "参数districtCode不能为空", groups = {ValidatorInsert.class})
private String districtCode;
@Length(max = 50, message = "参数detailAddress长度不合法", groups = {ValidatorInsert.class, ValidatorUpdate.class})
@NotBlank(message = "参数detailAddress不能为空", groups = {ValidatorInsert.class})
private String detailAddress;
@Length(max = 20, message = "参数receiver长度不合法", groups = {ValidatorInsert.class, ValidatorUpdate.class})
@NotBlank(message = "参数receiver不能为空", groups = {ValidatorInsert.class})
private String receiver;
@Length(min = 11, max = 11, message = "参数receiverPhone长度不合法", groups = {ValidatorInsert.class, ValidatorUpdate.class})
@NotBlank(message = "参数receiverPhone不能为空", groups = {ValidatorInsert.class})
private String receiverPhone;
@Length(max = 20, message = "参数receiverTelephone长度不合法", groups = {ValidatorInsert.class, ValidatorUpdate.class})
private String receiverTelephone;
@Length(max = 10, message = "参数lon长度不合法", groups = {ValidatorInsert.class, ValidatorUpdate.class})
private String lon;
@Length(max = 10, message = "参数lat长度不合法", groups = {ValidatorInsert.class, ValidatorUpdate.class})
private String lat;
@Pattern(regexp = "[01]", message = "参数addressCopy不合法", groups = {ValidatorInsert.class})
private String addressCopy;
@Length(max = 50, message = "参数keywords长度不合法", groups = {ValidatorList.class})
private String keywords;
/**
* 页码
**/
@Range(min = 1, max = 65535, message = "无效的pageNum", groups = {ValidatorList.class})
@NotNull(message = "参数pageNum不能为空", groups = {ValidatorList.class})
private Integer pageNum;
/**
* 每页记录条数
**/
@Range(min = 1, max = 100, message = "pageSize", groups = {ValidatorList.class})
@NotNull(message = "参数pageSize不能为空", groups = {ValidatorList.class})
private Integer pageSize;
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
}
}
......@@ -5,12 +5,10 @@ import com.esv.freight.customer.common.vo.PageResultVO;
import com.esv.freight.customer.module.goodsowner.entity.DeliveryAddressEntity;
import com.esv.freight.customer.module.goodsowner.form.DeleteAddressForm;
import com.esv.freight.customer.module.goodsowner.form.DeliveryAddressForm;
import com.esv.freight.customer.module.goodsowner.vo.DeliveryAddressBriefVO;
import com.esv.freight.customer.module.goodsowner.vo.DeliveryAddressListVO;
import com.esv.freight.customer.module.goodsowner.vo.AddressBriefVO;
import com.esv.freight.customer.module.goodsowner.vo.DeliveryAddressVO;
import java.util.List;
import java.util.Map;
/**
* 货主发货地址表
......@@ -64,7 +62,7 @@ public interface DeliveryAddressService extends IService<DeliveryAddressEntity>
* author Administrator
* createTime 2020/04/21 20:04
**/
List<DeliveryAddressBriefVO> getAllAddress(DeliveryAddressForm form);
List<AddressBriefVO> getAllAddress(DeliveryAddressForm form);
/**
* description 通过地址名称查询地址记录
......
package com.esv.freight.customer.module.goodsowner.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.esv.freight.customer.common.vo.PageResultVO;
import com.esv.freight.customer.module.goodsowner.entity.ReceiveAddressEntity;
import com.esv.freight.customer.module.goodsowner.form.DeleteAddressForm;
import com.esv.freight.customer.module.goodsowner.form.ReceiveAddressForm;
import com.esv.freight.customer.module.goodsowner.vo.AddressBriefVO;
import com.esv.freight.customer.module.goodsowner.vo.ReceiveAddressVO;
import java.util.List;
/**
* 货主收货地址表
......@@ -12,5 +19,68 @@ import com.esv.freight.customer.module.goodsowner.entity.ReceiveAddressEntity;
*/
public interface ReceiveAddressService extends IService<ReceiveAddressEntity> {
/**
* description 新增收货地址
* param [form]
* return java.lang.Long
* author Administrator
* createTime 2020/04/21 15:59
**/
Long addAddress(ReceiveAddressForm form);
/**
* description 编辑收货地址
* param [form]
* return int
* author Administrator
* createTime 2020/04/21 17:56
**/
int editAddress(ReceiveAddressForm form);
/**
* description 删除收货地址
* param [form]
* return int
* author Administrator
* createTime 2020/04/21 19:23
**/
int deleteAddress(DeleteAddressForm form);
/**
* description 查看收货地址详情
* param [form]
* return com.esv.freight.customer.module.goodsowner.vo.Receive
* author Administrator
* createTime 2020/04/21 19:50
**/
ReceiveAddressVO getAddressDetail(ReceiveAddressForm form);
/**
* description 获取所有收货地址列表
* param [form]
* return java.util.List<com.esv.freight.customer.module.goodsowner.vo.AddressBriefVO>
* author Administrator
* createTime 2020/04/21 20:04
**/
List<AddressBriefVO> getAllAddress(ReceiveAddressForm form);
/**
* description 通过地址名称查询地址记录
* param [ownerId, addressName]
* return java.util.List<com.esv.freight.customer.module.goodsowner.entity.ReceiveAddressEntity>
* author Administrator
* createTime 2020/04/21 16:33
**/
List<ReceiveAddressEntity> getAddressByName(Long ownerId, String addressName);
/**
* description 分页查询地址列表
* param [form]
* return com.esv.freight.customer.common.vo.PageResultVO
* author Administrator
* createTime 2020/04/22 9:21
**/
PageResultVO selectAddressList(ReceiveAddressForm form);
}
......@@ -12,13 +12,12 @@ import com.esv.freight.customer.common.vo.PageResultVO;
import com.esv.freight.customer.feign.FeignBaseService;
import com.esv.freight.customer.module.goodsowner.GoodsOwnerConstants;
import com.esv.freight.customer.module.goodsowner.dao.DeliveryAddressDao;
import com.esv.freight.customer.module.goodsowner.dto.AccountInfoDto;
import com.esv.freight.customer.module.goodsowner.dto.DeliveryAddressDto;
import com.esv.freight.customer.module.goodsowner.entity.DeliveryAddressEntity;
import com.esv.freight.customer.module.goodsowner.form.DeleteAddressForm;
import com.esv.freight.customer.module.goodsowner.form.DeliveryAddressForm;
import com.esv.freight.customer.module.goodsowner.service.DeliveryAddressService;
import com.esv.freight.customer.module.goodsowner.vo.DeliveryAddressBriefVO;
import com.esv.freight.customer.module.goodsowner.vo.AddressBriefVO;
import com.esv.freight.customer.module.goodsowner.vo.DeliveryAddressListVO;
import com.esv.freight.customer.module.goodsowner.vo.DeliveryAddressVO;
import org.apache.commons.lang3.StringUtils;
......@@ -135,16 +134,16 @@ public class DeliveryAddressServiceImpl extends ServiceImpl<DeliveryAddressDao,
}
@Override
public List<DeliveryAddressBriefVO> getAllAddress(DeliveryAddressForm form) {
public List<AddressBriefVO> getAllAddress(DeliveryAddressForm form) {
// 查询
QueryWrapper<DeliveryAddressEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("owner_id", form.getOwnerId());
List<DeliveryAddressEntity> deliveryAddressEntityList = this.baseMapper.selectList(queryWrapper);
// 数据转换
List<DeliveryAddressBriefVO> addressBriefVOList = new ArrayList<>();
List<AddressBriefVO> addressBriefVOList = new ArrayList<>();
deliveryAddressEntityList.forEach(entity -> {
DeliveryAddressBriefVO vo = new DeliveryAddressBriefVO();
AddressBriefVO vo = new AddressBriefVO();
BeanUtils.copyProperties(entity, vo);
addressBriefVOList.add(vo);
});
......
package com.esv.freight.customer.module.goodsowner.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
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.esv.freight.customer.common.component.ErrorMessageComponent;
import com.esv.freight.customer.common.exception.EException;
import com.esv.freight.customer.common.util.FeignUtils;
import com.esv.freight.customer.common.vo.PageResultVO;
import com.esv.freight.customer.feign.FeignBaseService;
import com.esv.freight.customer.module.goodsowner.GoodsOwnerConstants;
import com.esv.freight.customer.module.goodsowner.dao.ReceiveAddressDao;
import com.esv.freight.customer.module.goodsowner.dto.ReceiveAddressDto;
import com.esv.freight.customer.module.goodsowner.entity.ReceiveAddressEntity;
import com.esv.freight.customer.module.goodsowner.form.DeleteAddressForm;
import com.esv.freight.customer.module.goodsowner.form.ReceiveAddressForm;
import com.esv.freight.customer.module.goodsowner.service.ReceiveAddressService;
import com.esv.freight.customer.module.goodsowner.vo.AddressBriefVO;
import com.esv.freight.customer.module.goodsowner.vo.ReceiveAddressListVO;
import com.esv.freight.customer.module.goodsowner.vo.ReceiveAddressVO;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.*;
@Service("receiveAddressService")
public class ReceiveAddressServiceImpl extends ServiceImpl<ReceiveAddressDao, ReceiveAddressEntity> implements ReceiveAddressService {
private FeignBaseService feignBaseService;
private ErrorMessageComponent errorMessageComponent;
@Autowired
public ReceiveAddressServiceImpl(FeignBaseService feignBaseService, ErrorMessageComponent errorMessageComponent) {
this.feignBaseService = feignBaseService;
this.errorMessageComponent = errorMessageComponent;
}
@Override
public Long addAddress(ReceiveAddressForm form) {
// 1.判断地址是否重复
List<ReceiveAddressEntity> receiveAddressEntityList = this.getAddressByName(form.getOwnerId(), form.getAddressName());
if (0 < receiveAddressEntityList.size()) {
throw new EException(1001, errorMessageComponent.getGoodsOwnerReceiveAddressAdd1001());
}
// 2.获取地址编码
JSONObject batchIdReqJson = new JSONObject();
batchIdReqJson.put("prefix", "SH");
batchIdReqJson.put("formatter", "yyyyMMdd");
batchIdReqJson.put("length", 13);
JSONObject batchIdResJson;
try {
batchIdResJson = FeignUtils.getFeignResultData(feignBaseService.getBatchId(batchIdReqJson));
} catch (Exception e) {
log.error("调用[基础服务]生成收货地址编号失败");
throw new EException("生成收货地址编号时发生错误");
}
String addressNumber = batchIdResJson.getString("batchId");
// 3.新增地址
ReceiveAddressEntity addressEntity = new ReceiveAddressEntity();
BeanUtils.copyProperties(form, addressEntity);
addressEntity.setAddressNumber(addressNumber);
if (StringUtils.isNotBlank(form.getLon())) {
addressEntity.setLon(new BigDecimal(form.getLon()));
}
if (StringUtils.isNotBlank(form.getLat())) {
addressEntity.setLat(new BigDecimal(form.getLat()));
}
this.baseMapper.insert(addressEntity);
return addressEntity.getId();
}
@Override
public int editAddress(ReceiveAddressForm form) {
// 1.判断ID是否有效
ReceiveAddressEntity entity = this.baseMapper.selectById(form.getId());
if (null == entity) {
throw new EException(1001, errorMessageComponent.getGoodsOwnerReceiveAddressEdit1001());
}
// 2.判断地址是否重复
QueryWrapper<ReceiveAddressEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.ne("id", form.getId());
queryWrapper.eq("owner_id", form.getOwnerId());
queryWrapper.eq("address_name", form.getAddressName());
List<ReceiveAddressEntity> receiveAddressEntityList = this.baseMapper.selectList(queryWrapper);
if (0 < receiveAddressEntityList.size()) {
throw new EException(1002, errorMessageComponent.getGoodsOwnerReceiveAddressEdit1002());
}
// 3.更新地址
ReceiveAddressEntity updateEntity = new ReceiveAddressEntity();
BeanUtils.copyProperties(form, updateEntity);
if (StringUtils.isNotBlank(form.getLon())) {
updateEntity.setLon(new BigDecimal(form.getLon()));
}
if (StringUtils.isNotBlank(form.getLat())) {
updateEntity.setLat(new BigDecimal(form.getLat()));
}
int flag = this.baseMapper.updateById(updateEntity);
return flag;
}
@Override
public int deleteAddress(DeleteAddressForm form) {
String[] ids = form.getId().split(",");
int count = this.baseMapper.deleteBatchIds(Arrays.asList(ids));
return count;
}
@Override
public ReceiveAddressVO getAddressDetail(ReceiveAddressForm form) {
// 1.判断ID是否有效
ReceiveAddressEntity entity = this.baseMapper.selectById(form.getId());
if (null == entity) {
throw new EException(1001, errorMessageComponent.getGoodsOwnerReceiveAddressDetail1001());
}
// 数据转换
ReceiveAddressVO addressVO = new ReceiveAddressVO();
BeanUtils.copyProperties(entity, addressVO);
return addressVO;
}
@Override
public List<AddressBriefVO> getAllAddress(ReceiveAddressForm form) {
// 查询
QueryWrapper<ReceiveAddressEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("owner_id", form.getOwnerId());
List<ReceiveAddressEntity> receiveAddressEntityList = this.baseMapper.selectList(queryWrapper);
// 数据转换
List<AddressBriefVO> addressBriefVOList = new ArrayList<>();
receiveAddressEntityList.forEach(entity -> {
AddressBriefVO vo = new AddressBriefVO();
BeanUtils.copyProperties(entity, vo);
addressBriefVOList.add(vo);
});
return addressBriefVOList;
}
@Override
public List<ReceiveAddressEntity> getAddressByName(Long ownerId, String addressName) {
QueryWrapper<ReceiveAddressEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("owner_id", ownerId);
queryWrapper.eq("address_name", addressName);
return this.getBaseMapper().selectList(queryWrapper);
}
@Override
public PageResultVO selectAddressList(ReceiveAddressForm form) {
// 分页查询
Map<String, Object> queryObj = new HashMap<>(3);
if (StringUtils.isNotBlank(form.getKeywords())) {
queryObj.put("keywords", form.getKeywords());
}
if (StringUtils.isNotBlank(form.getProvinceCode())) {
queryObj.put("provinceCode", form.getProvinceCode());
}
if (StringUtils.isNotBlank(form.getCityCode())) {
queryObj.put("cityCode", form.getCityCode());
}
IPage<ReceiveAddressDto> page = new Page<>(form.getPageNum(), form.getPageSize());
this.baseMapper.selectAddressList(page, queryObj);
// 数据转换
List<ReceiveAddressDto> addressDtoList = page.getRecords();
List<ReceiveAddressListVO> addressListVOList = new ArrayList<>();
addressDtoList.forEach(entity -> {
ReceiveAddressListVO vo = new ReceiveAddressListVO();
BeanUtils.copyProperties(entity, vo);
vo.setCreateTime(entity.getCreateTime().getTime());
if (GoodsOwnerConstants.OWNER_TYPE_PERSONAL.equals(entity.getOwnerType())) {
vo.setGoodsOwnerName(entity.getContactor());
} else {
vo.setGoodsOwnerName(entity.getOwnerFullName());
}
addressListVOList.add(vo);
});
return new PageResultVO(page, addressListVOList);
}
}
\ No newline at end of file
......@@ -7,14 +7,14 @@ import org.apache.commons.lang3.builder.ToStringStyle;
/**
* @description:
* @project: freight-customer-service
* @name: com.esv.freight.customer.module.goodsowner.vo.DeliveryAddressBriefVO
* @name: com.esv.freight.customer.module.goodsowner.vo.AddressBriefVO
* @author: 黄朝斌
* @email: huangchaobin@esvtek.com
* @createTime: 2020/04/21 19:39
* @version:1.0
*/
@Data
public class DeliveryAddressBriefVO {
public class AddressBriefVO {
/**
*
......
package com.esv.freight.customer.module.goodsowner.vo;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
/**
* @description:
* @project: freight-customer-service
* @name: com.esv.freight.customer.module.goodsowner.vo.ReceiveAddressListVO
* @author: 黄朝斌
* @email: huangchaobin@esvtek.com
* @createTime: 2020/04/21 19:39
* @version:1.0
*/
@Data
public class ReceiveAddressListVO {
/**
*
*/
private Long id;
/**
* 地址编码
*/
private String goodsOwnerName;
/**
* 地址编码
*/
private String addressNumber;
/**
* 地址名称
*/
private String addressName;
/**
* 省份代码
*/
private String provinceCode;
/**
* 市代码
*/
private String cityCode;
/**
* 区县代码
*/
private String districtCode;
/**
* 详细地址
*/
private String detailAddress;
/**
* 收货人
*/
private String receiver;
/**
* 收货人电话
*/
private String receiverPhone;
/**
* 收货人座机
*/
private String receiverTelephone;
/**
*
*/
private String createUser;
/**
*
*/
private Long createTime;
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
}
}
package com.esv.freight.customer.module.goodsowner.vo;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.math.BigDecimal;
/**
* @description:
* @project: freight-customer-service
* @name: com.esv.freight.customer.module.goodsowner.vo.ReceiveAddressVO
* @author: 黄朝斌
* @email: huangchaobin@esvtek.com
* @createTime: 2020/04/21 19:39
* @version:1.0
*/
@Data
public class ReceiveAddressVO {
/**
*
*/
private Long id;
/**
* 地址编码
*/
private String addressNumber;
/**
* 地址名称
*/
private String addressName;
/**
* 省份代码
*/
private String provinceCode;
/**
* 市代码
*/
private String cityCode;
/**
* 区县代码
*/
private String districtCode;
/**
* 详细地址
*/
private String detailAddress;
/**
* 收货人
*/
private String receiver;
/**
* 收货人电话
*/
private String receiverPhone;
/**
* 收货人座机
*/
private String receiverTelephone;
/**
* 经度
*/
private BigDecimal lon;
/**
* 纬度
*/
private BigDecimal lat;
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
}
}
......@@ -72,6 +72,14 @@ error-message:
register:
1001: 帐号已存在
delivery-address:
add:
1001: 重复的地址名称
edit:
1001: 无效的地址ID
1002: 重复的地址名称
detail:
1001: 无效的地址ID
receive-address:
add:
1001: 重复的地址名称
edit:
......
......@@ -46,7 +46,7 @@
or b.owner_brief_name like CONCAT('%',#{queryObj.keywords},'%')
or b.contactor like CONCAT('%',#{queryObj.keywords},'%'))
</if>
ORDER BY a.update_time DESC
ORDER BY a.update_time DESC, address_name ASC
</select>
</mapper>
\ No newline at end of file
......@@ -28,6 +28,25 @@
<result property="updateTime" column="update_time"/>
</resultMap>
<!-- 分页查询地址列表 -->
<select id="selectAddressList" parameterType="java.util.Map"
resultType="com.esv.freight.customer.module.goodsowner.dto.ReceiveAddressDto">
select a.*, b.owner_type, b.owner_full_name, b.contactor
from goods_owner_receive_address a, goods_owner_info b
where a.owner_id = b.account_id
<if test="queryObj.provinceCode != null">
and b.province_code = #{queryObj.provinceCode}
</if>
<if test="queryObj.cityCode != null">
and b.city_code = #{queryObj.cityCode}
</if>
<if test="queryObj.keywords != null">
and (a.address_name like CONCAT('%',#{queryObj.keywords},'%')
or b.owner_full_name like CONCAT('%',#{queryObj.keywords},'%')
or b.owner_brief_name like CONCAT('%',#{queryObj.keywords},'%')
or b.contactor like CONCAT('%',#{queryObj.keywords},'%'))
</if>
ORDER BY a.update_time DESC, address_name ASC
</select>
</mapper>
\ No newline at end of file
......@@ -115,7 +115,7 @@ public class DeliveryAddressControllerTest extends BaseTestController {
}
/**
* 新增发货地址:地址名称重复
* 新增发货地址:参数错误
**/
@Test
@Rollback
......
package com.esv.freight.customer.module.goodsowner.controller;
import com.alibaba.fastjson.JSONObject;
import com.esv.freight.customer.BaseTestController;
import com.esv.freight.customer.common.response.ECode;
import com.esv.freight.customer.module.goodsowner.form.DeleteAddressForm;
import com.esv.freight.customer.module.goodsowner.form.DeliveryAddressForm;
import com.esv.freight.customer.module.goodsowner.form.ReceiveAddressForm;
import lombok.extern.slf4j.Slf4j;
import org.junit.Assert;
import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.MethodSorters;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MvcResult;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.result.MockMvcResultHandlers;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
import org.springframework.transaction.annotation.Transactional;
/**
* @description:
* @project: freight-customer-service
* @name: com.esv.freight.customer.module.goodsowner.controller.ReceiveAddressControllerTest
* @author: 黄朝斌
* @email: huangchaobin@esvtek.com
* @createTime: 2020/04/21 16:57
* @version:1.0
*/
@RunWith(SpringRunner.class)
@SpringBootTest
@Slf4j
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
@Transactional
@Rollback(false)
public class ReceiveAddressControllerTest extends BaseTestController {
/**
* 新增收货地址
**/
@Test
public void a1_add_success_test() throws Exception {
String url = "/goodsowner/receive/address/add";
// 构造数据
ReceiveAddressForm form = new ReceiveAddressForm();
form.setOwnerId(1L);
form.setAddressName("黄朝斌-收货地址-测试");
form.setProvinceCode("210000");
form.setCityCode("210100");
form.setDistrictCode("210103");
form.setDetailAddress("朝阳街少帅府巷46号");
form.setReceiver("张作霖");
form.setReceiverPhone("13912340001");
form.setReceiverTelephone("(024)24850576");
form.setLon("123.464052");
form.setLat("41.800415");
JSONObject reqJson = JSONObject.parseObject(form.toString());
MvcResult mvcResult = this.getMockMvc().perform(MockMvcRequestBuilders.post(url)
.contentType(MediaType.APPLICATION_JSON_UTF8_VALUE)
.headers(this.getDefaultHttpHeaders())
.content(reqJson.toJSONString()))
.andDo(MockMvcResultHandlers.print())
.andExpect(MockMvcResultMatchers.status().isOk())
.andReturn();
String responseStr = mvcResult.getResponse().getContentAsString();
log.info(responseStr);
JSONObject result = JSONObject.parseObject(responseStr);
Assert.assertEquals(ECode.SUCCESS.code(), result.getIntValue("code"));
Assert.assertTrue(result.getJSONObject("data").containsKey("id"));
}
/**
* 新增收货地址:地址名称重复
**/
@Test
@Rollback
public void a2_add_repeat_addressName_failure_test() throws Exception {
String url = "/goodsowner/receive/address/add";
// 构造数据
ReceiveAddressForm form = new ReceiveAddressForm();
form.setOwnerId(1L);
form.setAddressName("黄朝斌-收货地址-测试");
form.setProvinceCode("210000");
form.setCityCode("210100");
form.setDistrictCode("210103");
form.setDetailAddress("朝阳街少帅府巷46号");
form.setReceiver("张作霖");
form.setReceiverPhone("13912340001");
form.setReceiverTelephone("(024)24850576");
form.setLon("123.464052");
form.setLat("41.800415");
JSONObject reqJson = JSONObject.parseObject(form.toString());
MvcResult mvcResult = this.getMockMvc().perform(MockMvcRequestBuilders.post(url)
.contentType(MediaType.APPLICATION_JSON_UTF8_VALUE)
.headers(this.getDefaultHttpHeaders())
.content(reqJson.toJSONString()))
.andDo(MockMvcResultHandlers.print())
.andExpect(MockMvcResultMatchers.status().isOk())
.andReturn();
String responseStr = mvcResult.getResponse().getContentAsString();
log.info(responseStr);
JSONObject result = JSONObject.parseObject(responseStr);
Assert.assertEquals(1001, result.getIntValue("code"));
}
/**
* 新增收货地址:参数错误
**/
@Test
@Rollback
public void a3_add_wrong_param_failure_test() throws Exception {
String url = "/goodsowner/receive/address/add";
// 构造数据
ReceiveAddressForm form = new ReceiveAddressForm();
form.setOwnerId(1L);
// form.setAddressName("黄朝斌-收货地址-测试");
// form.setProvinceCode("210000");
// form.setCityCode("210100");
// form.setDistrictCode("210103");
// form.setDetailAddress("朝阳街少帅府巷46号");
form.setReceiver("张作霖");
form.setReceiverPhone("13912340001");
form.setReceiverTelephone("(024)24850576");
form.setLon("123.464052");
form.setLat("41.800415");
JSONObject reqJson = JSONObject.parseObject(form.toString());
MvcResult mvcResult = this.getMockMvc().perform(MockMvcRequestBuilders.post(url)
.contentType(MediaType.APPLICATION_JSON_UTF8_VALUE)
.headers(this.getDefaultHttpHeaders())
.content(reqJson.toJSONString()))
.andDo(MockMvcResultHandlers.print())
.andExpect(MockMvcResultMatchers.status().isOk())
.andReturn();
String responseStr = mvcResult.getResponse().getContentAsString();
log.info(responseStr);
JSONObject result = JSONObject.parseObject(responseStr);
Assert.assertEquals(ECode.PARAM_ERROR.code(), result.getIntValue("code"));
}
/**
* 编辑收货地址
**/
@Test
public void b1_edit_success_test() throws Exception {
String url = "/goodsowner/receive/address/edit";
// 构造数据
ReceiveAddressForm form = new ReceiveAddressForm();
form.setId(3L);
form.setOwnerId(1L);
form.setAddressName("黄朝斌-收货地址-测试01");
form.setProvinceCode("210000");
form.setCityCode("210100");
form.setDistrictCode("210103");
form.setDetailAddress("朝阳街少帅府巷46号");
form.setReceiver("张学良");
form.setReceiverPhone("13912340003");
form.setReceiverTelephone("(024)24850576");
form.setLon("123.464053");
form.setLat("41.800416");
JSONObject reqJson = JSONObject.parseObject(form.toString());
MvcResult mvcResult = this.getMockMvc().perform(MockMvcRequestBuilders.post(url)
.contentType(MediaType.APPLICATION_JSON_UTF8_VALUE)
.headers(this.getDefaultHttpHeaders())
.content(reqJson.toJSONString()))
.andDo(MockMvcResultHandlers.print())
.andExpect(MockMvcResultMatchers.status().isOk())
.andReturn();
String responseStr = mvcResult.getResponse().getContentAsString();
log.info(responseStr);
JSONObject result = JSONObject.parseObject(responseStr);
Assert.assertEquals(ECode.SUCCESS.code(), result.getIntValue("code"));
}
/**
* 编辑收货地址:无效的ID
**/
@Test
@Rollback
public void b2_edit_wrong_id_failure_test() throws Exception {
String url = "/goodsowner/receive/address/edit";
// 构造数据
ReceiveAddressForm form = new ReceiveAddressForm();
form.setId(99999L);
form.setOwnerId(1L);
form.setAddressName("黄朝斌-收货地址-测试01");
form.setProvinceCode("210000");
form.setCityCode("210100");
form.setDistrictCode("210103");
form.setDetailAddress("朝阳街少帅府巷46号");
form.setReceiver("张学良");
form.setReceiverPhone("13912340003");
form.setReceiverTelephone("(024)24850576");
form.setLon("123.464053");
form.setLat("41.800416");
JSONObject reqJson = JSONObject.parseObject(form.toString());
MvcResult mvcResult = this.getMockMvc().perform(MockMvcRequestBuilders.post(url)
.contentType(MediaType.APPLICATION_JSON_UTF8_VALUE)
.headers(this.getDefaultHttpHeaders())
.content(reqJson.toJSONString()))
.andDo(MockMvcResultHandlers.print())
.andExpect(MockMvcResultMatchers.status().isOk())
.andReturn();
String responseStr = mvcResult.getResponse().getContentAsString();
log.info(responseStr);
JSONObject result = JSONObject.parseObject(responseStr);
Assert.assertEquals(1001, result.getIntValue("code"));
}
/**
* 编辑收货地址:地址名称重复
**/
@Test
@Rollback
public void b3_edit_wrong_addressName_failure_test() throws Exception {
String url = "/goodsowner/receive/address/edit";
// 构造数据
ReceiveAddressForm form = new ReceiveAddressForm();
form.setId(3L);
form.setOwnerId(1L);
form.setAddressName("收货地址");
form.setProvinceCode("210000");
form.setCityCode("210100");
form.setDistrictCode("210103");
form.setDetailAddress("朝阳街少帅府巷46号");
form.setReceiver("张学良");
form.setReceiverPhone("13912340003");
form.setReceiverTelephone("(024)24850576");
form.setLon("123.464053");
form.setLat("41.800416");
JSONObject reqJson = JSONObject.parseObject(form.toString());
MvcResult mvcResult = this.getMockMvc().perform(MockMvcRequestBuilders.post(url)
.contentType(MediaType.APPLICATION_JSON_UTF8_VALUE)
.headers(this.getDefaultHttpHeaders())
.content(reqJson.toJSONString()))
.andDo(MockMvcResultHandlers.print())
.andExpect(MockMvcResultMatchers.status().isOk())
.andReturn();
String responseStr = mvcResult.getResponse().getContentAsString();
log.info(responseStr);
JSONObject result = JSONObject.parseObject(responseStr);
Assert.assertEquals(1002, result.getIntValue("code"));
}
/**
* 删除收货地址
**/
@Test
@Rollback
public void c1_delete_success_test() throws Exception {
String url = "/goodsowner/receive/address/delete";
// 构造数据
DeleteAddressForm form = new DeleteAddressForm();
form.setId("1,2,3,4,5");
JSONObject reqJson = JSONObject.parseObject(form.toString());
MvcResult mvcResult = this.getMockMvc().perform(MockMvcRequestBuilders.post(url)
.contentType(MediaType.APPLICATION_JSON_UTF8_VALUE)
.headers(this.getDefaultHttpHeaders())
.content(reqJson.toJSONString()))
.andDo(MockMvcResultHandlers.print())
.andExpect(MockMvcResultMatchers.status().isOk())
.andReturn();
String responseStr = mvcResult.getResponse().getContentAsString();
log.info(responseStr);
JSONObject result = JSONObject.parseObject(responseStr);
Assert.assertEquals(ECode.SUCCESS.code(), result.getIntValue("code"));
Assert.assertTrue(result.getJSONObject("data").containsKey("count"));
}
/**
* 查看收货地址详情
**/
@Test
@Rollback
public void d1_detail_success_test() throws Exception {
String url = "/goodsowner/receive/address/detail";
// 构造数据
ReceiveAddressForm form = new ReceiveAddressForm();
form.setId(3L);
JSONObject reqJson = JSONObject.parseObject(form.toString());
MvcResult mvcResult = this.getMockMvc().perform(MockMvcRequestBuilders.post(url)
.contentType(MediaType.APPLICATION_JSON_UTF8_VALUE)
.headers(this.getDefaultHttpHeaders())
.content(reqJson.toJSONString()))
.andDo(MockMvcResultHandlers.print())
.andExpect(MockMvcResultMatchers.status().isOk())
.andReturn();
String responseStr = mvcResult.getResponse().getContentAsString();
log.info(responseStr);
JSONObject result = JSONObject.parseObject(responseStr);
Assert.assertEquals(ECode.SUCCESS.code(), result.getIntValue("code"));
Assert.assertFalse(result.getJSONObject("data").isEmpty());
}
/**
* 查看收货地址详情:无效的ID
**/
@Test
@Rollback
public void d2_detail_wrong_id_failure_test() throws Exception {
String url = "/goodsowner/receive/address/detail";
// 构造数据
ReceiveAddressForm form = new ReceiveAddressForm();
form.setId(9999L);
JSONObject reqJson = JSONObject.parseObject(form.toString());
MvcResult mvcResult = this.getMockMvc().perform(MockMvcRequestBuilders.post(url)
.contentType(MediaType.APPLICATION_JSON_UTF8_VALUE)
.headers(this.getDefaultHttpHeaders())
.content(reqJson.toJSONString()))
.andDo(MockMvcResultHandlers.print())
.andExpect(MockMvcResultMatchers.status().isOk())
.andReturn();
String responseStr = mvcResult.getResponse().getContentAsString();
log.info(responseStr);
JSONObject result = JSONObject.parseObject(responseStr);
Assert.assertEquals(1001, result.getIntValue("code"));
}
/**
* 获取所有收货地址列表
**/
@Test
@Rollback
public void e1_all_success_test() throws Exception {
String url = "/goodsowner/receive/address/all";
// 构造数据
ReceiveAddressForm form = new ReceiveAddressForm();
form.setOwnerId(1L);
JSONObject reqJson = JSONObject.parseObject(form.toString());
MvcResult mvcResult = this.getMockMvc().perform(MockMvcRequestBuilders.post(url)
.contentType(MediaType.APPLICATION_JSON_UTF8_VALUE)
.headers(this.getDefaultHttpHeaders())
.content(reqJson.toJSONString()))
.andDo(MockMvcResultHandlers.print())
.andExpect(MockMvcResultMatchers.status().isOk())
.andReturn();
String responseStr = mvcResult.getResponse().getContentAsString();
log.info(responseStr);
JSONObject result = JSONObject.parseObject(responseStr);
Assert.assertEquals(ECode.SUCCESS.code(), result.getIntValue("code"));
Assert.assertFalse(result.getJSONArray("data").isEmpty());
}
/**
* 分页查询收货地址列表
**/
@Test
public void f1_list_success_test() throws Exception {
String url = "/goodsowner/receive/address/list";
// 构造数据
ReceiveAddressForm form = new ReceiveAddressForm();
form.setPageNum(1);
form.setPageSize(10);
JSONObject reqJson = JSONObject.parseObject(form.toString());
MvcResult mvcResult = this.getMockMvc().perform(MockMvcRequestBuilders.post(url)
.contentType(MediaType.APPLICATION_JSON_UTF8_VALUE)
.headers(this.getDefaultHttpHeaders())
.content(reqJson.toJSONString()))
.andDo(MockMvcResultHandlers.print())
.andExpect(MockMvcResultMatchers.status().isOk())
.andReturn();
String responseStr = mvcResult.getResponse().getContentAsString();
log.info(responseStr);
JSONObject result = JSONObject.parseObject(responseStr);
Assert.assertEquals(ECode.SUCCESS.code(), result.getIntValue("code"));
Assert.assertTrue(result.getJSONObject("data").containsKey("records"));
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment