data; if (isset($data['is_default']) && $data['is_default'] && $data['is_default'] == 1) { self::where('uid', $param->uid)->save(['is_default' => 0]); } if (isset($data['id']) && $data['id']) { // 修改 $data['mergename'] = $data['area_text'] . $data['remark']; self::update($data); } else { $insert = [ 'remark' => $data['remark'], 'province' => $data['province'], 'city' => $data['city'], 'county' => $data['county'], 'name' => $data['name'], 'mobile' => $data['mobile'], 'is_default' => isset($data['is_default']) ? $data['is_default'] : 0, ]; $insert['mergename'] = $data['area_text'] . $data['remark']; $insert['uid'] = $param->uid; self::insert($insert); } RedisCache::keyDel("caches:address:user:u_{$param->uid}_*"); self::commit(); } catch (\Exception $e) { self::rollback(); return api_error_return('保存失败'); } return api_succ_return('保存成功'); } /** * 设置默认地址 * @param $param * @return mixed */ public function setDefaultAddress ($param) { self::startTrans(); try { if (!self::where(['id' => $param->data['id']])->value('id')){ return api_error_return('参数错误'); } self::where('uid', $param->uid)->save(['is_default' => 0]); self::where(['id' => $param->data['id'], 'uid' => $param->uid])->save(['is_default' => 1]); RedisCache::keyDel("caches:address:user:u_{$param->uid}_*"); self::commit(); } catch (\Exception $e) { self::rollback(); return api_error_return('设置失败'); } return api_succ_return('设置成功'); } /** * 删除地址 * @param $param * @return string */ public function delUserAddress ($param) { try { if (!self::where(['id' => $param->data['id']])->find()){ return api_error_return('参数错误'); } self::where(['id' => $param->data['id'], 'uid' => $param->uid])->delete(); RedisCache::keyDel("caches:address:user:u_{$param->uid}_*"); } catch (\Exception $e) { return api_error_return('删除失败'); } return api_succ_return('删除成功'); } /** * 获取我的地址 * @param $param * @return mixed */ public function getUserAddress ($param, $is_default) { try { $cacheKey = "caches:address:user:u_{$param->uid}_$is_default"; $list = RedisCache::get($cacheKey); if($list){ return api_succ_return(['msg'=>'获取缓存成功', 'data'=>$list]); } $list = self::where('uid', $param->uid) ->where('is_default', 'in', ($is_default==1?['1']:['1', '0'])) ->order('is_default desc') ->select(); if (empty($list->toArray())){ return api_succ_return(['msg'=>'获取成功', 'data'=>null]); } foreach ($list as $k => $v) { $list[$k]['area_text'] = Db::name('area')->where('id', 'in', $v['province'] . ',' . $v['city'] . ',' . $v['county'])->value('GROUP_CONCAT(name separator "")'); } $list = $list->toArray(); RedisCache::set($cacheKey, $list, rand(10, 20)); return api_succ_return(['msg'=>'获取成功', 'data'=> $list]); } catch (\Exception $e) { return api_error_return('获取失败'); } } /** * @param int $addressId * @return array * 获取地址信息 */ public static function getAddressIdDetails (int $addressId): array { return self::where(['id'=>$addressId])->findOrEmpty()->toArray(); } }