parent
aa309d80bf
commit
b3495b88e9
@ -0,0 +1,74 @@
|
|||||||
|
package cc.yunxi.controller;
|
||||||
|
|
||||||
|
|
||||||
|
import cc.yunxi.common.domain.CommonResult;
|
||||||
|
import cc.yunxi.common.utils.BeanUtils;
|
||||||
|
import cc.yunxi.domain.dto.LocationDTO;
|
||||||
|
import cc.yunxi.domain.dto.UserDTO;
|
||||||
|
import cc.yunxi.domain.po.Client;
|
||||||
|
import cc.yunxi.domain.po.ClientAddress;
|
||||||
|
import cc.yunxi.domain.vo.client.ClientRespVO;
|
||||||
|
import cc.yunxi.domain.vo.client.ClientUpdateVO;
|
||||||
|
import cc.yunxi.domain.vo.clientaddress.ClientAddressReqVO;
|
||||||
|
import cc.yunxi.service.IClientAddressService;
|
||||||
|
import cc.yunxi.utils.UserContext;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 散户地址信息 前端控制器
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author ccongli
|
||||||
|
* @since 2024-03-14 10:26:03
|
||||||
|
*/
|
||||||
|
@Api(tags = "散户地址接口")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/client-address")
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class ClientAddressController {
|
||||||
|
|
||||||
|
private final IClientAddressService addressService;
|
||||||
|
|
||||||
|
@ApiOperation("散户地址列表")
|
||||||
|
@GetMapping("/list")
|
||||||
|
public CommonResult<List<ClientAddressReqVO>> queryClientByPage(@RequestParam("clientId") String clientId) {
|
||||||
|
List<ClientAddress> clientAddresses = addressService.queryAddressList(clientId);
|
||||||
|
List<ClientAddressReqVO> addressRespVOList = BeanUtils.copyList(clientAddresses, ClientAddressReqVO.class, (s, t) -> {
|
||||||
|
t.setLocationDTO(new LocationDTO(s.getLongitude(), s.getLatitude()));
|
||||||
|
});
|
||||||
|
return CommonResult.success(addressRespVOList);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ApiOperation("添加地址")
|
||||||
|
@GetMapping("/info")
|
||||||
|
public CommonResult<String> getClientInfo(@RequestBody ClientAddressReqVO reqVO) {
|
||||||
|
UserDTO userDTO = UserContext.getUser();
|
||||||
|
reqVO.setClientId(userDTO.getId());
|
||||||
|
String addressId = addressService.addAddress(reqVO);
|
||||||
|
return CommonResult.success(addressId);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ApiOperation("更新地址")
|
||||||
|
@PostMapping("/update")
|
||||||
|
public CommonResult<Boolean> updateClientInfo(@RequestBody ClientAddressReqVO reqVO) {
|
||||||
|
addressService.updateAddress(reqVO);
|
||||||
|
return CommonResult.success(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ApiOperation("删除地址")
|
||||||
|
@PostMapping("/remove")
|
||||||
|
public CommonResult<Boolean> updateClientInfo(@RequestParam("addressId") String addressId) {
|
||||||
|
addressService.deleteAddress(addressId);
|
||||||
|
return CommonResult.success(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
package cc.yunxi.mapper;
|
||||||
|
|
||||||
|
import cc.yunxi.domain.po.ClientAddress;
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 散户地址信息 Mapper 接口
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author ccongli
|
||||||
|
* @since 2024-03-14 10:26:03
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface ClientAddressMapper extends BaseMapper<ClientAddress> {
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,56 @@
|
|||||||
|
package cc.yunxi.service;
|
||||||
|
|
||||||
|
import cc.yunxi.domain.po.ClientAddress;
|
||||||
|
import cc.yunxi.domain.vo.clientaddress.ClientAddressReqVO;
|
||||||
|
import cc.yunxi.domain.vo.clientaddress.ClientAddressRespVO;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
|
||||||
|
import javax.validation.Valid;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 散户地址信息 服务类
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author ccongli
|
||||||
|
* @since 2024-03-14 10:26:03
|
||||||
|
*/
|
||||||
|
public interface IClientAddressService extends IService<ClientAddress> {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取地址列表
|
||||||
|
* @param clientId
|
||||||
|
* @return clientId
|
||||||
|
*/
|
||||||
|
List<ClientAddress> queryAddressList(String clientId);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 地址详情
|
||||||
|
* @param addressId
|
||||||
|
* @return ClientAddress
|
||||||
|
*/
|
||||||
|
ClientAddress getAddressInfo(String addressId);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加地址
|
||||||
|
*/
|
||||||
|
String addAddress(@Valid ClientAddressReqVO addressCreateVO);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新地址
|
||||||
|
*/
|
||||||
|
void updateAddress(@Valid ClientAddressReqVO addressUpdateVO);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除地址
|
||||||
|
*/
|
||||||
|
void deleteAddress(String addressId);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,101 @@
|
|||||||
|
package cc.yunxi.service.impl;
|
||||||
|
|
||||||
|
import cc.yunxi.common.domain.LambdaQueryWrapperX;
|
||||||
|
import cc.yunxi.common.exception.BizIllegalException;
|
||||||
|
import cc.yunxi.common.utils.BeanUtils;
|
||||||
|
import cc.yunxi.domain.po.Client;
|
||||||
|
import cc.yunxi.domain.po.ClientAddress;
|
||||||
|
import cc.yunxi.domain.vo.clientaddress.ClientAddressReqVO;
|
||||||
|
import cc.yunxi.domain.vo.clientaddress.ClientAddressRespVO;
|
||||||
|
import cc.yunxi.mapper.ClientAddressMapper;
|
||||||
|
import cc.yunxi.service.IClientAddressService;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
|
||||||
|
import javax.validation.Valid;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 散户地址信息 服务实现类
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author ccongli
|
||||||
|
* @since 2024-03-14 10:26:03
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@Validated
|
||||||
|
public class ClientAddressServiceImpl extends ServiceImpl<ClientAddressMapper, ClientAddress> implements IClientAddressService {
|
||||||
|
|
||||||
|
|
||||||
|
private static final Integer LIMIT = 3; // 限制条数
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<ClientAddress> queryAddressList(String clientId) {
|
||||||
|
LambdaQueryWrapperX<ClientAddress> wrapperX = new LambdaQueryWrapperX<>();
|
||||||
|
wrapperX.eq(ClientAddress::getClientId, clientId).orderByDesc(ClientAddress::getIsDefault);
|
||||||
|
return list(wrapperX);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ClientAddress getAddressInfo(String addressId) {
|
||||||
|
if (StrUtil.isEmpty(addressId)) {
|
||||||
|
throw new BizIllegalException("请求参数缺失");
|
||||||
|
}
|
||||||
|
ClientAddress clientAddress = this.getById(addressId);
|
||||||
|
if (clientAddress == null) {
|
||||||
|
throw new BizIllegalException("散户地址不存在");
|
||||||
|
}
|
||||||
|
return clientAddress;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public String addAddress(ClientAddressReqVO addressCreateVO) {
|
||||||
|
ClientAddress clientAddress = BeanUtils.copyBean(addressCreateVO, ClientAddress.class);
|
||||||
|
if (addressCreateVO.getIsDefault() == 1) { // 添加为默认地址
|
||||||
|
this.changeDefaultAddress(addressCreateVO.getClientId());
|
||||||
|
}
|
||||||
|
clientAddress.setCreatorTime(LocalDateTime.now());
|
||||||
|
this.save(clientAddress);
|
||||||
|
return clientAddress.getId();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public void updateAddress(@Valid ClientAddressReqVO addressUpdateVO) {
|
||||||
|
ClientAddress addressInfo = getAddressInfo(addressUpdateVO.getId());
|
||||||
|
if (addressUpdateVO.getIsDefault() == 1) { // 修改为默认地址
|
||||||
|
this.changeDefaultAddress(addressInfo.getClientId());
|
||||||
|
}
|
||||||
|
ClientAddress clientAddress = BeanUtils.copyBean(addressUpdateVO, ClientAddress.class);
|
||||||
|
clientAddress.setUpdateTime(LocalDateTime.now());
|
||||||
|
this.updateById(clientAddress);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public void deleteAddress(String addressId) {
|
||||||
|
ClientAddress addressInfo = getAddressInfo(addressId);
|
||||||
|
if (addressInfo.getIsDefault() == 1) {
|
||||||
|
throw new BizIllegalException("默认地址不能删除");
|
||||||
|
}
|
||||||
|
this.removeById(addressId);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 动态切换默认地址
|
||||||
|
private void changeDefaultAddress(String clientId) {
|
||||||
|
List<ClientAddress> clientAddresses = queryAddressList(clientId);
|
||||||
|
LocalDateTime now = LocalDateTime.now();
|
||||||
|
clientAddresses.forEach(v -> {
|
||||||
|
v.setIsDefault(0);
|
||||||
|
v.setUpdateTime(now);
|
||||||
|
});
|
||||||
|
this.updateBatchById(clientAddresses);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,5 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="cc.yunxi.mapper.ClientAddressMapper">
|
||||||
|
|
||||||
|
</mapper>
|
Loading…
Reference in new issue