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