UserAddressModel.php 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. <?php
  2. /**
  3. * 我的地址
  4. */
  5. namespace app\common\model;
  6. use think\facade\Db;
  7. use think\Model;
  8. use utils\RedisCache;
  9. class UserAddressModel extends Model
  10. {
  11. protected $name = 'user_address';
  12. /**
  13. * 保存地址
  14. * @param $param
  15. * @return string
  16. */
  17. public function saveUserAddress ($param)
  18. {
  19. self::startTrans();
  20. try {
  21. $data = $param->data;
  22. if (isset($data['is_default']) && $data['is_default'] && $data['is_default'] == 1) {
  23. self::where('uid', $param->uid)->save(['is_default' => 0]);
  24. }
  25. if (isset($data['id']) && $data['id']) { // 修改
  26. $data['mergename'] = $data['area_text'] . $data['remark'];
  27. self::update($data);
  28. } else {
  29. $insert = [
  30. 'remark' => $data['remark'],
  31. 'province' => $data['province'],
  32. 'city' => $data['city'],
  33. 'county' => $data['county'],
  34. 'name' => $data['name'],
  35. 'mobile' => $data['mobile'],
  36. 'is_default' => isset($data['is_default']) ? $data['is_default'] : 0,
  37. ];
  38. $insert['mergename'] = $data['area_text'] . $data['remark'];
  39. $insert['uid'] = $param->uid;
  40. self::insert($insert);
  41. }
  42. RedisCache::keyDel("caches:address:user:u_{$param->uid}_*");
  43. self::commit();
  44. } catch (\Exception $e) {
  45. self::rollback();
  46. return api_error_return('保存失败');
  47. }
  48. return api_succ_return('保存成功');
  49. }
  50. /**
  51. * 设置默认地址
  52. * @param $param
  53. * @return mixed
  54. */
  55. public function setDefaultAddress ($param)
  56. {
  57. self::startTrans();
  58. try {
  59. if (!self::where(['id' => $param->data['id']])->value('id')){
  60. return api_error_return('参数错误');
  61. }
  62. self::where('uid', $param->uid)->save(['is_default' => 0]);
  63. self::where(['id' => $param->data['id'], 'uid' => $param->uid])->save(['is_default' => 1]);
  64. RedisCache::keyDel("caches:address:user:u_{$param->uid}_*");
  65. self::commit();
  66. } catch (\Exception $e) {
  67. self::rollback();
  68. return api_error_return('设置失败');
  69. }
  70. return api_succ_return('设置成功');
  71. }
  72. /**
  73. * 删除地址
  74. * @param $param
  75. * @return string
  76. */
  77. public function delUserAddress ($param)
  78. {
  79. try {
  80. if (!self::where(['id' => $param->data['id']])->find()){
  81. return api_error_return('参数错误');
  82. }
  83. self::where(['id' => $param->data['id'], 'uid' => $param->uid])->delete();
  84. RedisCache::keyDel("caches:address:user:u_{$param->uid}_*");
  85. } catch (\Exception $e) {
  86. return api_error_return('删除失败');
  87. }
  88. return api_succ_return('删除成功');
  89. }
  90. /**
  91. * 获取我的地址
  92. * @param $param
  93. * @return mixed
  94. */
  95. public function getUserAddress ($param, $is_default)
  96. {
  97. try {
  98. $cacheKey = "caches:address:user:u_{$param->uid}_$is_default";
  99. $list = RedisCache::get($cacheKey);
  100. if($list){
  101. return api_succ_return(['msg'=>'获取缓存成功', 'data'=>$list]);
  102. }
  103. $list = self::where('uid', $param->uid)
  104. ->where('is_default', 'in', ($is_default==1?['1']:['1', '0']))
  105. ->order('is_default desc')
  106. ->select();
  107. if (empty($list->toArray())){
  108. return api_succ_return(['msg'=>'获取成功', 'data'=>null]);
  109. }
  110. foreach ($list as $k => $v) {
  111. $list[$k]['area_text'] = Db::name('area')->where('id', 'in', $v['province'] . ',' . $v['city'] . ',' . $v['county'])->value('GROUP_CONCAT(name separator "")');
  112. }
  113. $list = $list->toArray();
  114. RedisCache::set($cacheKey, $list, rand(10, 20));
  115. return api_succ_return(['msg'=>'获取成功', 'data'=> $list]);
  116. } catch (\Exception $e) {
  117. return api_error_return('获取失败');
  118. }
  119. }
  120. /**
  121. * @param int $addressId
  122. * @return array
  123. * 获取地址信息
  124. */
  125. public static function getAddressIdDetails (int $addressId): array
  126. {
  127. return self::where(['id'=>$addressId])->findOrEmpty()->toArray();
  128. }
  129. }