StoreExpensesController.php 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. <?php
  2. namespace addons\Happiness\backend\controllers;
  3. use addons\Happiness\common\enums\HappinessEnum;
  4. use addons\Happiness\common\models\HappinessAgent;
  5. use addons\Happiness\common\models\HappinessBusiness;
  6. use addons\Happiness\common\models\HappinessExpensesLog;
  7. use addons\Happiness\common\models\HappinessStore;
  8. use common\enums\StatusEnum;
  9. use common\models\user\User;
  10. use Yii;
  11. class StoreExpensesController extends BaseController
  12. {
  13. public function actionIndex()
  14. {
  15. if (!\Yii::$app->request->isAjax) {
  16. return $this->render($this->action->id, []);
  17. }
  18. if (\Yii::$app->request->isGet) {
  19. $get = \Yii::$app->request->get();
  20. $basic = \Yii::$app->services->setting->addons->get($this->mall_id, HappinessEnum::ADDONS_NAME, 'basic');
  21. $business_list = !empty($basic['business_list'])? json_decode($basic['business_list'],true):[];//身份收益设置
  22. $agent_list = !empty($basic['agent_list'])? json_decode($basic['agent_list'],true):[];//身份收益设置
  23. $business_list=array_column($business_list,null,'level');
  24. $agent_list=array_column($agent_list,null,'level');
  25. $where = [
  26. ['status' => StatusEnum::ENABLED],
  27. ['mall_id' => $this->mall_id],
  28. ];
  29. if (!empty($get['user_id'])) {
  30. $where[] = ['user_id' => $get['user_id']];
  31. }
  32. if (isset($get['user']) && $get['user']) {
  33. $user_ids = User::find()->where(['or', ['like', 'nickname', $get['user']], ['mobile' => $get['user']]])->limit(50)->select('id')->column();
  34. $where[] = ['user_id' => $user_ids];
  35. }
  36. if (isset($get['is_store_admin']) && $get['is_store_admin']) {
  37. $selStoreUserIds = HappinessStore::find()->where(['mall_id' => $this->mall_id])->select('user_id')->column();
  38. if ($get['is_store_admin'] == 1) {
  39. $where[] = ['in', 'user_id', $selStoreUserIds];
  40. } elseif ($get['is_store_admin'] == 2) {
  41. $where[] = ['not in', 'user_id', $selStoreUserIds];
  42. }
  43. }
  44. $filter = [
  45. 'where' => $where,
  46. ];
  47. $filter['order'] = 'created_at desc';
  48. $filter['group'] = 'user_id';
  49. $filter['with'] = ['user'];
  50. $filter['select'] = ['id', 'user_id', 'sum(store_money) as store_money', 'sum(share_money) as share_money', 'sum(promotion_money) as promotion_money', 'sum(agent_money) as agent_money', 'sum(fans_money) as fans_money', 'sum(pension_money) as pension_money', 'sum(pv_money) as pv_money'];
  51. $data = HappinessExpensesLog::listPage($filter);
  52. if ($data === false) return $this->error(HappinessExpensesLog::getStaticError());
  53. // 查询店主uid
  54. $userIds = array_column($data['list'], 'user_id');
  55. $storeUserIds = HappinessStore::find()->where(['mall_id' => $this->mall_id, 'user_id' => $userIds])->select('user_id')->column();
  56. $compact_params = array_keys($data);
  57. extract($data);
  58. $agentList = HappinessAgent::find()->where(['mall_id' => $this->mall_id, 'user_id' => $userIds])
  59. ->select('user_id,role,level')->asArray()->all();
  60. $businessList = HappinessBusiness::find()->where(['mall_id' => $this->mall_id, 'user_id' => $userIds])
  61. ->select('user_id,level')->asArray()->all();
  62. foreach ($list as &$item) {
  63. $item['is_store_admin'] = 0; //是否小店店主
  64. if (in_array($item['user_id'], $storeUserIds)) {
  65. $item['is_store_admin'] = 1;
  66. }
  67. $role_name = [];
  68. if (!empty($businessList)) {
  69. foreach ($businessList as $business) {
  70. if ($business['user_id'] == $item['user_id']) {
  71. $role_name[] = $business_list[$business['level']]['name'];
  72. }
  73. }
  74. }
  75. if (!empty($agentList)) {
  76. foreach ($agentList as $agent) {
  77. if ( $agent['user_id'] == $item['user_id']) {
  78. $role_name[] = $agent_list[$agent['level']]['name'];
  79. }
  80. }
  81. }
  82. //去掉重复项
  83. $role_name = array_unique($role_name);
  84. $item['identity_info'] = isset($role_name) ? implode(',', $role_name) : '会员';
  85. }
  86. //身份等级
  87. $total_money = HappinessExpensesLog::find()->where(['status' => StatusEnum::ENABLED, 'mall_id' => $this->mall_id])->select(['sum(store_money) as store_money', 'sum(share_money) as share_money', 'sum(promotion_money) as promotion_money', 'sum(agent_money) as agent_money', 'sum(fans_money) as fans_money', 'sum(pension_money) as pension_money', 'sum(pv_money) as pv_money'])->asArray()->one();
  88. return $this->success('获取成功', compact($compact_params, 'total_money'));
  89. }
  90. }
  91. public function actionDetail()
  92. {
  93. if (!\Yii::$app->request->isAjax) {
  94. return $this->render($this->action->id, []);
  95. }
  96. if (\Yii::$app->request->isGet) {
  97. $get = \Yii::$app->request->get();
  98. $where = [
  99. ['status' => StatusEnum::ENABLED],
  100. ['mall_id' => $this->mall_id],
  101. ['user_id' => $get['user_id']],
  102. ];
  103. $filter = [
  104. 'where' => $where,
  105. ];
  106. $filter['order'] = 'created_at desc';
  107. $filter['with'] = [
  108. 'store' => function ($query) {
  109. $query->select('id,store_name,logo_img');
  110. }
  111. ];
  112. $data = HappinessExpensesLog::listPage($filter);
  113. if ($data === false) return $this->error(HappinessExpensesLog::getStaticError());
  114. return $this->success('获取成功', $data);
  115. }
  116. }
  117. }