StoreController.php 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. <?php
  2. namespace addons\BusinessBonus\backend\controllers;
  3. use addons\BusinessBonus\common\enums\BusinessBonusEnums;
  4. use addons\BusinessBonus\common\models\BusinessBonusStore;
  5. use addons\Mch\common\models\Mch;
  6. use addons\Store\common\models\Store;
  7. use common\enums\DownloadEnum;
  8. use common\enums\StatusEnum;
  9. use common\helpers\csv\CsvExportHelper;
  10. use common\models\user\User;
  11. use Yii;
  12. use yii\db\Exception;
  13. class StoreController extends BaseController
  14. {
  15. /**
  16. * 门店列表
  17. */
  18. public function actionIndex()
  19. {
  20. if (Yii::$app->request->isAjax && Yii::$app->request->isPost) {
  21. $params = Yii::$app->request->post();
  22. $res = Yii::$app->services->validate->validate($params, [
  23. [['page', 'user_id', 'business_user_id', 'store_type'], 'integer'],
  24. [['nickname', 'business_nickname', 'store_name'], 'string'],
  25. [['created_at', 'region_option'], 'safe'],
  26. ]);
  27. if($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
  28. $where = [
  29. ['=', 'mall_id', $this->mall_id],
  30. ['=', 'status', StatusEnum::ENABLED],
  31. ['=', 'store_type', $params['store_type']],
  32. ];
  33. if ($params['store_name'] && $params['store_type'] == BusinessBonusEnums::STORE_TYPE_STORE) {
  34. $store_ids = Store::find()
  35. ->orWhere(['like', 'store_name', "%" . $params['store_name'] . "%", false])
  36. ->select('id')
  37. ->asArray()
  38. ->column();
  39. $where[] = ['in', 'store_id', $store_ids];
  40. }
  41. if ($params['store_name'] && $params['store_type'] == BusinessBonusEnums::STORE_TYPE_MCH) {
  42. $store_ids = Mch::find()
  43. ->orWhere(['like', 'store_name', "%" . $params['store_name'] . "%", false])
  44. ->select('id')
  45. ->asArray()
  46. ->column();
  47. $where[] = ['in', 'store_id', $store_ids];
  48. }
  49. if ($params['region_option'] && $params['store_type'] == BusinessBonusEnums::STORE_TYPE_STORE ) {
  50. list ($province_id, $city_id, $district_id) = $params['region_option'];
  51. $store_ids = Store::find()
  52. ->andWhere(['=', 'province_id', $province_id])
  53. ->andWhere(['=', 'city_id', $city_id])
  54. ->andWhere(['=', 'district_id', $district_id])
  55. ->select('id')
  56. ->asArray()
  57. ->column();
  58. $where[] = ['in', 'store_id', $store_ids];
  59. }
  60. if ($params['region_option'] && $params['store_type'] == BusinessBonusEnums::STORE_TYPE_MCH ) {
  61. list ($province_id, $city_id, $district_id) = $params['region_option'];
  62. $store_ids = Mch::find()
  63. ->andWhere(['=', 'province_id', $province_id])
  64. ->andWhere(['=', 'city_id', $city_id])
  65. ->andWhere(['=', 'district_id', $district_id])
  66. ->select('id')
  67. ->asArray()
  68. ->column();
  69. $where[] = ['in', 'store_id', $store_ids];
  70. }
  71. // 店主昵称
  72. if ($params['nickname']) {
  73. $user_ids = User::find()
  74. ->orWhere(['like', 'nickname', "%" . $params['nickname'] . "%", false])
  75. ->orWhere(['like', 'mobile', "%" . $params['nickname'] . "%", false])
  76. ->select('id')
  77. ->asArray()
  78. ->column();
  79. $where[] = ['in', 'store_user_id', $user_ids];
  80. }
  81. // 招商员昵称
  82. if ($params['business_nickname']) {
  83. $user_ids = User::find()
  84. ->orWhere(['like', 'nickname', "%" . $params['business_nickname'] . "%", false])
  85. ->orWhere(['like', 'mobile', "%" . $params['business_nickname'] . "%", false])
  86. ->select('id')
  87. ->asArray()
  88. ->column();
  89. $where[] = ['in', 'business_user_id', $user_ids];
  90. }
  91. // 店主
  92. if ($params['user_id']) {
  93. $where[] = ['=', 'store_user_id', (int)$params['user_id']];
  94. }
  95. // 招商员
  96. if ($params['business_user_id']) {
  97. $where[] = ['=', 'business_user_id', (int)$params['business_user_id']];
  98. }
  99. // 店铺创建时间
  100. $start_time = strtotime($params['created_at'][0] ?? 0);
  101. $end_time = strtotime($params['created_at'][1] ?? 0);
  102. if ($start_time > 0 && $end_time > 0 && $end_time >= $start_time) {
  103. $where[] = ['>=', 'store_created_at', $start_time];
  104. $where[] = ['<=', 'store_created_at', $end_time];
  105. }
  106. $condition = ['where' => $where, 'with' => ['storeUser', 'businessUser'], 'order' => 'id desc'];
  107. if (Yii::$app->request->post('flag') == 'EXPORT') {
  108. $title = $params['store_type'] == BusinessBonusEnums::FROM_TYPE_STORE ? '招商分红门店列表' : '招商分红商户列表';
  109. $filename = $title . '-' . date('YmdHis').'_'.rand(10000,99999);
  110. $post = Yii::$app->request->post();
  111. $post['condition'] = $condition;
  112. $post['mall_id'] = $this->mall_id;
  113. $res = CsvExportHelper::exportDownLoadCenter($this->mall_id, $filename, DownloadEnum::TYPE_STORE_CASHIER, BusinessBonusStore::class,'exportHandle', $post);
  114. if ($res === false) return $this->error('加入导出任务失败'.CsvExportHelper::getStaticError());
  115. return $this->success('添加导出任务成功,任务完成后请在下载中心进行下载!');
  116. }
  117. $page_data = BusinessBonusStore::listPage($condition, false, true);
  118. $page_data['list'] = is_array($page_data['list']) ? $page_data['list'] : [];
  119. $page_data['list'] = BusinessBonusStore::dealStoreList($page_data['list'], $this->mall_id);
  120. $page_data['export_list'] = BusinessBonusStore::fieldsList(null, $params['store_type']);
  121. $this->success('获取成功', compact('page_data'));
  122. } else {
  123. return $this->render('index');
  124. }
  125. }
  126. }