更新保存用户地址

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

View File

@ -38,7 +38,7 @@ class CityAreaRepository extends BaseRepository
{
return $this->searchGeo($where)->select();
}
public function getBrigade($where)
{
return $this->searchBrigade($where)->select();

View File

@ -52,6 +52,17 @@ class UserAddressRepository extends BaseRepository
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
* @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']);
$validate->check($data);
[$province, $city, $district, $street] = ((array)$data['area']) + [null, null, null, null];
$last = $street ?? $district ?? $city ?? $province;
[$province, $city, $district, $street, $village, $brigade] = ((array)$data['area']) + [null, null, null, null, null, null];
$last = $village ?? $street ?? $district ?? $city ?? $province;
if (!$last) {
throw new ValidateException('请选择正确的收货地址');
}
$make = app()->make(CityAreaRepository::class);
if (!$make->existsWhere(['id' => $last['id'], 'snum' => 0])) {
throw new ValidateException('请手动选择所在地区');
if (!$this->repository->villageExists('village_code', $last['code'])) {
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_id'] = $province['id'];
$data['city'] = $city['name'];
@ -149,6 +144,14 @@ class UserAddress extends BaseController
$data['street'] = $street['name'];
$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']);
return $data;
}