Commit a13d5e10 authored by huangcb's avatar huangcb

新增货主接口:新增常跑线路

parent b1ef2de4
......@@ -78,4 +78,13 @@ public class ErrorMessageComponent {
@Value("${error-message.goodsowner.receive-address.detail.1001}")
private String goodsOwnerReceiveAddressDetail1001;
@Value("${error-message.goodsowner.regularly-route.add.1001}")
private String goodsOwnerRegularlyRouteAdd1001;
@Value("${error-message.goodsowner.regularly-route.add.1002}")
private String goodsOwnerRegularlyRouteAdd1002;
@Value("${error-message.goodsowner.regularly-route.add.1003}")
private String goodsOwnerRegularlyRouteAdd1003;
@Value("${error-message.goodsowner.regularly-route.add.1004}")
private String goodsOwnerRegularlyRouteAdd1004;
}
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.ValidatorInsert;
import com.esv.freight.customer.module.goodsowner.form.RegularlyRouteForm;
import com.esv.freight.customer.module.goodsowner.service.RegularlyRouteService;
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.RegularlyRouteController
* @author: 黄朝斌
* @email: huangchaobin@esvtek.com
* @createTime: 2020/04/22 13:20
* @version:1.0
*/
@Slf4j
@RestController
@RequestMapping("/goodsowner/regularly/route")
@Validated
public class RegularlyRouteController {
private RegularlyRouteService regularlyRouteService;
@Autowired
public RegularlyRouteController(RegularlyRouteService regularlyRouteService) {
this.regularlyRouteService = regularlyRouteService;
}
@PostMapping("/add")
public EResponse add(@RequestBody @Validated(ValidatorInsert.class) RegularlyRouteForm form) throws EException {
Long id = regularlyRouteService.add(form);
JSONObject data = new JSONObject();
data.put("id", id);
return EResponse.ok(data);
}
}
package com.esv.freight.customer.module.goodsowner.form;
import com.esv.freight.customer.common.validator.groups.ValidatorInsert;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* @description:
* @project: freight-customer-service
* @name: com.esv.freight.customer.module.goodsowner.form.RegularlyRouteForm
* @author: 黄朝斌
* @email: huangchaobin@esvtek.com
* @createTime: 2020/04/17 16:11
* @version:1.0
*/
@Data
public class RegularlyRouteForm {
// @NotNull(message = "参数id不能为空")
private Long id;
@Length(max = 50, message = "参数routeName长度不合法", groups = {ValidatorInsert.class})
@NotBlank(message = "参数routeName不能为空", groups = {ValidatorInsert.class})
private String routeName;
@NotNull(message = "参数ownerId不能为空", groups = {ValidatorInsert.class})
private Long ownerId;
@NotNull(message = "参数deliveryId不能为空", groups = {ValidatorInsert.class})
private Long deliveryId;
@NotNull(message = "参数receiveId不能为空", groups = {ValidatorInsert.class})
private Long receiveId;
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
}
}
......@@ -2,6 +2,9 @@ package com.esv.freight.customer.module.goodsowner.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.esv.freight.customer.module.goodsowner.entity.RegularlyRouteEntity;
import com.esv.freight.customer.module.goodsowner.form.RegularlyRouteForm;
import java.util.List;
/**
* 货主常跑线路表
......@@ -12,5 +15,23 @@ import com.esv.freight.customer.module.goodsowner.entity.RegularlyRouteEntity;
*/
public interface RegularlyRouteService extends IService<RegularlyRouteEntity> {
/**
* description 根据线路名称查询货主线路列表
* param [form]
* return java.util.List<com.esv.freight.customer.module.goodsowner.entity.RegularlyRouteEntity>
* author Administrator
* createTime 2020/04/22 13:32
**/
List<RegularlyRouteEntity> getOwnerRouteByName(RegularlyRouteForm form);
/**
* description 新增常跑线路
* param [form]
* return java.lang.Long
* author Administrator
* createTime 2020/04/22 13:36
**/
Long add(RegularlyRouteForm form);
}
......@@ -69,6 +69,7 @@ public class DeliveryAddressServiceImpl extends ServiceImpl<DeliveryAddressDao,
DeliveryAddressEntity addressEntity = new DeliveryAddressEntity();
BeanUtils.copyProperties(form, addressEntity);
addressEntity.setAddressNumber(addressNumber);
addressEntity.setId(null);
if (StringUtils.isNotBlank(form.getLon())) {
addressEntity.setLon(new BigDecimal(form.getLon()));
}
......
......@@ -68,6 +68,7 @@ public class ReceiveAddressServiceImpl extends ServiceImpl<ReceiveAddressDao, Re
// 3.新增地址
ReceiveAddressEntity addressEntity = new ReceiveAddressEntity();
BeanUtils.copyProperties(form, addressEntity);
addressEntity.setId(null);
addressEntity.setAddressNumber(addressNumber);
if (StringUtils.isNotBlank(form.getLon())) {
addressEntity.setLon(new BigDecimal(form.getLon()));
......
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.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.feign.FeignBaseService;
import com.esv.freight.customer.module.goodsowner.dao.RegularlyRouteDao;
import com.esv.freight.customer.module.goodsowner.entity.RegularlyRouteEntity;
import com.esv.freight.customer.module.goodsowner.entity.*;
import com.esv.freight.customer.module.goodsowner.form.RegularlyRouteForm;
import com.esv.freight.customer.module.goodsowner.service.AccountService;
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.service.RegularlyRouteService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service("regularlyRouteService")
public class RegularlyRouteServiceImpl extends ServiceImpl<RegularlyRouteDao, RegularlyRouteEntity> implements RegularlyRouteService {
private ErrorMessageComponent errorMessageComponent;
private FeignBaseService feignBaseService;
private AccountService accountService;
private DeliveryAddressService deliveryAddressService;
private ReceiveAddressService receiveAddressService;
@Autowired
public RegularlyRouteServiceImpl(ErrorMessageComponent errorMessageComponent, FeignBaseService feignBaseService,
AccountService accountService, DeliveryAddressService deliveryAddressService, ReceiveAddressService receiveAddressService) {
this.errorMessageComponent = errorMessageComponent;
this.feignBaseService = feignBaseService;
this.accountService = accountService;
this.deliveryAddressService = deliveryAddressService;
this.receiveAddressService = receiveAddressService;
}
@Override
public Long add(RegularlyRouteForm form) {
// 1.校验线路名称是否重复
List<RegularlyRouteEntity> routeEntityList = this.getOwnerRouteByName(form);
if (0 < routeEntityList.size()) {
throw new EException(1001, errorMessageComponent.getGoodsOwnerRegularlyRouteAdd1001());
}
// 2.校验获取ID是否有效
AccountEntity accountEntity = this.accountService.getById(form.getOwnerId());
if (null == accountEntity) {
throw new EException(1002, errorMessageComponent.getGoodsOwnerRegularlyRouteAdd1002());
}
// 3.校验发货地址ID是否有效
DeliveryAddressEntity deliveryAddressEntity = this.deliveryAddressService.getById(form.getDeliveryId());
if (null == deliveryAddressEntity) {
throw new EException(1003, errorMessageComponent.getGoodsOwnerRegularlyRouteAdd1003());
}
// 4.校验收货地址ID是否有效
ReceiveAddressEntity receiveAddressEntity = this.receiveAddressService.getById(form.getReceiveId());
if (null == receiveAddressEntity) {
throw new EException(1004, errorMessageComponent.getGoodsOwnerRegularlyRouteAdd1004());
}
// 5.获取路线编码
JSONObject batchIdReqJson = new JSONObject();
batchIdReqJson.put("prefix", "LX");
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 routeNumber = batchIdResJson.getString("batchId");
// 6.新增
RegularlyRouteEntity routeEntity = new RegularlyRouteEntity();
BeanUtils.copyProperties(form, routeEntity);
routeEntity.setId(null);
routeEntity.setRouteNumber(routeNumber);
this.baseMapper.insert(routeEntity);
return routeEntity.getId();
}
@Override
public List<RegularlyRouteEntity> getOwnerRouteByName(RegularlyRouteForm form) {
QueryWrapper<RegularlyRouteEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("owner_id", form.getOwnerId());
queryWrapper.eq("route_name", form.getRouteName());
return this.baseMapper.selectList(queryWrapper);
}
}
\ No newline at end of file
......@@ -86,4 +86,10 @@ error-message:
1001: 无效的地址ID
1002: 重复的地址名称
detail:
1001: 无效的地址ID
\ No newline at end of file
1001: 无效的地址ID
regularly-route:
add:
1001: 重复的常跑线路名称
1002: 无效的货主ID
1003: 无效的发货地址ID
1004: 无效的收货地址ID
\ No newline at end of file
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.RegularlyRouteForm;
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.DeliveryAddressControllerTest
* @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 RegularlyRouteControllerTest extends BaseTestController {
/**
* 新增常跑线路
**/
@Test
public void a1_add_success_test() throws Exception {
String url = "/goodsowner/regularly/route/add";
// 构造数据
RegularlyRouteForm form = new RegularlyRouteForm();
form.setOwnerId(1L);
form.setRouteName("沈阳-大连线路");
form.setDeliveryId(7L);
form.setReceiveId(5L);
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_failure_repeat_name_test() throws Exception {
String url = "/goodsowner/regularly/route/add";
// 构造数据
RegularlyRouteForm form = new RegularlyRouteForm();
form.setOwnerId(1L);
form.setRouteName("沈阳-大连线路");
form.setDeliveryId(7L);
form.setReceiveId(5L);
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"));
}
/**
* 新增常跑线路:无效的货主ID
**/
@Test
@Rollback
public void a3_add_failure_repeat_name_test() throws Exception {
String url = "/goodsowner/regularly/route/add";
// 构造数据
RegularlyRouteForm form = new RegularlyRouteForm();
form.setOwnerId(99999L);
form.setRouteName("沈阳-大连线路111");
form.setDeliveryId(7L);
form.setReceiveId(5L);
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"));
}
/**
* 新增常跑线路:无效的发货地址ID
**/
@Test
@Rollback
public void a4_add_failure_wrong_delivery_id_test() throws Exception {
String url = "/goodsowner/regularly/route/add";
// 构造数据
RegularlyRouteForm form = new RegularlyRouteForm();
form.setOwnerId(1L);
form.setRouteName("沈阳-大连线路111");
form.setDeliveryId(99999L);
form.setReceiveId(5L);
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(1003, result.getIntValue("code"));
}
/**
* 新增常跑线路:无效的收货地址ID
**/
@Test
@Rollback
public void a5_add_failure_wrong_receive_id_test() throws Exception {
String url = "/goodsowner/regularly/route/add";
// 构造数据
RegularlyRouteForm form = new RegularlyRouteForm();
form.setOwnerId(1L);
form.setRouteName("沈阳-大连线路111");
form.setDeliveryId(7L);
form.setReceiveId(99999L);
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(1004, result.getIntValue("code"));
}
}
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