更新保存用户地址

This commit is contained in:
yaooo 2023-08-07 14:08:51 +08:00
parent 5ec3f531ac
commit af784ee907
4 changed files with 29 additions and 10 deletions

View File

@ -15,6 +15,7 @@ namespace app\common\dao\user;
use app\common\dao\BaseDao; use app\common\dao\BaseDao;
use app\common\model\store\GeoVillage;
use app\common\model\user\UserAddress as model; use app\common\model\user\UserAddress as model;
class UserAddressDao extends BaseDao class UserAddressDao extends BaseDao
@ -30,6 +31,10 @@ class UserAddressDao extends BaseDao
return model::class; return model::class;
} }
public function villageExists($field, $value): bool
{
return ((GeoVillage::getDB())->where($field,$value)->count()) > 0;
}
public function userFieldExists($field, $value,$uid): bool public function userFieldExists($field, $value,$uid): bool
{ {

View File

@ -52,6 +52,17 @@ class UserAddressRepository extends BaseRepository
return $this->dao->userFieldExists($this->dao->getPk(),$id,$uid); return $this->dao->userFieldExists($this->dao->getPk(),$id,$uid);
} }
/**
* @param int $id
* @param int $uid
* @return bool
* @author Qinii
*/
public function villageExists($field, $value)
{
return $this->dao->villageExists($field, $value);
}
/** /**
* @param int $uid * @param int $uid
* @return bool * @return bool

View File

@ -126,19 +126,14 @@ class UserAddress extends BaseController
{ {
$data = $this->request->params(['address_id', 'real_name', 'phone', 'area', 'detail', 'post_code', 'is_default']); $data = $this->request->params(['address_id', 'real_name', 'phone', 'area', 'detail', 'post_code', 'is_default']);
$validate->check($data); $validate->check($data);
[$province, $city, $district, $street] = ((array)$data['area']) + [null, null, null, null]; [$province, $city, $district, $street, $village, $brigade] = ((array)$data['area']) + [null, null, null, null, null, null];
$last = $street ?? $district ?? $city ?? $province; $last = $village ?? $street ?? $district ?? $city ?? $province;
if (!$last) { if (!$last) {
throw new ValidateException('请选择正确的收货地址'); throw new ValidateException('请选择正确的收货地址');
} }
$make = app()->make(CityAreaRepository::class); if (!$this->repository->villageExists('village_code', $last['code'])) {
if (!$make->existsWhere(['id' => $last['id'], 'snum' => 0])) { throw new ValidateException('地址信息错误');
throw new ValidateException('请手动选择所在地区');
} }
if ($make->search([])->where('id', 'in', array_column($data['area'], 'id'))->count() !== count($data['area'])) {
throw new ValidateException('请选择正确的收货地址');
}
$data['province'] = $province['name']; $data['province'] = $province['name'];
$data['province_id'] = $province['id']; $data['province_id'] = $province['id'];
$data['city'] = $city['name']; $data['city'] = $city['name'];
@ -149,6 +144,14 @@ class UserAddress extends BaseController
$data['street'] = $street['name']; $data['street'] = $street['name'];
$data['street_id'] = $street['id']; $data['street_id'] = $street['id'];
} }
if (isset($village)) {
$data['village'] = $village['name'];
$data['village_id'] = $village['id'];
}
if (isset($brigade)) {
$data['brigade'] = $brigade['name'];
$data['brigade_id'] = $brigade['id'];
}
unset($data['area']); unset($data['area']);
return $data; return $data;
} }