GroupPurchaseForm.php 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685
  1. <?php
  2. namespace app\modules\admin\models\shareGroup;
  3. use app\models\Order;
  4. use app\models\OrderDetail;
  5. use app\models\SaasUser;
  6. use app\models\ShareGroupMoney;
  7. use app\models\ShareGroupMoneySub;
  8. use app\models\ShareGroupPurchaseParentLog;
  9. use app\models\ShareGroupPurchaseUser;
  10. use app\models\ShareGroupSupportLog;
  11. use app\models\User;
  12. use yii\base\Model;
  13. class GroupPurchaseForm extends Model
  14. {
  15. public $store_id;
  16. public $nickname;
  17. public $mobile;
  18. public $start_time;
  19. public $end_time;
  20. public $order_no;
  21. public $goods_name;
  22. public $status;
  23. public $batch_id;
  24. public $child_level;
  25. public function rules()
  26. {
  27. return [
  28. [['store_id', 'status', 'batch_id', 'child_level'], 'integer'],
  29. [['nickname', 'mobile', 'start_time', 'end_time', 'order_no', 'goods_name'], 'string'],
  30. [['nickname', 'mobile', 'order_no', 'goods_name'], 'trim']
  31. ];
  32. }
  33. public function attributeLabels()
  34. {
  35. return [
  36. 'store_id' => "Store Id",
  37. 'nickname' => '用户昵称',
  38. 'mobile' => '手机号码',
  39. 'start_time' => '起止时间-开始',
  40. 'end_time' => '起止时间-结束',
  41. 'order_no' => '订单编号',
  42. 'goods_name' => '商品名称',
  43. 'status' => '状态'
  44. ];
  45. }
  46. public function headUserList() {
  47. try {
  48. $store_id = $this->store_id;
  49. $nickname = $this->nickname;
  50. $mobile = $this->mobile;
  51. $start_time = $this->start_time;
  52. $end_time = $this->end_time;
  53. $query = ShareGroupPurchaseParentLog::find()->alias('sg')
  54. ->leftJoin(['u' => User::tableName()], 'sg.user_id = u.id')
  55. ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile = u.binding')
  56. ->leftJoin(['spu' => ShareGroupPurchaseUser::tableName()], 'spu.user_id = u.id')
  57. ->where(['sg.store_id' => $store_id, 'u.is_delete' => 0, 'su.is_delete' => 0]);
  58. if (!empty($nickname)) {
  59. $query->andWhere(['OR', ['LIKE', 'su.name', $nickname], ['LIKE', 'u.nickname', $nickname]]);
  60. }
  61. if (!empty($mobile)) {
  62. $query->andWhere(['LIKE', 'su.mobile', $mobile]);
  63. }
  64. if (!empty($start_time)) {
  65. $start_time = strtotime($start_time);
  66. $query->andWhere(['>=', 'spu.created_at', $start_time]);
  67. }
  68. if (!empty($end_time)) {
  69. $end_time = strtotime($end_time);
  70. $query->andWhere(['<=', 'spu.created_at', $end_time]);
  71. }
  72. $query->select('sg.id, sg.user_id, sg.parent_user_id, su.name, su.avatar, su.mobile, spu.created_at, sg.parent_id, sg.child_level')
  73. ->orderBy('spu.created_at DESC')->groupBy('sg.user_id');
  74. $pagination = pagination_make($query);
  75. foreach ($pagination['list'] as &$item) {
  76. $item['created_at'] = date('Y-m-d H:i:s', $item['created_at']);
  77. $shareGroupPurchaseUser = ShareGroupPurchaseUser::findOne(['user_id' => $item['user_id']]);
  78. $item['group_price'] = $shareGroupPurchaseUser->group_price ?? '0.00';
  79. $item['direct_price'] = $shareGroupPurchaseUser->direct_price ?? '0.00';
  80. $item['support_price'] = $shareGroupPurchaseUser->support_price ?? '0.00';
  81. // $shareGroupSupportLog = ShareGroupSupportLog::findOne(['user_id' => $item['user_id']]);
  82. // if ($shareGroupSupportLog && $shareGroupSupportLog->parent_id) {
  83. // $parentShareGroupSupportLog = ShareGroupSupportLog::findOne(['id' => $shareGroupSupportLog->parent_id]);
  84. // $item['parent_user_id'] = $parentShareGroupSupportLog->user_id;
  85. // }
  86. $parent_user = User::find()->alias('u')
  87. ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile = u.binding')
  88. ->where(['u.id' => $shareGroupPurchaseUser->parent_user_id, 'u.is_delete' => 0, 'su.is_delete' => 0])
  89. ->select('su.name, su.avatar, su.mobile')->asArray()->one();
  90. $item['parent_user'] = $parent_user ?: [];
  91. $first_child = ShareGroupPurchaseParentLog::find()->where(['parent_id' => $item['id']])
  92. ->select('id, user_id')->asArray()->all();
  93. $group_purchase_child_data_id = array_column($first_child, 'id');
  94. $group_purchase_child_data_user_id = array_column($first_child, 'user_id');
  95. // $second_child = ShareGroupPurchaseParentLog::find()->where(['parent_id' => $first_child_id])
  96. // ->select('id, user_id')->asArray()->all();
  97. // $second_child_id = array_column($second_child, 'id');
  98. // $second_child_user_id = array_column($second_child, 'user_id');
  99. //
  100. // $group_purchase_child_data_id = array_merge($first_child_id, $second_child_id);
  101. //
  102. // $group_purchase_child_data_user_id = array_merge($first_child_user_id, $second_child_user_id);
  103. // $group_purchase_child_data_id = array_unique($group_purchase_child_data);
  104. $item['group_purchase_child_count'] = count($group_purchase_child_data_id);
  105. $item['group_purchase_child_list'] = [];
  106. foreach ($group_purchase_child_data_user_id as $purchase_user_id_item) {
  107. $item['group_purchase_child_list'][] = User::find()->alias('u')
  108. ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile = u.binding')
  109. ->where(['u.id' => $purchase_user_id_item, 'u.is_delete' => 0, 'su.is_delete' => 0])
  110. ->select('su.name, su.avatar, su.mobile')->asArray()->one();
  111. }
  112. $group_support_child_data = ShareGroupSupportLog::find()->where(['parent_user_id' => $item['user_id']])
  113. ->select('user_id')->column();
  114. $item['group_support_child_count'] = count($group_support_child_data);
  115. $child_list = User::find()->alias('u')
  116. ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile = u.binding')
  117. ->where(['u.id' => $group_support_child_data, 'u.is_delete' => 0, 'su.is_delete' => 0])
  118. ->select('su.name, su.avatar, su.mobile')->asArray()->all();
  119. $item['group_support_child_list'] = $child_list;
  120. }
  121. return [
  122. 'code' => 0,
  123. 'msg' => 'success',
  124. 'data' => $pagination
  125. ];
  126. } catch (\Exception $e) {
  127. return [
  128. 'code' => 1,
  129. 'msg' => $e->getMessage()
  130. ];
  131. }
  132. }
  133. //拼购记录
  134. public function amountList() {
  135. try {
  136. $order_no = $this->order_no;
  137. $nickname = $this->nickname;
  138. $mobile = $this->mobile;
  139. $start_time = $this->start_time;
  140. $end_time = $this->end_time;
  141. $store_id = $this->store_id;
  142. $query = ShareGroupMoney::find()->alias('sgm')
  143. ->leftJoin(['s' => ShareGroupPurchaseParentLog::tableName()], 's.id = sgm.type_id')
  144. ->leftJoin(['o' => Order::tableName()], 's.order_id = o.id')
  145. ->leftJoin(['u' => User::tableName()], 'sgm.user_id = u.id')
  146. ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile = u.binding')
  147. ->where(['sgm.store_id' => $store_id])
  148. // ->andWhere(['OR',
  149. // ['sgm.type' => ShareGroupMoney::TYPE_DIRECT],
  150. // ['sgm.type' => ShareGroupMoney::TYPE_GROUP, 'profit_type' => ShareGroupMoney::PROFIT_TYPE_COMMON]
  151. // ]);
  152. ->andWhere([
  153. 'sgm.type' => ShareGroupMoney::TYPE_GROUP,
  154. // 'profit_type' => ShareGroupMoney::PROFIT_TYPE_COMMON
  155. ]);
  156. if (!empty($nickname)) {
  157. $query->andWhere(['OR', ['LIKE', 'su.name', $nickname], ['LIKE', 'u.nickname', $nickname]]);
  158. }
  159. if (!empty($mobile)) {
  160. $query->andWhere(['LIKE', 'su.mobile', $mobile]);
  161. }
  162. if (!empty($order_no)) {
  163. $query->andWhere(['OR', ['LIKE', 'o.order_no', $order_no], ['LIKE', 'sgm.group_data', $order_no]]);
  164. }
  165. if (!empty($start_time)) {
  166. $start_time = strtotime($start_time);
  167. $query->andWhere(['>=', 'sgm.created_at', $start_time]);
  168. }
  169. if (!empty($end_time)) {
  170. $end_time = strtotime($end_time);
  171. $query->andWhere(['<=', 'sgm.created_at', $end_time]);
  172. }
  173. $query->select('sgm.id, sgm.amount, sgm.created_at, sgm.type, sgm.is_send,
  174. sgm.send_time, su.name, su.mobile, su.avatar, sgm.group_data, o.id order_id, sgm.amount, sgm.radix, sgm.profit_type')
  175. ->orderBy('sgm.id DESC');
  176. $pagination = pagination_make($query);
  177. foreach ($pagination['list'] as $index => &$item) {
  178. $item['created_at'] = date('Y-m-d H:i:s', $item['created_at']);
  179. $item['send_time'] = $item['send_time'] ? date('Y-m-d H:i:s', $item['send_time']) : '';
  180. $item['type'] = intval($item['type']);
  181. $item['profit_type'] = intval($item['profit_type']);
  182. //查询成团奖人员
  183. $item['group_data'] = json_decode($item['group_data'] ?? '', true) ?: null;
  184. if (!empty($item['group_data'])) {
  185. $item['group_data'] = ShareGroupMoneySub::find()->where(['share_money_id' => $item['id']])
  186. ->select('order_id, amount, radix, is_send')->asArray()->all();
  187. foreach ($item['group_data'] as &$group_item) {
  188. $item_order = Order::findOne($group_item['order_id']);
  189. $parent_user = User::find()->alias('u')
  190. ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile = u.binding')
  191. ->where(['u.id' => $item_order['user_id'], 'u.is_delete' => 0, 'su.is_delete' => 0])
  192. ->select('su.name, su.avatar, su.mobile')->asArray()->one();
  193. $group_item['user_info'] = $parent_user;
  194. $group_item['order_no'] = $item_order->order_no;
  195. $group_item['is_send'] = intval($group_item['is_send']);
  196. }
  197. } else {
  198. $item_order = Order::findOne($item['order_id']);
  199. $parent_user = User::find()->alias('u')
  200. ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile = u.binding')
  201. ->where(['u.id' => $item_order['user_id'], 'u.is_delete' => 0, 'su.is_delete' => 0])
  202. ->select('su.name, su.avatar, su.mobile')->asArray()->one();
  203. $item['group_data'] = [
  204. [
  205. 'user_info' => $parent_user,
  206. 'order_no' => $item_order->order_no,
  207. 'radix' => $item['radix'],
  208. 'amount' => $item['amount'],
  209. 'is_send' => intval($item['is_send'])
  210. ]
  211. ];
  212. }
  213. $item['is_send'] = intval($item['is_send']);
  214. unset($pagination['list'][$index]['radix'], $pagination['list'][$index]['order_id']);
  215. }
  216. return [
  217. 'code' => 0,
  218. 'msg' => 'success',
  219. 'data' => $pagination
  220. ];
  221. } catch (\Exception $e) {
  222. return [
  223. 'code' => 1,
  224. 'msg' => $e->getMessage()
  225. ];
  226. }
  227. }
  228. //分润订单
  229. public function orderAmountList() {
  230. try {
  231. $order_no = $this->order_no;
  232. $goods_name = $this->goods_name;
  233. $start_time = $this->start_time;
  234. $end_time = $this->end_time;
  235. $store_id = $this->store_id;
  236. $status = $this->status;
  237. $query = Order::find()->alias('o')
  238. // ->leftJoin(['s' => ShareGroupPurchaseParentLog::tableName()], 'o.id = s.order_id')
  239. ->leftJoin(['sgm' => ShareGroupMoney::tableName()], 'sgm.order_id = o.id AND sgm.type = ' . ShareGroupMoney::TYPE_DIRECT)
  240. // ->leftJoin(['s_' => ShareGroupSupportLog::tableName()], 'o.id = s_.order_id')
  241. ->leftJoin(['sgm_' => ShareGroupMoney::tableName()], 'sgm_.order_id = o.id AND sgm_.type = ' . ShareGroupMoney::TYPE_SUPPORT)
  242. ->leftJoin(['sgms' => ShareGroupMoneySub::tableName()], 'sgms.order_id = o.id')
  243. ->leftJoin(['od' => OrderDetail::tableName()], 'od.order_id = o.id')
  244. ->where(['o.store_id' => $store_id])->andWhere(['OR', ['>', 'sgm.amount', 0], ['>', 'sgm_.amount', 0], ['>', 'sgms.amount', 0]]);
  245. if (!empty($order_no)) {
  246. $query->andWhere(['LIKE', 'o.order_no', $order_no]);
  247. }
  248. if (!empty($goods_name)) {
  249. $query->andWhere(['OR', ['LIKE', 's.goods_name', $goods_name], ['LIKE', 'sgms.goods_name', $goods_name]]);
  250. }
  251. if (!empty($start_time)) {
  252. $start_time = strtotime($start_time);
  253. $query->andWhere(['>=', 'o.created_at', $start_time]);
  254. }
  255. if (!empty($end_time)) {
  256. $end_time = strtotime($end_time);
  257. $query->andWhere(['<=', 'o.created_at', $end_time]);
  258. }
  259. if (isset($status) && in_array($status, [0, 1])) {
  260. $query->andWhere(['OR', ['sgm.is_send' => $status], ['sgm_.is_send' => $status], ['sgms.is_send' => $status]]);
  261. }
  262. $query->select('o.id, o.order_no, o.created_at, o.user_id');
  263. $query->groupBy('o.id')->orderBy('o.id desc');
  264. $pagination = pagination_make($query);
  265. foreach ($pagination['list'] as &$item) {
  266. $item['created_at'] = date('Y-m-d H:i:s', $item['created_at']);
  267. //计算所有佣金
  268. $item['amount'] = 0;
  269. $item['is_send'] = 1;//假如是发放状态 如果有一个未发放则改为未发放
  270. $item['desc'] = '';
  271. // $item['parent_user_info'] = [
  272. // 'name' => '',
  273. // 'avatar' => '',
  274. // 'mobile' => '',
  275. // ];
  276. $item['amount_detail'] = [];
  277. $parent_user_id = 0;
  278. // $purchaseLog = ShareGroupPurchaseParentLog::findOne(['order_id' => $item['id']]);
  279. // if ($purchaseLog) {
  280. $shareGroupMoney = ShareGroupMoney::findOne(['order_id' => $item['id'], 'type' => ShareGroupMoney::TYPE_DIRECT]);
  281. if ($shareGroupMoney) {
  282. $item['amount'] = bcadd($item['amount'], $shareGroupMoney->amount, 2);
  283. $item['is_send'] = $shareGroupMoney->is_send;
  284. if ($shareGroupMoney->amount > 0) {
  285. $item['desc'] .= "直推佣金:" . ($shareGroupMoney->amount ?: "0") . ';';
  286. $parent_user_id = $shareGroupMoney->user_id;
  287. $user_info = User::find()->alias('u')
  288. ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile = u.binding')
  289. ->where(['u.id' => $parent_user_id, 'u.is_delete' => 0, 'su.is_delete' => 0])
  290. ->select('su.name, su.avatar, su.mobile')->asArray()->one();
  291. $item['amount_detail'][] = [
  292. 'type' => ShareGroupMoney::TYPE_DIRECT,
  293. 'amount' => $shareGroupMoney->amount,
  294. 'type_text' => '直推奖',
  295. 'parent_user_info' => $user_info,
  296. 'is_send' => intval($shareGroupMoney->is_send)
  297. ];
  298. }
  299. }
  300. // }
  301. // $purchaseLog = ShareGroupSupportLog::findOne(['order_id' => $item['id']]);
  302. // if ($purchaseLog) {
  303. $shareGroupMoney = ShareGroupMoney::findOne(['order_id' => $item['id'], 'type' => ShareGroupMoney::TYPE_SUPPORT]);
  304. if ($shareGroupMoney) {
  305. $item['amount'] = bcadd($item['amount'], $shareGroupMoney->amount, 2);
  306. $item['is_send'] = $shareGroupMoney->is_send;
  307. $item['desc'] .= "帮扶佣金:" . $shareGroupMoney->amount . ';';
  308. $parent_user_id = $shareGroupMoney->user_id;
  309. $user_info = User::find()->alias('u')
  310. ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile = u.binding')
  311. ->where(['u.id' => $parent_user_id, 'u.is_delete' => 0, 'su.is_delete' => 0])
  312. ->select('su.name, su.avatar, su.mobile')->asArray()->one();
  313. $item['amount_detail'][] = [
  314. 'type' => ShareGroupMoney::TYPE_SUPPORT,
  315. 'amount' => $shareGroupMoney->amount,
  316. 'type_text' => '帮扶奖',
  317. 'parent_user_info' => $user_info,
  318. 'is_send' => intval($shareGroupMoney->is_send)
  319. ];
  320. }
  321. // }
  322. $money_sub_amount = ShareGroupMoneySub::find()->alias('sb')
  323. ->leftJoin(['s' => ShareGroupMoney::tableName()], 'sb.share_money_id = s.id')
  324. ->where(['sb.order_id' => $item['id'], 's.profit_type' => ShareGroupMoney::PROFIT_TYPE_COMMON])
  325. ->select('sb.amount, sb.is_send, s.user_id')->asArray()->one();
  326. if ($money_sub_amount) {
  327. $item['amount'] = bcadd($item['amount'], $money_sub_amount['amount'] ?? 0, 2);
  328. $item['is_send'] = $money_sub_amount['is_send'];
  329. $item['desc'] .= "成团佣金:" . $money_sub_amount['amount'] ?? 0 . ';';
  330. $parent_user_id = $money_sub_amount['user_id'];
  331. $user_info = User::find()->alias('u')
  332. ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile = u.binding')
  333. ->where(['u.id' => $parent_user_id, 'u.is_delete' => 0, 'su.is_delete' => 0])
  334. ->select('su.name, su.avatar, su.mobile')->asArray()->one();
  335. $item['amount_detail'][] = [
  336. 'type' => ShareGroupMoney::TYPE_GROUP,
  337. 'amount' => $money_sub_amount['amount'] ?? 0,
  338. 'type_text' => '成团奖',
  339. 'parent_user_info' => $user_info,
  340. 'is_send' => intval($money_sub_amount['is_send'])
  341. ];
  342. }
  343. $item['is_send'] = intval($item['is_send']);
  344. $order_detail = OrderDetail::find()->where(['order_id' => $item['id']])
  345. ->select('goods_name, pic, attr, total_price, num')->asArray()->all();
  346. foreach ($order_detail as &$goods_item) {
  347. $goods_item['price'] = bcdiv($goods_item['total_price'], $goods_item['num'], 2);
  348. }
  349. $item['goods_list'] = $order_detail;
  350. $user_info = User::find()->alias('u')
  351. ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile = u.binding')
  352. ->where(['u.id' => $item['user_id'], 'u.is_delete' => 0, 'su.is_delete' => 0])
  353. ->select('su.name, su.avatar, su.mobile')->asArray()->one();
  354. $item['user_info'] = $user_info;
  355. }
  356. return [
  357. 'code' => 0,
  358. 'msg' => 'success',
  359. 'data' => $pagination
  360. ];
  361. } catch (\Exception $e) {
  362. return [
  363. 'code' => 1,
  364. 'msg' => $e->getMessage()
  365. ];
  366. }
  367. }
  368. //复购记录
  369. public function orderRepeatLog() {
  370. try {
  371. $store_id = $this->store_id;
  372. $order_no = $this->order_no;
  373. $goods_name = $this->goods_name;
  374. $nickname = $this->nickname;
  375. $mobile = $this->mobile;
  376. $start_time = $this->start_time;
  377. $end_time = $this->end_time;
  378. $query = ShareGroupPurchaseParentLog::find()->alias('s')
  379. ->leftJoin(['o' => Order::tableName()], 's.order_id = o.id')
  380. ->leftJoin(['od' => OrderDetail::tableName()], 'od.order_id = o.id')
  381. ->leftJoin(['u' => User::tableName()], 'o.user_id = u.id')
  382. ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile = u.binding')
  383. ->where(['s.store_id' => $store_id, 's.is_repeat' => 1]);
  384. if (!empty($order_no)) {
  385. $query->andWhere(['LIKE', 'o.order_no', $order_no]);
  386. }
  387. if (!empty($goods_name)) {
  388. $query->andWhere(['LIKE', 's.goods_name', $goods_name]);
  389. }
  390. if (!empty($nickname)) {
  391. $query->andWhere(['OR', ['LIKE', 'su.name', $nickname], ['LIKE', 'u.nickname', $nickname]]);
  392. }
  393. if (!empty($mobile)) {
  394. $query->andWhere(['LIKE', 'su.mobile', $mobile]);
  395. }
  396. if (!empty($start_time)) {
  397. $start_time = strtotime($start_time);
  398. $query->andWhere(['>=', 'o.created_at', $start_time]);
  399. }
  400. if (!empty($end_time)) {
  401. $end_time = strtotime($end_time);
  402. $query->andWhere(['<=', 'o.created_at', $end_time]);
  403. }
  404. $query->select('o.id, o.order_no, o.created_at, o.user_id, su.name, su.mobile, su.avatar, s.order_detail_id, s.is_auto_repeat');
  405. $query->groupBy('s.id')->orderBy('o.id desc');
  406. $pagination = pagination_make($query);
  407. foreach ($pagination['list'] as &$item) {
  408. $item['created_at'] = date('Y-m-d H:i:s', $item['created_at']);
  409. $item['order_detail_id'] = explode(',', $item['order_detail_id']);
  410. $order_detail = OrderDetail::find()->where(['order_id' => $item['id'], 'id' => $item['order_detail_id']])
  411. ->select('goods_name, pic, attr, total_price')->asArray()->all();
  412. $item['total_price'] = 0;
  413. foreach ($order_detail as $order_detail_item) {
  414. $item['total_price'] = bcadd($item['total_price'], $order_detail_item['total_price'], 2);
  415. }
  416. $item['goods_list'] = $order_detail;
  417. $item['is_auto_repeat'] = intval($item['is_auto_repeat']);
  418. }
  419. return [
  420. 'code' => 0,
  421. 'msg' => 'success',
  422. 'data' => $pagination
  423. ];
  424. } catch (\Exception $e) {
  425. return [
  426. 'code' => 1,
  427. 'msg' => $e->getMessage()
  428. ];
  429. }
  430. }
  431. //拼购区公排列表
  432. public function groupList() {
  433. $store_id = $this->store_id;
  434. $order_no = $this->order_no;
  435. $batch_id = $this->batch_id ?: 0;
  436. $child_level = $this->child_level;
  437. $nickname = $this->nickname;
  438. $mobile = $this->mobile;
  439. $team_group = ShareGroupPurchaseParentLog::find()->alias('p')
  440. ->leftJoin(['o' => Order::tableName()], 'p.order_id = o.id')
  441. ->leftJoin(['u' => User::tableName()], 'o.user_id = u.id')
  442. ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile = u.binding')
  443. ->where(['p.store_id' => $store_id, 'p.parent_id' => 0])
  444. ->select('p.id, o.order_no, u.nickname, su.mobile')->asArray()->all();
  445. foreach ($team_group as &$team_group_item) {
  446. $team_group_item['max_level'] = ShareGroupPurchaseParentLog::find()
  447. ->where(['batch_id' => $team_group_item['id']])->select('child_level')->max('child_level');
  448. }
  449. $query = ShareGroupPurchaseParentLog::find()->alias('p')
  450. ->leftJoin(['o' => Order::tableName()], 'p.order_id = o.id')
  451. ->leftJoin(['u' => User::tableName()], 'o.user_id = u.id')
  452. ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile = u.binding')
  453. ->where(['p.store_id' => $store_id]);
  454. if ($child_level) {
  455. $query->andWhere(['p.child_level' => $child_level]);
  456. }
  457. if (!empty($order_no)) {
  458. $query->andWhere(['LIKE', 'o.order_no', $order_no]);
  459. }
  460. if (!empty($nickname)) {
  461. $query->andWhere(['LIKE', 'u.nickname', $nickname]);
  462. }
  463. if (!empty($mobile)) {
  464. $query->andWhere(['LIKE', 'su.mobile', $mobile]);
  465. }
  466. if (!empty($batch_id)) {
  467. $query->andWhere(['OR', ['p.batch_id' => $batch_id], ['p.id' => $batch_id]]);
  468. }
  469. if (empty($order_no) && empty($nickname) && empty($mobile) && empty($batch_id)) {
  470. $query->andWhere(['p.batch_id' => 0]);
  471. }
  472. $query->select('p.id, p.order_id, o.order_no, p.user_id, u.nickname, su.mobile, u.avatar_url avatar, p.child_level,
  473. p.points, p.created_at, p.parent_user_id, p.batch_id, p.parent_id')
  474. ->orderBy('p.child_level ASC, p.points ASC');
  475. $pagination = pagination_make($query);
  476. foreach ($pagination['list'] as &$item) {
  477. $item['is_support'] = 0;
  478. $item['created_at'] = date('Y-m-d H:i:s', $item['created_at']);
  479. //订单上级信息
  480. $user_info = [
  481. 'nickname' => '',
  482. 'mobile' => ''
  483. ];
  484. $shareGroupPurchaseParentLog = ShareGroupPurchaseParentLog::findOne($item['parent_id']);
  485. if ($shareGroupPurchaseParentLog) {
  486. $order = Order::findOne($shareGroupPurchaseParentLog->order_id);
  487. $user_info = User::find()->alias('u')
  488. ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile = u.binding')
  489. ->where(['u.id' => $shareGroupPurchaseParentLog->user_id, 'u.is_delete' => 0, 'su.is_delete' => 0])
  490. ->select('u.nickname, su.mobile')->asArray()->one();
  491. $user_info['order_no'] = $order->order_no;
  492. }
  493. $item['parent_user'] = $user_info;
  494. //佣金信息
  495. $money_purchase = ShareGroupMoneySub::find()->alias('ss')
  496. ->leftJoin(['s' => ShareGroupMoney::tableName()], 's.id = ss.share_money_id')
  497. ->leftJoin(['p' => ShareGroupPurchaseParentLog::tableName()], 'p.id = s.type_id')
  498. ->leftJoin(['u' => User::tableName()], 'p.user_id = u.id')
  499. ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile = u.binding')
  500. ->where([
  501. 'ss.order_id' => $item['order_id'],
  502. 's.profit_type' => ShareGroupMoney::PROFIT_TYPE_COMMON
  503. ])->select('ss.amount, ss.is_send, u.nickname, u.avatar_url, su.mobile, ss.created_at, p.points, p.child_level')
  504. ->orderBy('p.child_level ASC, p.points ASC')->asArray()->all();
  505. $item['amount'] = 0;
  506. foreach ($money_purchase as &$money_purchase_item) {
  507. $money_purchase_item['is_send'] = intval($money_purchase_item['is_send']);
  508. $item['amount'] = bcadd($item['amount'], $money_purchase_item['amount'], 2);
  509. $money_purchase_item['created_at'] = date('Y-m-d H:i:s', $money_purchase_item['created_at']);
  510. }
  511. $item['money_purchase'] = $money_purchase;
  512. }
  513. $pagination['team_group'] = $team_group;
  514. return [
  515. 'code' => 0,
  516. 'msg' => 'success',
  517. 'data' => $pagination
  518. ];
  519. }
  520. //
  521. }