You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

209 lines
6.8 KiB

7 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
7 years ago
8 years ago
7 years ago
7 years ago
8 years ago
8 years ago
8 years ago
7 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
  1. <?php
  2. namespace App\Http\Model;
  3. use App\Common\ReturnData;
  4. class UserAddress extends BaseModel
  5. {
  6. //用户收货地址
  7. protected $table = 'user_address';
  8. public $timestamps = false;
  9. protected $hidden = array();
  10. /**
  11. * 不能被批量赋值的属性
  12. *
  13. * @var array
  14. */
  15. protected $guarded = array();
  16. //获取列表
  17. public static function getList(array $param)
  18. {
  19. extract($param); //参数:limit,offset
  20. $limit = isset($limit) ? $limit : 10;
  21. $offset = isset($offset) ? $offset : 0;
  22. $model = self::where(array('user_id'=>$user_id));
  23. $res['count'] = $model->count();
  24. $res['list'] = array();
  25. if($res['count']>0)
  26. {
  27. $res['list'] = $model->skip($offset)->take($limit)->get();
  28. if($res['list'])
  29. {
  30. foreach($res['list'] as $k=>$v)
  31. {
  32. $res['list'][$k]['country_name'] = Region::getRegionName($v['country']);
  33. $res['list'][$k]['province_name'] = Region::getRegionName($v['province']);
  34. $res['list'][$k]['city_name'] = Region::getRegionName($v['city']);
  35. $res['list'][$k]['district_name'] = Region::getRegionName($v['district']);
  36. }
  37. }
  38. }
  39. else
  40. {
  41. return false;
  42. }
  43. return $res;
  44. }
  45. //获取一条记录,不传address_id表示获取默认地址
  46. public static function getOne($user_id,$address_id='')
  47. {
  48. $arr = '';
  49. if ($address_id)
  50. {
  51. $arr = self::where('id',$address_id)->first();
  52. if($arr)
  53. {
  54. $arr->country_name = Region::getRegionName($arr->country);
  55. $arr->province_name = Region::getRegionName($arr->province);
  56. $arr->city_name = Region::getRegionName($arr->city);
  57. $arr->district_name = Region::getRegionName($arr->district);
  58. }
  59. return $arr;
  60. }
  61. if ($user_id > 0)
  62. {
  63. // 取默认地址
  64. $arr = self::join('user','user_address.id', '=', 'user.address_id')
  65. ->where('user.id',$user_id)->select('user_address.id','user_address.name','country','province','city','district','address','user_address.mobile','zipcode')
  66. ->first();
  67. if($arr)
  68. {
  69. $arr->country_name = Region::getRegionName($arr->country);
  70. $arr->province_name = Region::getRegionName($arr->province);
  71. $arr->city_name = Region::getRegionName($arr->city);
  72. $arr->district_name = Region::getRegionName($arr->district);
  73. }
  74. }
  75. return $arr;
  76. }
  77. public static function add(array $param)
  78. {
  79. extract($param);
  80. if(UserAddress::where('user_id', $user_id)->count() >= 3)
  81. {
  82. return ReturnData::create(ReturnData::PARAMS_ERROR,null,'最多10个收货地址');
  83. }
  84. $model = new UserAddress;
  85. $model->user_id = $user_id;
  86. $model->name = $name;
  87. $model->address = $address;
  88. $model->mobile = $mobile;
  89. $model->is_default = isset($is_default) ? $is_default : 0;
  90. if(isset($country)){$model->country = isset($country) ? $country : 0;}
  91. if(isset($province)){$model->province = isset($province) ? $province : 0;}
  92. if(isset($city)){$model->city = isset($city) ? $city : 0;}
  93. if(isset($district)){$model->district = isset($district) ? $district : 0;}
  94. if(isset($telphone)){$model->telphone = isset($telphone) ? $telphone : '';}
  95. if(isset($zipcode)){$model->zipcode = isset($zipcode) ? $zipcode : '';}
  96. if ($model->save())
  97. {
  98. $user = User::where('id', $user_id)->first();
  99. if (!UserAddress::where('id', $user->address_id)->first() || $model->is_default!=0)
  100. {
  101. self::setDefault($model->id,$user_id);
  102. }
  103. return ReturnData::create(ReturnData::SUCCESS,$model);
  104. }
  105. return ReturnData::create(ReturnData::SYSTEM_FAIL);
  106. }
  107. public static function modify(array $param)
  108. {
  109. extract($param);
  110. if ($model = UserAddress::where('id', $id)->where('user_id', $user_id)->first())
  111. {
  112. $model->user_id = $user_id;
  113. $model->is_default = isset($is_default) ? $is_default : 0;
  114. if(isset($name)){$model->name = $name;}
  115. if(isset($country)){$model->country = $country;}
  116. if(isset($province)){$model->province = $province;}
  117. if(isset($city)){$model->city = $city;}
  118. if(isset($district)){$model->district = $district;}
  119. if(isset($address)){$model->address = $address;}
  120. if(isset($mobile)){$model->mobile = $mobile;}
  121. if(isset($telphone)){$model->telphone = $telphone;}
  122. if(isset($zipcode)){$model->zipcode = $zipcode;}
  123. if ($model->save())
  124. {
  125. if ($model->is_default!=0)
  126. {
  127. self::setDefault($model->id,$user_id);
  128. }
  129. return $model->toArray();
  130. }
  131. }
  132. return false;
  133. }
  134. //删除一条记录
  135. public static function remove($id,$user_id)
  136. {
  137. if (UserAddress::where('id', $id)->where('user_id', $user_id)->delete())
  138. {
  139. if ($address = UserAddress::where('user_id', $user_id)->first())
  140. {
  141. $user = User::where('id', $user_id)->first();
  142. if($user->address_id == $id)
  143. {
  144. $user->address_id = $address->id;
  145. $user->save();
  146. self::where('id',$address->id)->update(array('is_default' => 1));
  147. }
  148. }
  149. }
  150. return true;
  151. }
  152. //设为默认地址
  153. public static function setDefault($address_id,$user_id)
  154. {
  155. if ($user_address = UserAddress::where('id', $address_id)->where('user_id', $user_id)->first())
  156. {
  157. $user_address->is_default = 1;
  158. $user_address->save();
  159. UserAddress::where('user_id', $user_id)->where('id', '<>', $address_id)->update(['is_default'=>0]);
  160. if($user = User::where('id', $user_id)->first())
  161. {
  162. $user->address_id = $address_id;
  163. $user->save();
  164. return true;
  165. }
  166. }
  167. return false;
  168. }
  169. }