IndexForm.php 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419
  1. <?php
  2. namespace app\modules\admin\models\superSales;
  3. use app\models\Order;
  4. use app\models\SaasUser;
  5. use app\models\SuperSales;
  6. use app\models\SuperSalesMoney;
  7. use app\models\SuperSalesSub;
  8. use app\models\SuperSalesUser;
  9. use app\models\User;
  10. use yii\base\Model;
  11. class IndexForm extends Model
  12. {
  13. public $name;
  14. public $mobile;
  15. public $start_time;
  16. public $end_time;
  17. public $send_start_time;
  18. public $send_end_time;
  19. public $finish_start_time;
  20. public $finish_end_time;
  21. public $order_no;
  22. public $status;
  23. public $store_id;
  24. public $id;
  25. public $parent_user_id;
  26. public function rules()
  27. {
  28. return [
  29. [['status', 'store_id', 'id', 'parent_user_id'], 'integer'],
  30. [['name', 'mobile', 'start_time', 'end_time', 'send_start_time', 'send_end_time', 'order_no', 'finish_start_time', 'finish_end_time'], 'string'],
  31. ];
  32. }
  33. //开团列表
  34. public function superSalesList() {
  35. $status = $this->status;
  36. $name = $this->name;
  37. $mobile = $this->mobile;
  38. $start_time = $this->start_time;
  39. $end_time = $this->end_time;
  40. $store_id = $this->store_id;
  41. $query = SuperSales::find()->alias('ss')
  42. ->leftJoin(['u' => User::tableName()], 'ss.user_id = u.id')
  43. ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile=u.binding')
  44. ->where(['ss.store_id' => $store_id]);
  45. if (isset($status) && in_array($status, [SuperSales::STATUS_FINISH, SuperSales::STATUS_NOT_FINISH])) {
  46. $query->andWhere(['ss.status' => $status]);
  47. }
  48. if ($name) {
  49. $query->andWhere(['like', 'su.name', $name]);
  50. }
  51. if ($mobile) {
  52. $query->andWhere(['like', 'su.mobile', $mobile]);
  53. }
  54. if ($start_time) {
  55. $query->andWhere(['>=', 'ss.created_at', strtotime($start_time)]);
  56. }
  57. if ($end_time) {
  58. $query->andWhere(['<=', 'ss.created_at', strtotime($end_time)]);
  59. }
  60. $query->select('ss.id, ss.created_at, ss.status, su.name, su.avatar, su.mobile')->orderBy('ss.created_at DESC');
  61. $list = pagination_make($query);
  62. foreach ($list['list'] as &$item) {
  63. $item['created_at'] = date('Y-m-d H:i:s', $item['created_at']);
  64. $item['status'] = intval($item['status']);
  65. if ($item['status'] === SuperSales::STATUS_FINISH) {
  66. $item['status_name'] = '已完成';
  67. } else {
  68. $item['status_name'] = '未完成';
  69. }
  70. $item['num'] = SuperSalesSub::find()->where(['sales_id' => $item['id']])->count();
  71. }
  72. return [
  73. 'code' => 0,
  74. 'msg' => 'success',
  75. 'data' => $list
  76. ];
  77. }
  78. //参团用户
  79. public function superSalesUserList() {
  80. $name = $this->name;
  81. $mobile = $this->mobile;
  82. $start_time = $this->start_time;
  83. $end_time = $this->end_time;
  84. $id = $this->id;
  85. $query = SuperSalesSub::find()->alias('sss')
  86. ->leftJoin(['o' => Order::tableName()], 'sss.order_id = o.id')
  87. ->leftJoin(['u' => User::tableName()], 'sss.user_id = u.id')
  88. ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile = u.binding')
  89. ->where(['sss.sales_id' => $id]);
  90. if ($name) {
  91. $query->andWhere(['like', 'su.name', $name]);
  92. }
  93. if ($mobile) {
  94. $query->andWhere(['like', 'su.mobile', $mobile]);
  95. }
  96. if ($start_time) {
  97. $query->andWhere(['>=', 'o.created_at', strtotime($start_time)]);
  98. }
  99. if ($end_time) {
  100. $query->andWhere(['<=', 'o.created_at', strtotime($end_time)]);
  101. }
  102. $query->select('sss.id, sss.weight, sss.order_id, sss.parent_user_id, sss.points, o.created_at, su.name, su.avatar, su.mobile, o.order_no')
  103. ->orderBy('sss.points DESC');
  104. $list = pagination_make($query);
  105. foreach ($list['list'] as &$item) {
  106. $item['created_at'] = date('Y-m-d H:i:s', $item['created_at']);
  107. $item['fugou'] = \app\models\SuperSalesRepeatOrder::findOne(['order_id' => $item['order_id']]);
  108. $item['is_fugou'] = $item['fugou'] ? 1 : 0;
  109. $item['parent_name'] = '';
  110. if ($item['parent_user_id']) {
  111. $superSalesSub = SuperSalesSub::findOne(['user_id' => $item['parent_user_id']]);
  112. if ($superSalesSub) {
  113. $binding = User::findOne(['id' => $item['parent_user_id'], 'is_delete' => 0])->binding;
  114. $user = SaasUser::find()->where(['mobile' => $binding])
  115. ->select('name')->asArray()->One();
  116. $item['parent_name'] = $user['name'] ?: '';
  117. }
  118. }
  119. }
  120. return [
  121. 'code' => 0,
  122. 'msg' => 'success',
  123. 'data' => $list
  124. ];
  125. }
  126. //团长列表
  127. public function superSalesSubList() {
  128. $name = $this->name;
  129. $mobile = $this->mobile;
  130. $start_time = $this->start_time;
  131. $end_time = $this->end_time;
  132. $store_id = $this->store_id;
  133. $parent_user_id = $this->parent_user_id;
  134. $query = SuperSalesUser::find()->alias('ssu')
  135. ->leftJoin(['u' => User::tableName()], 'ssu.user_id = u.id')
  136. ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile = u.binding')
  137. ->where(['ssu.store_id' => $store_id]);
  138. if ($parent_user_id) {
  139. $query->andWhere(['ssu.parent_user_id' => $parent_user_id]);
  140. }
  141. if ($name) {
  142. $query->andWhere(['like', 'su.name', $name]);
  143. }
  144. if ($mobile) {
  145. $query->andWhere(['like', 'su.mobile', $mobile]);
  146. }
  147. if ($start_time) {
  148. $query->andWhere(['>=', 'ssu.created_at', strtotime($start_time)]);
  149. }
  150. if ($end_time) {
  151. $query->andWhere(['<=', 'ssu.created_at', strtotime($end_time)]);
  152. }
  153. $query->select('ssu.id, ssu.created_at, ssu.direct_award, ssu.group_award, ssu.parent_user_id, ssu.user_id, su.name, su.avatar, su.mobile')
  154. ->orderBy('ssu.created_at DESC');
  155. $list = pagination_make($query);
  156. foreach ($list['list'] as &$item) {
  157. $item['created_at'] = date('Y-m-d H:i:s', $item['created_at']);
  158. $item['parent_name'] = '';
  159. if ($item['parent_user_id']) {
  160. $superSalesSub = SuperSalesSub::findOne(['user_id' => $item['parent_user_id']]);
  161. if ($superSalesSub) {
  162. $binding = User::findOne(['id' => $item['parent_user_id'], 'is_delete' => 0])->binding;
  163. $user = SaasUser::find()->where(['mobile' => $binding])
  164. ->select('name')->asArray()->One();
  165. $item['parent_name'] = $user['name'] ?: '';
  166. }
  167. }
  168. //原始推荐下级
  169. $item['direct_user_num'] = SuperSalesUser::find()->where(['parent_user_id' => $item['user_id']])->count();
  170. }
  171. return [
  172. 'code' => 0,
  173. 'msg' => 'success',
  174. 'data' => $list
  175. ];
  176. }
  177. //直推奖列表
  178. public function directAwardList() {
  179. $name = $this->name;
  180. $mobile = $this->mobile;
  181. $start_time = $this->start_time;
  182. $end_time = $this->end_time;
  183. $order_no = $this->order_no;
  184. $send_start_time = $this->send_start_time;
  185. $send_end_time = $this->send_end_time;
  186. $store_id = $this->store_id;
  187. $query = SuperSalesMoney::find()->alias('ssm')
  188. ->leftJoin(['o' => Order::tableName()], 'ssm.order_id = o.id')
  189. ->leftJoin(['u' => User::tableName()], 'ssm.user_id = u.id')
  190. ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile = u.binding')
  191. ->where(['ssm.store_id' => $store_id, 'ssm.type' => SuperSalesMoney::TYPE_DIRECT_AWARD]);
  192. if ($name) {
  193. $query->andWhere(['like', 'su.name', $name]);
  194. }
  195. if ($mobile) {
  196. $query->andWhere(['like', 'su.mobile', $mobile]);
  197. }
  198. if ($order_no) {
  199. $query->andWhere(['like', 'o.order_no', $order_no]);
  200. }
  201. if ($start_time) {
  202. $query->andWhere(['>=', 'o.created_at', strtotime($start_time)]);
  203. }
  204. if ($end_time) {
  205. $query->andWhere(['<=', 'o.created_at', strtotime($end_time)]);
  206. }
  207. if ($send_start_time) {
  208. $query->andWhere(['>=', 'ssm.send_time', strtotime($send_start_time)]);
  209. }
  210. if ($send_end_time) {
  211. $query->andWhere(['<=', 'ssm.send_time', strtotime($send_end_time)]);
  212. }
  213. $query->select('ssm.id, ssm.order_id, ssm.money, o.created_at, ssm.send_time, ssm.status, o.order_no,
  214. su.name, su.avatar, su.mobile, o.user_id, o.total_price')
  215. ->orderBy('ssm.created_at DESC');
  216. $list = pagination_make($query);
  217. foreach ($list['list'] as &$item) {
  218. $item['created_at'] = date('Y-m-d H:i:s', $item['created_at']);
  219. $item['status'] = intval($item['status']);
  220. $item['send_time'] = $item['status'] ? date('Y-m-d H:i:s', $item['send_time']) : '暂未到账';
  221. $binding = User::findOne(['id' => $item['user_id'], 'is_delete' => 0])->binding;
  222. $user = SaasUser::find()->where(['mobile' => $binding])
  223. ->select('name')->asArray()->One();
  224. $item['order_user_name'] = $user['name'] ?: '';
  225. }
  226. return [
  227. 'code' => 0,
  228. 'msg' => 'success',
  229. 'data' => $list
  230. ];
  231. }
  232. //分红奖列表
  233. public function dividendAwardList() {
  234. $name = $this->name;
  235. $mobile = $this->mobile;
  236. $start_time = $this->start_time;
  237. $end_time = $this->end_time;
  238. $send_start_time = $this->send_start_time;
  239. $send_end_time = $this->send_end_time;
  240. $finish_start_time = $this->finish_start_time;
  241. $finish_end_time = $this->finish_end_time;
  242. $store_id = $this->store_id;
  243. $query = SuperSalesMoney::find()->alias('ssm')
  244. ->leftJoin(['ss' => SuperSales::tableName()], 'ssm.sales_id = ss.id')
  245. ->leftJoin(['o' => Order::tableName()], 'ssm.order_id = o.id')
  246. ->leftJoin(['u' => User::tableName()], 'ssm.user_id = u.id')
  247. ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile = u.binding')
  248. ->where(['ssm.store_id' => $store_id, 'ssm.type' => SuperSalesMoney::TYPE_GROUP_AWARD]);
  249. if ($name) {
  250. $query->andWhere(['like', 'su.name', $name]);
  251. }
  252. if ($mobile) {
  253. $query->andWhere(['like', 'su.mobile', $mobile]);
  254. }
  255. if ($start_time) {
  256. $query->andWhere(['>=', 'ss.created_at', strtotime($start_time)]);
  257. }
  258. if ($end_time) {
  259. $query->andWhere(['<=', 'ss.created_at', strtotime($end_time)]);
  260. }
  261. if ($send_start_time) {
  262. $query->andWhere(['>=', 'ssm.send_time', strtotime($send_start_time)]);
  263. }
  264. if ($send_end_time) {
  265. $query->andWhere(['<=', 'ssm.send_time', strtotime($send_end_time)]);
  266. }
  267. if ($finish_start_time) {
  268. $query->andWhere(['>=', 'ss.finish_time', strtotime($finish_start_time)]);
  269. }
  270. if ($finish_end_time) {
  271. $query->andWhere(['<=', 'ss.finish_time', strtotime($finish_end_time)]);
  272. }
  273. $query->select('ssm.id, ssm.money, ss.finish_time, ssm.send_time, ssm.status,
  274. su.name, su.avatar, su.mobile, ssm.sales_id, ss.created_at')
  275. ->orderBy('ssm.created_at DESC');
  276. $list = pagination_make($query);
  277. foreach ($list['list'] as &$item) {
  278. $item['finish_time'] = $item['finish_time'] > 0 ? date('Y-m-d H:i:s', $item['finish_time']) : '';
  279. $item['status'] = intval($item['status']);
  280. $item['send_time'] = $item['status'] ? date('Y-m-d H:i:s', $item['send_time']) : '暂未到账';
  281. $item['created_at'] = date('Y-m-d H:i:s', $item['created_at']);
  282. }
  283. return [
  284. 'code' => 0,
  285. 'msg' => 'success',
  286. 'data' => $list
  287. ];
  288. }
  289. }