dggjimai/application/common/model/UserAddress.php

224 lines
6.8 KiB
PHP
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/**
* 用户地址模型
*/
namespace app\common\model;
use think\model\concern\SoftDelete;
use think\db;
class UserAddress extends Model
{
use SoftDelete;
public $softDelete = true;
protected $name = 'user_address';
protected $autoWriteTimestamp = true;
/**
* 获取用户地址信息
* @param $user_id
*/
public static function infoUserAddress($user_id){
$info = Db::name('user_address')
->where(['user_id'=>$user_id])
->field('id,contact,telephone,province_id,city_id,district_id,address,is_default,post_code')
->select();
foreach ($info as &$item) {
$item['province'] = self::getAddress($item['province_id']);
$item['city'] = self::getAddress($item['city_id']);
$item['district'] = self::getAddress($item['district_id']);
}
return $info;
}
/**
* 获取默认地址
* @param $user_id
*/
public static function getDefaultAddress($user_id){
$info = Db::name('user_address')
->where(['is_default'=>1,'user_id'=>$user_id])
->field('id,contact,telephone,province_id,city_id,district_id,address,is_default,post_code')
->find();
if (!$info){
return [];
}
$info['province'] = self::getAddress($info['province_id']);
$info['city'] = self::getAddress($info['city_id']);
$info['district'] = self::getAddress($info['district_id']);
return $info;
}
/**
* 设置默认地址
* @param $user_id
* @param $post
* @return int|string
*/
public static function setDefaultAddress($user_id,$post){
Db::startTrans();
try {
Db::name('user_address')
->where(['user_id'=>$user_id])
->update(['is_default'=>0]);
$result = Db::name('user_address')
->where(['id'=>$post['id'],'user_id'=>$user_id])
->update(['is_default'=>1]);
Db::commit();
} catch (Exception $e) {
Db::rollback();
return false;
}
return $result;
}
/**
* 添加收货地址
* @param $user_id
* @param $post
* @return int|string
*/
public static function addUserAddress($user_id,$post) {
Db::startTrans();
try {
if ($post['is_default'] == 1){
Db::name('user_address')
->where(['user_id'=>$user_id])
->update(['is_default'=>0]);
}else{
$is_first = Db::name('user_address')
->where(['user_id'=>$user_id])
->select();
if (empty($is_first)){
$post['is_default'] = 1;
}
}
$data = [
'user_id' => $user_id,
'contact' => $post['contact'],
'telephone' => $post['telephone'],
'province_id' => $post['province_id'],
'city_id' => $post['city_id'],
'district_id' => $post['district_id'],
'address' => $post['address'],
'is_default' => $post['is_default'],
'post_code' => $post['post_code'],
'create_time' => time()
];
$result = Db::name('user_address')->insert($data);
Db::commit();
} catch (Exception $e) {
Db::rollback();
return false;
}
return $result;
}
/**
* 编辑用户地址
* @param $user_id
* @param $post
*/
public static function editUserAddress($user_id,$post) {
Db::startTrans();
try {
if ($post['is_default'] == 1){
Db::name('user_address')
->where(['user_id'=>$user_id])
->update(['is_default'=>0]);
}
$data = [
'contact' => $post['contact'],
'telephone' => $post['telephone'],
'province_id' => $post['province_id'],
'city_id' => $post['city_id'],
'district_id' => $post['district_id'],
'address' => $post['address'],
'is_default' => $post['is_default'],
'post_code' => $post['post_code'],
'update_time' => time()
];
$result = Db::name('user_address')
->where(['id'=>$post['id'],'user_id'=>$user_id])
->update($data);
Db::commit();
} catch (Exception $e) {
Db::rollback();
return false;
}
return $result;
}
/**
* 删除用户地址
* @param $user_id
* @param $post
*/
public static function delUserAddress($user_id,$post) {
return Db::name('user_address')->where(['id'=>$post['id'],'user_id'=>$user_id])->delete();
}
/**
* Desc: 获取用户指定id的地址
* @param $address
* @param $user_id
*/
public static function getUserAddressById($address, $user_id)
{
$info = Db::name('user_address')
->where(['id' => $address, 'user_id' => $user_id])
->field('id,contact,telephone,province_id,city_id,district_id,address,is_default,post_code')
->find();
if (!$info) {
return [];
}
$info['province'] = self::getAddress($info['province_id']);
$info['city'] = self::getAddress($info['city_id']);
$info['district'] = self::getAddress($info['district_id']);
return $info;
}
//获取订单用户地址
/**
* Desc: 获取下单时用户地址
* @param $data
* @param $user_id
*/
public static function getOrderUserAddress($data, $user_id)
{
if (isset($data['address_id']) && $data['address_id'] != 0){
return self::getUserAddressById($data['address_id'], $user_id);
}
return self::getDefaultAddress($user_id);
}
/**
* 通过id获取地址
* @param $val(为非数组,返回单独地点名,为数组时,按顺序拼接地址返回)
* @param string $address val为数组时连接详细地址一起返回
* @return mixed|string
*/
public static function getAddress($val, $address = '')
{
$area_id_name = Db::name('dev_region')->column('name', 'id');
if (!is_array($val)) {
return isset($area_id_name[$val]) ? $area_id_name[$val] : '';
}
$long_address = '';
foreach ($val as $id) {
$long_address .= isset($area_id_name[$id]) ? $area_id_name[$id] : '';
}
return $long_address . $address;
}
}