huliguo
10 天以前 e3a2245265516fef78b4737d6fffc939e7c5e0af
pt-errand/src/main/java/com/ruoyi/errand/service/impl/AddressBookServiceImpl.java
@@ -9,8 +9,10 @@
import com.ruoyi.errand.domain.AddressBook;
import com.ruoyi.errand.domain.AppUser;
import com.ruoyi.errand.domain.Community;
import com.ruoyi.errand.domain.Region;
import com.ruoyi.errand.mapper.AddressBookMapper;
import com.ruoyi.errand.mapper.CommunityMapper;
import com.ruoyi.errand.mapper.RegionMapper;
import com.ruoyi.errand.object.dto.app.AddAddressBookDTO;
import com.ruoyi.errand.object.dto.app.UpdateAddressBookDTO;
import com.ruoyi.errand.object.vo.app.AddressBookByCommunityIdVO;
@@ -27,6 +29,8 @@
public class AddressBookServiceImpl extends ServiceImpl<AddressBookMapper, AddressBook> implements AddressBookService {
    @Resource
    private CommunityMapper communityMapper;
    @Resource
    private RegionMapper regionMapper;
    @Override
    public List<AddressBookByCommunityIdVO> addressBookByCommunityId(Integer communityId) {
@@ -42,38 +46,64 @@
    @Override
    public List<AddressBookListVO> addressBookList() {
        AppUser appuser = (AppUser) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
        return this.getBaseMapper().addressBookList(appuser.getId());
        List<AddressBookListVO> voList = this.getBaseMapper().addressBookList(appuser.getId());
        voList.forEach(vo->{
            String regionFullName = getRegionFullName(vo.getRegionId());
            vo.setRegionName(regionFullName);
        });
        return voList;
    }
    /**
     * 根据区ID查询完整的省市区名称
     */
    public String getRegionFullName(Integer districtId) {
        Region district = regionMapper.selectById(districtId);
        if (district == null) {
            return "";
        }
        Region city = regionMapper.selectById(district.getParentId());
        if (city == null) {
            return district.getName();
        }
        Region province = regionMapper.selectById(city.getParentId());
        if (province == null) {
            return city.getName()  + district.getName();
        }
        return province.getName()  + city.getName()  + district.getName();
    }
    @Override
    public void setDefaultAddress(Integer id) {
        AppUser appuser = (AppUser) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
        //查询这个默认地址
        AddressBook addressBook = this.getById(id);
        if (null==addressBook||addressBook.getDel_flag().equals(DelFlagConstant.DELETE)) {
        if (null==addressBook||addressBook.getDelFlag().equals(DelFlagConstant.DELETE)) {
            throw new ServiceException("该地址不存在");
        }
        //查看原本小区内是否有默认地址
        List<AddressBook> addressBooks = this.getBaseMapper().selectList(new LambdaUpdateWrapper<AddressBook>()
                .eq(AddressBook::getCommunityId, addressBook.getCommunityId())
                .eq(AddressBook::getApp_user_id, appuser.getId())
                .eq(AddressBook::getDel_flag, DelFlagConstant.UNDELETE)
                .eq(AddressBook::getIs_default, IsDefaultConstant.TRUE)
                .eq(AddressBook::getAppUserId, appuser.getId())
                .eq(AddressBook::getDelFlag, DelFlagConstant.UNDELETE)
                .eq(AddressBook::getIsDefault, IsDefaultConstant.TRUE)
        );
        //将原本地址修改掉
        addressBooks.forEach(x->{
            x.setIs_default(IsDefaultConstant.FALSE);
            x.setUpdate_time(LocalDateTime.now());
            x.setIsDefault(IsDefaultConstant.FALSE);
            x.setUpdateTime(LocalDateTime.now());
            this.getBaseMapper().updateById(x);}
        );
        //将新地址设置为默认地址
        addressBook.setIs_default(IsDefaultConstant.TRUE);
        addressBook.setUpdate_time(LocalDateTime.now());
        addressBook.setIsDefault(IsDefaultConstant.TRUE);
        addressBook.setUpdateTime(LocalDateTime.now());
        this.getBaseMapper().updateById(addressBook);
    }
    @Override
    public void add(AddAddressBookDTO addAddressBookDTO) {
    public Integer add(AddAddressBookDTO addAddressBookDTO) {
        AppUser appuser = (AppUser) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
        //判断小区是否存在
        Community community = communityMapper.selectById(addAddressBookDTO.getCommunityId());
@@ -82,10 +112,11 @@
        }
        AddressBook addressBook = new AddressBook();
        BeanUtils.copyProperties(addAddressBookDTO,addressBook);
        addressBook.setIs_default(IsDefaultConstant.FALSE);
        addressBook.setCreate_time(LocalDateTime.now());
        addressBook.setApp_user_id(appuser.getId());
        addressBook.setIsDefault(IsDefaultConstant.FALSE);
        addressBook.setCreateTime(LocalDateTime.now());
        addressBook.setAppUserId(appuser.getId());
        this.save(addressBook);
        return addressBook.getId();
    }
    @Override
@@ -98,15 +129,15 @@
        }
        //判断地址是否存在
        AddressBook addressBook = this.getById(updateAddressBookDTO.getId());
        if (null==addressBook||addressBook.getDel_flag().equals(DelFlagConstant.DELETE)) {
        if (null==addressBook||addressBook.getDelFlag().equals(DelFlagConstant.DELETE)) {
            throw new ServiceException("地址不存在");
        }
        //判断用户是否同一个
        if (!appuser.getId().equals(addressBook.getApp_user_id())) {
        if (!appuser.getId().equals(addressBook.getAppUserId())) {
            throw new ServiceException("该地址不属于您");
        }
        BeanUtils.copyProperties(updateAddressBookDTO,addressBook);
        addressBook.setUpdate_time(LocalDateTime.now());
        addressBook.setUpdateTime(LocalDateTime.now());
        this.updateById(addressBook);
    }
@@ -116,15 +147,15 @@
        AppUser appuser = (AppUser) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
        //查看该地址是否存在
        AddressBook addressBook = this.getById(id);
        if (null==addressBook||addressBook.getDel_flag().equals(DelFlagConstant.DELETE)) {
        if (null==addressBook||addressBook.getDelFlag().equals(DelFlagConstant.DELETE)) {
            throw new ServiceException("该地址不存在");
        }
        //判断用户是否同一个
        if (!appuser.getId().equals(addressBook.getApp_user_id())) {
        if (!appuser.getId().equals(addressBook.getAppUserId())) {
            throw new ServiceException("该地址不属于您");
        }
        addressBook.setDel_flag(DelFlagConstant.DELETE);
        addressBook.setDelFlag(DelFlagConstant.DELETE);
        this.updateById(addressBook);
    }
}