SupportForm.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265
  1. <?php
  2. namespace app\modules\admin\models\shareGroup;
  3. use app\models\Order;
  4. use app\models\SaasUser;
  5. use app\models\ShareGroupMoney;
  6. use app\models\ShareGroupPurchaseParentLog;
  7. use app\models\ShareGroupPurchaseUser;
  8. use app\models\ShareGroupSupportLog;
  9. use app\models\User;
  10. use yii\base\Model;
  11. class SupportForm extends Model
  12. {
  13. public $store_id;
  14. public $order_no;
  15. public $nickname;
  16. public $mobile;
  17. public $start_time;
  18. public $end_time;
  19. public $type;
  20. public $status;
  21. public function rules()
  22. {
  23. return [
  24. [['order_no', 'nickname', 'mobile', 'start_time', 'end_time'], 'string'],
  25. [['store_id', 'type', 'status'], 'integer'],
  26. [['nickname', 'mobile', 'order_no'], 'trim']
  27. ];
  28. }
  29. //帮扶佣金列表
  30. public function amountList() {
  31. try {
  32. $order_no = $this->order_no;
  33. $nickname = $this->nickname;
  34. $mobile = $this->mobile;
  35. $start_time = $this->start_time;
  36. $end_time = $this->end_time;
  37. $store_id = $this->store_id;
  38. //兼容帮扶直推筛选
  39. $type = $this->type;
  40. $query = ShareGroupMoney::find()->alias('sgm')
  41. // ->leftJoin(['s' => ShareGroupSupportLog::tableName()], 's.id = sgm.type_id')
  42. ->leftJoin(['o' => Order::tableName()], 'sgm.order_id = o.id')
  43. ->leftJoin(['u' => User::tableName()], 'sgm.user_id = u.id')
  44. ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile = u.binding')
  45. ->where(['sgm.store_id' => $store_id]);
  46. if (isset($type) && in_array($type, [ShareGroupMoney::TYPE_SUPPORT, ShareGroupMoney::TYPE_DIRECT])) {
  47. $query->andWhere(['sgm.type' => $type]);
  48. } else {
  49. $query->andWhere(['sgm.type' => ShareGroupMoney::TYPE_SUPPORT]);
  50. }
  51. if (!empty($nickname)) {
  52. $query->andWhere(['OR', ['LIKE', 'su.name', $nickname], ['LIKE', 'u.nickname', $nickname]]);
  53. }
  54. if (!empty($mobile)) {
  55. $query->andWhere(['LIKE', 'su.mobile', $mobile]);
  56. }
  57. if (!empty($order_no)) {
  58. $query->andWhere(['LIKE', 'o.order_no', $order_no]);
  59. }
  60. if (!empty($start_time)) {
  61. $start_time = strtotime($start_time);
  62. $query->andWhere(['>=', 'sgm.created_at', $start_time]);
  63. }
  64. if (!empty($end_time)) {
  65. $end_time = strtotime($end_time);
  66. $query->andWhere(['<=', 'sgm.created_at', $end_time]);
  67. }
  68. $query->select('sgm.id, sgm.amount, sgm.radix, sgm.created_at, o.order_no, o.user_id, sgm.type,
  69. sgm.is_send, sgm.send_time, su.name, su.mobile, su.avatar, sgm.freeze_amount, sgm.is_send_freeze')
  70. ->orderBy('sgm.id DESC');
  71. $pagination = pagination_make($query);
  72. foreach ($pagination['list'] as &$item) {
  73. $item['created_at'] = date('Y-m-d H:i:s', $item['created_at']);
  74. $item['send_time'] = $item['send_time'] ? date('Y-m-d H:i:s', $item['send_time']) : '';
  75. $item['type'] = intval($item['type']);
  76. $parent_user = User::find()->alias('u')
  77. ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile = u.binding')
  78. ->where(['u.id' => $item['user_id'], 'u.is_delete' => 0, 'su.is_delete' => 0])
  79. ->select('su.name, su.avatar, su.mobile')->asArray()->one();
  80. $item['buy_user_name'] = $parent_user['name'] ?: '';
  81. if (intval($item['is_send_freeze'])) {
  82. $item['amount'] = bcadd($item['amount'], $item['freeze_amount'], 2);
  83. }
  84. $item['is_send'] = intval($item['is_send']);
  85. }
  86. return [
  87. 'code' => 0,
  88. 'msg' => 'success',
  89. 'data' => $pagination
  90. ];
  91. } catch (\Exception $e) {
  92. return [
  93. 'code' => 1,
  94. 'msg' => $e->getMessage()
  95. ];
  96. }
  97. }
  98. //上级变动记录(帮扶记录)
  99. public function parentSupportLog() {
  100. try {
  101. $nickname = $this->nickname;
  102. $mobile = $this->mobile;
  103. $start_time = $this->start_time;
  104. $end_time = $this->end_time;
  105. $query = ShareGroupSupportLog::find()->alias('s')
  106. ->leftJoin(['u' => User::tableName()], 's.user_id = u.id')
  107. ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile = u.binding')
  108. ->where(['s.store_id' => $this->store_id, 's.purchase_batch_id' => 0]);
  109. if (!empty($nickname)) {
  110. $query->andWhere(['OR', ['LIKE', 'su.name', $nickname], ['LIKE', 'u.nickname', $nickname]]);
  111. }
  112. if (!empty($mobile)) {
  113. $query->andWhere(['LIKE', 'su.mobile', $mobile]);
  114. }
  115. if (!empty($start_time)) {
  116. $start_time = strtotime($start_time);
  117. $query->andWhere(['>=', 's.created_at', $start_time]);
  118. }
  119. if (!empty($end_time)) {
  120. $end_time = strtotime($end_time);
  121. $query->andWhere(['<=', 's.created_at', $end_time]);
  122. }
  123. $query->select('s.id, s.parent_id, s.parent_user_id, su.name, su.mobile, su.avatar, s.created_at, s.user_id')
  124. ->orderBy('s.id DESC');
  125. $pagination = pagination_make($query);
  126. foreach ($pagination['list'] as &$item) {
  127. $item['created_at'] = date('Y-m-d H:i:s', $item['created_at']);
  128. $item['old_parent_user'] = User::find()->alias('u')
  129. ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile = u.binding')
  130. ->where(['u.id' => $item['parent_user_id'], 'u.is_delete' => 0, 'su.is_delete' => 0])
  131. ->select('su.name, su.avatar, su.mobile')->asArray()->one();
  132. $shareGroupPurchaseUser = ShareGroupPurchaseUser::findOne(['user_id' => $item['user_id']]);
  133. $item['parent_user'] = User::find()->alias('u')
  134. ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile = u.binding')
  135. ->where(['u.id' => $shareGroupPurchaseUser->parent_user_id, 'u.is_delete' => 0, 'su.is_delete' => 0])
  136. ->select('su.name, su.avatar, su.mobile')->asArray()->one();
  137. $item['desc'] = '原上级扶持';
  138. }
  139. return [
  140. 'code' => 0,
  141. 'msg' => 'success',
  142. 'data' => $pagination
  143. ];
  144. } catch (\Exception $e) {
  145. return [
  146. 'code' => 1,
  147. 'msg' => $e->getMessage()
  148. ];
  149. }
  150. }
  151. //帮扶佣金冻结列表
  152. public function freezeAmountList() {
  153. try {
  154. $order_no = trim($this->order_no);
  155. $nickname = trim($this->nickname);
  156. $mobile = trim($this->mobile);
  157. $start_time = $this->start_time;
  158. $end_time = $this->end_time;
  159. $store_id = $this->store_id;
  160. $status = $this->status;
  161. $query = ShareGroupMoney::find()->alias('sgm')
  162. ->leftJoin(['s' => ShareGroupSupportLog::tableName()], 's.id = sgm.type_id')
  163. ->leftJoin(['o' => Order::tableName()], 's.order_id = o.id')
  164. ->leftJoin(['u' => User::tableName()], 'sgm.user_id = u.id')
  165. ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile = u.binding')
  166. ->where(['sgm.store_id' => $store_id, 'sgm.is_freeze' => 1]);
  167. if (!empty($nickname)) {
  168. $query->andWhere(['OR', ['LIKE', 'su.name', $nickname], ['LIKE', 'u.nickname', $nickname]]);
  169. }
  170. if (!empty($mobile)) {
  171. $query->andWhere(['LIKE', 'su.mobile', $mobile]);
  172. }
  173. if (!empty($order_no)) {
  174. $query->andWhere(['LIKE', 'o.order_no', $order_no]);
  175. }
  176. if (!empty($start_time)) {
  177. $start_time = strtotime($start_time);
  178. $query->andWhere(['>=', 'sgm.created_at', $start_time]);
  179. }
  180. if (!empty($end_time)) {
  181. $end_time = strtotime($end_time);
  182. $query->andWhere(['<=', 'sgm.created_at', $end_time]);
  183. }
  184. if (isset($status) && in_array($status, [0, 1])) {
  185. $query->andWhere(['sgm.is_send_freeze' => $status]);
  186. }
  187. $query->select('sgm.id, sgm.freeze_amount amount, sgm.radix, sgm.created_at, o.order_no, sgm.type,
  188. sgm.freeze_send_time send_time, su.name, su.mobile, su.avatar, sgm.is_send_freeze, o.user_id')
  189. ->orderBy('sgm.id DESC');
  190. $pagination = pagination_make($query);
  191. foreach ($pagination['list'] as &$item) {
  192. $item['created_at'] = date('Y-m-d H:i:s', $item['created_at']);
  193. $item['send_time'] = $item['send_time'] ? date('Y-m-d H:i:s', $item['send_time']) : '';
  194. $item['type'] = intval($item['type']);
  195. $item['is_send_freeze'] = intval($item['is_send_freeze']);
  196. //下单人信息
  197. $item['user_info'] = User::find()->alias('u')
  198. ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile = u.binding')
  199. ->where(['u.id' => $item['user_id'], 'u.is_delete' => 0, 'su.is_delete' => 0])
  200. ->select('su.name, su.avatar, su.mobile')->asArray()->one();
  201. }
  202. return [
  203. 'code' => 0,
  204. 'msg' => 'success',
  205. 'data' => $pagination
  206. ];
  207. } catch (\Exception $e) {
  208. return [
  209. 'code' => 1,
  210. 'msg' => $e->getMessage()
  211. ];
  212. }
  213. }
  214. }