SaasUsersForm.php 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. <?php
  2. /**
  3. * 重庆赤晓店信息科技有限公司
  4. * https://www.chixiaodian.com
  5. * Copyright (c) 2023 赤店商城 All rights reserved.
  6. */
  7. namespace app\modules\admin\models;
  8. use app\models\AccountLog;
  9. use app\models\Address;
  10. use Yii;
  11. use app\models\Store;
  12. use yii\base\Model;
  13. use app\models\User;
  14. use app\models\Option;
  15. use app\models\SaasUser;
  16. use Exception;
  17. use app\models\Admin;
  18. use app\models\SaasStoreReferral;
  19. use app\models\BusinessRightDuration;
  20. class SaasUsersForm extends Model
  21. {
  22. public $saas_id;
  23. public $log_type;
  24. public function rules()
  25. {
  26. return [
  27. [['saas_id', 'log_type'], 'integer']
  28. ];
  29. }
  30. public function getList($params)
  31. {
  32. $query = SaasUser::find()->alias('su')
  33. ->leftJoin(['s' => Store::tableName()], 'su.store_id = s.id')
  34. ->where([
  35. 'su.is_delete' => 0,
  36. ])->andWhere(['and', ['<>', 'su.name', ''], ['<>', 'su.avatar', '']]);
  37. if (isset($params['store_name']) && $params['store_name']) {
  38. $query->andWhere(['like', 's.name', $params['store_name']]);
  39. }
  40. if (isset($params['nickname']) && $params['nickname']) {
  41. $query->andWhere(['like', 'su.name', $params['nickname']]);
  42. }
  43. if (isset($params['mobile']) && $params['mobile']) {
  44. $query->andWhere(['like', 'su.mobile', $params['mobile']]);
  45. }
  46. $query->select('su.*, s.name as store_name')->orderBy('su.id desc');
  47. $pagination = pagination_make($query);
  48. $list = $pagination['list'];
  49. $address = Address::find()->where(['is_delete' => 0])->asArray()->all();
  50. foreach ($list as &$item) {
  51. if ($item['mobile']) {
  52. $user_list = User::find()->select(['id', 'nickname', 'avatar_url', 'store_id'])->where(['is_delete' => 0, 'binding' => $item['mobile']])->asArray()->all();
  53. foreach ($user_list as $key => $value) {
  54. $user_list[$key]['store_name'] = Option::get('name', $value['store_id'], 'store', '-')['value'];
  55. }
  56. } else {
  57. $user_list = [];
  58. }
  59. $item['user_list'] = $user_list;
  60. $item['parent_user_list'] = [];
  61. if ($item['parent_id'] > 0) {
  62. $parent = SaasUser::find()->select('mobile, avatar, name')->where(['is_delete' => 0, 'id' => $item['parent_id']])->asArray()->one();
  63. if ($parent) {
  64. $parent_user_list = User::find()->select(['id', 'nickname', 'avatar_url', 'store_id'])->where(['is_delete' => 0, 'binding' => $parent['mobile']])->asArray()->all();
  65. foreach ($parent_user_list as $key => $value) {
  66. $parent_user_list[$key]['store_name'] = Option::get('name', $value['store_id'], 'store', '-')['value'];
  67. }
  68. $item['parent_user_list'] = $parent_user_list;
  69. }
  70. $item['parent'] = $parent;
  71. }
  72. }
  73. return [
  74. 'code' => 0,
  75. 'msg' => 'success',
  76. 'data' => [
  77. 'data' => $list,
  78. 'address' => $address,
  79. 'pageNo' => $pagination['pageNo'],
  80. 'totalCount' => $pagination['totalCount'],
  81. ],
  82. ];
  83. }
  84. //平台用户头部信息显示
  85. public function getUserInfo($params)
  86. {
  87. $query = SaasUser::find()->alias('su')
  88. ->leftJoin(['s' => Store::tableName()], 'su.store_id = s.id')
  89. ->where([
  90. 'su.is_delete' => 0,
  91. 'su.id' => $params['id']
  92. ])->andWhere(['and', ['<>', 'su.name', ''], ['<>', 'su.avatar', '']]);
  93. $info = $query->select('su.*, s.name as store_name')->asArray()->one();
  94. if ($info) {
  95. $info['created_at'] = date('Y-m-d H:i:s', $info['created_at']);
  96. if ($info['mobile']) {
  97. $user_list = User::find()->select(['id', 'nickname', 'avatar_url', 'store_id'])->where(['is_delete' => 0, 'binding' => $info['mobile']])->asArray()->all();
  98. foreach ($user_list as $key => $value) {
  99. $user_list[$key]['store_name'] = Option::get('name', $value['store_id'], 'store', '-')['value'];
  100. }
  101. } else {
  102. $user_list = [];
  103. }
  104. $info['user_list'] = $user_list;
  105. $info['parent_user_list'] = [];
  106. if ($info['parent_id'] > 0) {
  107. $parent = SaasUser::find()->select('mobile, avatar, name')->where(['is_delete' => 0, 'id' => $info['parent_id']])->asArray()->one();
  108. if ($parent) {
  109. $parent_user_list = User::find()->select(['id', 'nickname', 'avatar_url', 'store_id'])->where(['is_delete' => 0, 'binding' => $parent['mobile']])->asArray()->all();
  110. foreach ($parent_user_list as $key => $value) {
  111. $parent_user_list[$key]['store_name'] = Option::get('name', $value['store_id'], 'store', '-')['value'];
  112. }
  113. $info['parent_user_list'] = $parent_user_list;
  114. }
  115. $info['parent'] = $parent;
  116. }
  117. }
  118. return [
  119. 'code' => 0,
  120. 'msg' => 'success',
  121. 'data' => $info,
  122. ];
  123. }
  124. public function getRightList($params)
  125. {
  126. $query = SaasUser::find()->alias('su')
  127. ->where([
  128. 'su.is_delete' => 0,
  129. ])->andWhere(['and', ['<>', 'su.name', ''], ['<>', 'su.avatar', '']]);
  130. if (isset($params['nickname']) && $params['nickname']) {
  131. $query->andWhere(['like', 'su.name', $params['nickname']]);
  132. }
  133. if (isset($params['mobile']) && $params['mobile']) {
  134. $query->andWhere(['like', 'su.mobile', $params['mobile']]);
  135. }
  136. if (isset($params['id']) && $params['id']) {
  137. $query->andWhere(['id' => $params['id']]);
  138. }
  139. $query->select('id, mobile, store_id, name, avatar');
  140. $pagination = pagination_make($query);
  141. $list = $pagination['list'];
  142. foreach ($list as &$item) {
  143. $item['has_store'] = 0;
  144. $item['store_referral'] = 0;
  145. $item['right1'] = 0;
  146. $item['right2'] = 0;
  147. $item['right3'] = 0;
  148. $store_admin = Admin::findOne(['saas_user_id' => $item['id'], 'is_delete' => 0, 'type' => 'store']);
  149. if($store_admin){
  150. $item['has_store'] = 1;
  151. }
  152. $ref = SaasStoreReferral::findOne(['referral_id' => $item['id']]);
  153. if($ref){
  154. $item['store_referral'] = 1;
  155. }
  156. $right1 = BusinessRightDuration::find()->where(['and', ['saas_id'=>$item['id'], 'right_id'=>1, 'is_delete' => 0], ['or', 'expire_time=0', 'expire_time>'.time()]])->one();
  157. if($right1){
  158. $item['right1'] = 1;
  159. $item['right1_from'] = $right1['from'];
  160. }
  161. $right2 = BusinessRightDuration::find()->where(['and', ['saas_id'=>$item['id'], 'right_id'=>2, 'is_delete' => 0], ['or', 'expire_time=0', 'expire_time>'.time()]])->one();
  162. if($right2){
  163. $item['right2'] = 1;
  164. $item['right2_from'] = $right2['from'];
  165. }
  166. $right3 = BusinessRightDuration::find()->where(['and', ['saas_id'=>$item['id'], 'right_id'=>3, 'is_delete' => 0], ['or', 'expire_time=0', 'expire_time>'.time()]])->one();
  167. if($right3){
  168. $item['right3'] = 1;
  169. $item['right3_from'] = $right3['from'];
  170. }
  171. }
  172. return [
  173. 'code' => 0,
  174. 'msg' => 'success',
  175. 'data' => [
  176. 'data' => $list,
  177. 'pageNo' => $pagination['pageNo'],
  178. 'totalCount' => $pagination['totalCount'],
  179. ],
  180. ];
  181. }
  182. public function getSaasIntegral() {
  183. $saas_id = $this->saas_id;
  184. $log_type = $this->log_type;
  185. $query = AccountLog::find()->where(['store_id' => [0, -1], 'saas_id' => $saas_id, 'type' => AccountLog::TYPE_INTEGRAL])->orderBy('created_at desc');
  186. if (in_array($log_type, [1, 2])) {
  187. $query->andWhere(['log_type' => $log_type])->asArray()->all();
  188. }
  189. $list = pagination_make($query);
  190. foreach ($list['list'] as &$item) {
  191. $item['log_type'] = (int)$item['log_type'];
  192. $item['created_at'] = date('Y-m-d H:i:s', $item['created_at']);
  193. }
  194. return [
  195. 'code' => 0,
  196. 'msg' => 'success',
  197. 'data' => [
  198. 'data' => $list['list'],
  199. 'pageNo' => $list['pageNo'],
  200. 'totalCount' => $list['totalCount'],
  201. ]
  202. ];
  203. }
  204. }