---
# System prepended metadata

title: '**顧客中心**'
tags: [java]

---

{%hackmd @themes/orangeheart %}

# **顧客中心**
![](https://i.imgur.com/zAYs1U4.png)

### <font color="3E54AC"> **使用到的技術**
:computer:	Spring Validation</font>

顧客中心分成3大區塊
1. 用戶詳情
2. 地址詳情
3. 訂單詳情

## 用戶詳情
>這個區塊展示用戶詳細資料，可以透過<font color="95BDFF">修改詳情</font>按鈕來修改

![](https://i.imgur.com/QTjDKmU.png)
>資料在修改的時候透過==Spring Validation==來進行資料驗證
>透過不同註解來確保資料正確性

![](https://i.imgur.com/LZniRbL.png)

## 地址詳情
>這個區塊展示用戶預先設定的收件地址，最多可以儲存五組，可以透過<font color="95BDFF">新增地址</font>進行新增，透過<font color="5E6F64">齒輪</font>與<font color="FF0075">垃圾桶</font>進行修改與刪除。

:+1: 如果要將**非**預設的地址設定成預設的時候，

```java
    @Override
    public void updateAddress(UserAddressDTO userAddressDTO) {
        log.debug("開始修改用戶地址");
        //檢查要修改的地址是否存在
        int addressCount = userAddressMapper.countAddressByDetail(userAddressDTO.getId());
        if(addressCount ==0){
            throw new ServiceException(ServiceCode.ERR_BAD_REQUEST,"地址不存在!");
        }
        //判斷輸入的地址是否是預設
        if(userAddressDTO.getIsDefault().equals(ConstUtils.IS_DEFAULT)){
            //是預設，先將該使用者的其他保存地址的isDefault設定為0
            //獲取用戶id
            Long userId = ConstUtils.getUserId();
            //是預設，先將該使用者的其他保存地址的isDefault設定為0並避開當前修改id
            userAddressMapper.updateAddressDefaultByUserId(userId,userAddressDTO.getId());
            //修改用戶預設地址
            updateUserDefault(userId,userAddressDTO.getId());
        }
        //開始修改地址
        int rows = userAddressMapper.updateUserAddress(userAddressDTO);
        if (rows !=1){
            throw new ServiceException(ServiceCode.ERR_UPDATE,"伺服器忙碌請稍候!");
        }
    }
```

## 訂單詳情
>這邊負責展示該用戶所有的訂單，透過<font color="5E6F64">訂單詳情</font>按鈕可以檢視該筆訂單的詳細資料。
###### tags: `java`