123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187 |
- <?php
- // +----------------------------------------------------------------------
- // | A3Mall
- // +----------------------------------------------------------------------
- // | Copyright (c) 2020 http://www.a3-mall.com All rights reserved.
- // +----------------------------------------------------------------------
- // | Author: xzncit <158373108@qq.com>
- // +----------------------------------------------------------------------
- namespace app\api\service;
- use mall\basic\Users;
- use app\common\models\users\UsersAddress as UsersAddressModel;
- use app\common\models\Area as AreaModel;
- use mall\utils\Check;
- class Address extends Service {
- /**
- * 获取指定会员所有地址
- * @return array
- * @throws \think\db\exception\DataNotFoundException
- * @throws \think\db\exception\DbException
- * @throws \think\db\exception\ModelNotFoundException
- */
- public static function getList(){
- $data = UsersAddressModel::where([ "user_id"=>Users::get("id") ])->select()->toArray();
- $list = [];
- foreach($data as $key=>$item){
- $area = [];
- foreach([$item["province"],$item["city"],$item["area"]] as $value){
- $area[] = AreaModel::where("id",$value)->value("name");
- }
- $list[$key] = [
- "id"=>$item["id"],
- "is_default"=>$item['is_default'],
- "name"=>$item["accept_name"],
- "tel"=>$item["mobile"],
- "address"=>implode(" ", $area) . $item["address"]
- ];
- }
- return $list;
- }
- /**
- * 详情
- * @param $id
- * @return array
- * @throws \think\db\exception\DataNotFoundException
- * @throws \think\db\exception\DbException
- * @throws \think\db\exception\ModelNotFoundException
- */
- public static function detail($id){
- if(!$row = UsersAddressModel::where([ "user_id"=>Users::get("id"), "id"=>$id ])->find()){
- throw new \Exception("address empty",0);
- }
- $extends_info = json_decode($row["extends_info"],true);
- return [
- "areaCode"=>$extends_info["areaCode"],
- "isDefault"=>$row["is_default"] ? true : false,
- "name"=> $row["accept_name"],
- "tel"=>$row["mobile"],
- "addressDetail"=>$row["address"],
- "province"=>$row["province"],
- "county"=>$row["city"],
- "city"=>$row["area"],
- "area_name"=>AreaModel::getArea([$row["province"],$row["city"],$row["area"]],',')
- ];
- }
- /**
- * 删除地址
- * @param $id
- * @return bool
- */
- public static function delete($id){
- return UsersAddressModel::where([ "user_id"=>Users::get("id"), "id"=>$id ])->delete();
- }
- /**
- * 编辑收货地址
- * @param $post
- * @return mixed
- * @throws \think\db\exception\DataNotFoundException
- * @throws \think\db\exception\DbException
- * @throws \think\db\exception\ModelNotFoundException
- */
- public static function editor($post){
- if(empty($post["name"])){
- throw new \Exception("请填写姓名!",0);
- }else if(!Check::chsAlphaNum($post["name"])){
- throw new \Exception("您填写的姓名不合法!",0);
- }else if(!Check::mobile($post["tel"])){
- throw new \Exception("您填写的手机号码不正确",0);
- }else if(empty($post["addressDetail"])){
- throw new \Exception("请填写地址",0);
- }else if(empty($post["province"])){
- throw new \Exception("请选择省份",0);
- }else if(empty($post["city"])){
- throw new \Exception("请选择市",0);
- }else if(empty($post["county"])){
- throw new \Exception("请选择区",0);
- }else if(empty($post["areaCode"]) && $post["client_type"] == 0){
- throw new \Exception("请选择所在地区",0);
- }else if(!in_array($post["client_type"],[0,1,2])){ // 0:app 1:mini 2: h5
- throw new \Exception("参数错误",0);
- }
- $province = AreaModel::where("level",1)->where("name","like",'%'.$post["province"].'%')->find();
- $city = AreaModel::where("pid",$province["id"])->where("level",2)->where("name","like",'%'.$post["city"].'%')->find();
- $county = AreaModel::where("pid",$city["id"])->where("level",3)->where("name","like",'%'.$post["county"].'%')->find();
- if(empty($province) || empty($city)){
- throw new \Exception("您选择的地址不存在",0);
- }
- try{
- UsersAddressModel::startTrans();
- $is_default = isset($post["is_default"]) ? intval($post["is_default"]) : 0;
- if($is_default){
- UsersAddressModel::where(["user_id"=>Users::get("id")])->update(["is_default"=>0]);
- }
- if(empty($post["id"])){
- $data = [
- "user_id"=>Users::get("id"),
- "accept_name"=>$post["name"],
- "mobile"=>$post["tel"],
- "province"=>$province["id"],
- "city"=>$city["id"],
- "area"=>$county["id"],
- "address"=>$post["addressDetail"],
- "is_default" => $is_default,
- // "extends_info"=>json_encode(["areaCode"=>$post["areaCode"]],JSON_UNESCAPED_UNICODE),
- "create_time"=>time()
- ];
- if(isset($post["client_type"]) && $post["client_type"] == 0){
- $data["extends_info"] = json_encode(["areaCode"=>$post["areaCode"]],JSON_UNESCAPED_UNICODE);
- }
- $lastInsID = UsersAddressModel::create($data)->id;
- }else{
- $data = [
- "accept_name"=>$post["name"],
- "mobile"=>$post["tel"],
- "province"=>$province["id"],
- "city"=>$city["id"],
- "area"=>$county["id"],
- "address"=>$post["addressDetail"],
- "is_default" => $is_default,
- // "extends_info"=>json_encode(["areaCode"=>$post["areaCode"]],JSON_UNESCAPED_UNICODE),
- "create_time"=>time()
- ];
- if(isset($post["client_type"]) && $post["client_type"] == 0){
- $data["extends_info"] = json_encode(["areaCode"=>$post["areaCode"]],JSON_UNESCAPED_UNICODE);
- }
- UsersAddressModel::where("id",intval($post["id"]))->where("user_id",Users::get("id"))->save($data);
- $lastInsID = $post["id"];
- }
- UsersAddressModel::commit();
- return $lastInsID;
- }catch (\Exception $ex){
- UsersAddressModel::rollback();
- throw new \Exception($ex->getMessage(),$ex->getCode());
- }
- }
- /**
- * 设置默认地址
- * @param $id
- * @return bool
- */
- public static function setDefaultAddress($id){
- UsersAddressModel::where("user_id",Users::get("id"))->update(["is_default"=>0]);
- UsersAddressModel::where(["id"=>$id,"user_id"=>Users::get("id")])->update(["is_default"=> 1]);
- return true;
- }
- }
|