Administrator
2026-06-12 07b964209ad7ff91def2ed1962c5a02441710d86
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallAddressInfoServiceImpl.java
@@ -19,6 +19,7 @@
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -45,98 +46,57 @@
    private MallAddressWorldMapper mallAddressWorldMapper;
    @Override
    public List<AddressInfoVo> findAddressInfoList() {
        Long memberId = LoginUserUtil.getLoginUser().getId();
        List<MallAddressInfo> addressInfos = this.baseMapper.selectAddressInfoListByMemberId(memberId);
    public FebsResponse findAddressInfo() {
        return MallAddressInfoConversion.INSTANCE.entityListToVos(addressInfos);
        Long id = LoginUserUtil.getLoginUser().getId();
        AddressInfoVo addressInfoVo = new AddressInfoVo();
        List<MallAddressInfo> mallAddressInfos = this.baseMapper.selectList(
                Wrappers.lambdaQuery(MallAddressInfo.class)
                        .eq(MallAddressInfo::getMemberId, id)
        );
        if (CollUtil.isNotEmpty(mallAddressInfos)){
            MallAddressInfo mallAddressInfo = mallAddressInfos.get(0);
            addressInfoVo.setId(mallAddressInfo.getId());
            addressInfoVo.setName(mallAddressInfo.getName());
            addressInfoVo.setFirstName(mallAddressInfo.getFristName());
            addressInfoVo.setAddress(mallAddressInfo.getAddress());
            addressInfoVo.setArea(mallAddressInfo.getArea());
            addressInfoVo.setPostcode(mallAddressInfo.getPostcode());
            addressInfoVo.setPhone(mallAddressInfo.getPhone());
            addressInfoVo.setCity(mallAddressInfo.getCity());
            addressInfoVo.setProvince(mallAddressInfo.getProvince());
            addressInfoVo.setCountry(mallAddressInfo.getCountry());
    }
        return new FebsResponse().success().data(addressInfoVo);
    }
    @Override
    public FebsResponse addAddress(AddressInfoDto addressInfoDto) {
        MallAddressInfo addressInfo = MallAddressInfoConversion.INSTANCE.dtoToEntity(addressInfoDto);
        MallMember member = LoginUserUtil.getLoginUser();
        Long memberId = member.getId();
        List<MallAddressInfo> existAddress = this.baseMapper.selectAddressInfoListByMemberId(memberId);
        if (CollUtil.isEmpty(existAddress)) {
            addressInfo.setIsDefault(MallAddressInfo.IS_DEFAULT_Y);
        } else {
            if (MallAddressInfo.IS_DEFAULT_Y.equals(addressInfoDto.getIsDefault())) {
                this.baseMapper.updateIsDefault(MallAddressInfo.IS_DEFAULT_N, memberId, null);
            }
        }
        addressInfo.setMemberId(memberId);
        addressInfo.setCreatedBy(member.getPhone());
        addressInfo.setUpdatedBy(member.getPhone());
        this.baseMapper.insert(addressInfo);
        return new FebsResponse().success().data(addressInfo.getId());
    }
    @Override
    public void modifyAddress(AddressInfoDto addressInfoDto) {
        MallAddressInfo existAddress = this.baseMapper.selectById(addressInfoDto.getId());
        if (existAddress == null) {
            throw new FebsException("地址不存在");
        }
    public FebsResponse modifyAddress(AddressInfoDto addressInfoDto) {
        Long memberId = LoginUserUtil.getLoginUser().getId();
        MallAddressInfo addressInfo = MallAddressInfoConversion.INSTANCE.dtoToEntity(addressInfoDto);
        if (MallAddressInfo.IS_DEFAULT_Y.equals(addressInfoDto.getIsDefault())) {
            this.baseMapper.updateIsDefault(MallAddressInfo.IS_DEFAULT_N, memberId, null);
        this.baseMapper.update(
                null,
                Wrappers.lambdaUpdate(MallAddressInfo.class)
                        .set(MallAddressInfo::getName, addressInfoDto.getName())
                        .set(MallAddressInfo::getFristName, addressInfoDto.getFirstName())
                        .set(MallAddressInfo::getAddress, addressInfoDto.getAddress())
                        .set(MallAddressInfo::getArea, addressInfoDto.getArea())
                        .set(MallAddressInfo::getPostcode, addressInfoDto.getPostcode())
                        .set(MallAddressInfo::getPhone, addressInfoDto.getPhone())
                        .set(MallAddressInfo::getCity, addressInfoDto.getCity())
                        .set(MallAddressInfo::getProvince, addressInfoDto.getProvince())
                        .set(MallAddressInfo::getCountry, addressInfoDto.getCountry())
                        .eq(MallAddressInfo::getMemberId, memberId)
        );
        return new FebsResponse().success();
        }
        addressInfo.setUpdatedTime(new Date());
        this.baseMapper.updateById(addressInfo);
    }
    @Override
    public void setDefaultAddress(Long id) {
        MallAddressInfo addressInfo = this.baseMapper.selectById(id);
        if (addressInfo == null) {
            throw new FebsException("地址不存在");
        }
        MallMember member = LoginUserUtil.getLoginUser();
        this.baseMapper.updateIsDefault(MallAddressInfo.IS_DEFAULT_N, member.getId(), null);
        this.baseMapper.updateIsDefault(MallAddressInfo.IS_DEFAULT_Y, member.getId(), id);
    }
    static final OkHttpClient HTTP_CLIENT = new OkHttpClient().newBuilder().build();
    @Override
    public FebsResponse identifyAddress(ApiIdentifyAddressDto identifyAddressDto) {
        MediaType mediaType = MediaType.parse("application/json");
        RequestBody body = RequestBody.create(mediaType, JSONUtil.toJsonStr(identifyAddressDto));
        Request request = new Request.Builder()
                .url("https://aip.baidubce.com/rpc/2.0/nlp/v1/address?access_token=" + redisUtils.get(WechatConfigure.BAIDU_ACCESS_TOKEN_REDIS_KEY).toString())
                .method("POST", body)
                .addHeader("Content-Type", "application/json")
                .addHeader("Accept", "application/json")
                .build();
        String data = "";
        try {
            Response response = HTTP_CLIENT.newCall(request).execute();
            data = response.body().string();
            if (data.contains("error_code")) {
                JSONObject jsonObject = JSONUtil.parseObj(data);
                return new FebsResponse().fail().message("地址识别错误编码:"+jsonObject.get("error_code").toString());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return new FebsResponse().success().data(data);
    }
    @Override
    public FebsResponse getProvince(Long id) {
        LambdaQueryWrapper<MallAddressWorld> addressWorldLambdaQueryWrapper = new LambdaQueryWrapper<>();
        addressWorldLambdaQueryWrapper.eq(MallAddressWorld::getPid, id)
                .orderByDesc(MallAddressWorld::getId);
        List<MallAddressWorld> mallAddressWorlds = mallAddressWorldMapper.selectList(addressWorldLambdaQueryWrapper);
        return new FebsResponse().success().data(mallAddressWorlds);
    }
}