AgencyForm.php 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233
  1. <?php
  2. /**
  3. * 重庆赤晓店信息科技有限公司
  4. * https://www.chixiaodian.com
  5. * Copyright (c) 2023 赤店商城 All rights reserved.
  6. */
  7. namespace app\modules\client\models\v1;
  8. use app\models\Admin;
  9. use app\models\Order;
  10. use app\models\SaasCategory;
  11. use app\models\Salesman;
  12. use app\models\SharingReceiver;
  13. use app\models\Store;
  14. use app\models\StoreReOrder;
  15. use app\models\StoreShareMoney;
  16. use app\models\User;
  17. use app\models\UserShareMoney;
  18. use yii\base\Model;
  19. use yii\data\Pagination;
  20. use yii\db\Expression;
  21. class AgencyForm extends Model
  22. {
  23. public $page = 1;
  24. public $limit = 5;
  25. public $type = 0;
  26. public function rules()
  27. {
  28. return [
  29. [['page','limit','type'],'integer']
  30. ];
  31. }
  32. //下级店铺
  33. public function lowerLevelShop(){
  34. $saas_user_id = get_saas_user_id();
  35. $admin = Admin::find()->where(['saas_user_id'=>$saas_user_id,'is_delete'=>0])->one();
  36. $sales_man_ids = Salesman::find()->where(['admin_id'=>$admin->id,'is_delete'=>0])->select("id")->column();
  37. $store = Store::find()->where(['is_delete'=>0]);
  38. if ($admin->area_level == 1) {
  39. //查找区代店铺
  40. $store->andWhere([
  41. 'or',
  42. ['province_id' => $admin->province_id, 'city_id' => $admin->city_id, 'district_id' => $admin->district_id],
  43. ['in', 'salesman_id', $sales_man_ids]
  44. ]);
  45. } elseif ($admin->area_level == 2) {
  46. //查找市代
  47. $store->andWhere([
  48. 'or',
  49. ['province_id' => $admin->province_id,'city_id' => $admin->city_id],
  50. ['in', 'salesman_id', $sales_man_ids]
  51. ]);
  52. } elseif ($admin->area_level == 3) {
  53. //查找省代
  54. $store->andWhere([
  55. 'or',
  56. ['province_id' => $admin->province_id],
  57. ['in', 'salesman_id', $sales_man_ids]
  58. ]);
  59. } else {
  60. if ($admin->id) {
  61. $store->andWhere([
  62. 'or',
  63. ['admin_id' => $admin->id],
  64. ['in', 'salesman_id', $sales_man_ids]
  65. ]);
  66. }
  67. }
  68. $count = $store->count();
  69. $pagination = new Pagination(['totalCount' => $count, 'page' => 0, 'pageSize' => $this->page * 10]);
  70. /* @var Order[] $list */
  71. $store_list = $store->limit($pagination->limit)->offset($pagination->offset)->orderBy('created_at DESC')->asArray()->all();
  72. foreach($store_list as &$item){
  73. $item['created_at'] = date("Y-m-d",$item['created_at']);
  74. }
  75. return [
  76. 'code'=>0,
  77. 'msg'=>"SUCCESS",
  78. 'data'=>$store_list
  79. ];
  80. }
  81. //店铺订单
  82. public function shopOrder(){
  83. $saas_user_id = get_saas_user_id();
  84. $admin = Admin::find()->where(['saas_user_id' => $saas_user_id, 'is_delete' => 0])->one();
  85. $sales_man_ids = Salesman::find()->where(['admin_id' => $admin->id, 'is_delete' => 0])->select("id")->column();
  86. $store_ids = Store::find()->where(['is_delete'=>0]);
  87. if($admin->area_level == 1){
  88. //查找区代店铺
  89. $store_ids->andWhere([
  90. 'or',
  91. ['province_id' => $admin->province_id,'city_id' => $admin->city_id,'district_id' => $admin->district_id],
  92. ['in', 'salesman_id', $sales_man_ids]
  93. ]);
  94. } elseif ($admin->area_level == 2) {
  95. //查找市代
  96. $store_ids->andWhere([
  97. 'or',
  98. ['province_id' => $admin->province_id,'city_id' => $admin->city_id],
  99. ['in', 'salesman_id', $sales_man_ids]
  100. ]);
  101. } elseif ($admin->area_level == 3) {
  102. //查找省代
  103. $store_ids->andWhere([
  104. 'or',
  105. ['province_id' => $admin->province_id],
  106. ['in', 'salesman_id', $sales_man_ids]
  107. ]);
  108. } else {
  109. if ($admin->id) {
  110. $store_ids->andWhere([
  111. 'or',
  112. ['admin_id' => $admin->id],
  113. ['in', 'salesman_id', $sales_man_ids]
  114. ]);
  115. }
  116. }
  117. $store_ids = $store_ids->select('id')->column();
  118. $query = Order::find()->where(['is_delete'=>0,'store_id'=>$store_ids])->select('id,order_no,store_id,name,created_at,is_pay,pay_price,ag_rebate as amount');//->asArray()->all();
  119. // $query = Store::find()->where(['salesman_id'=>$sales_man_ids,'is_delete'=>0])->select('id,name,logo');//->asArray()->all();
  120. $query->with(['store'=>function($query){
  121. $query->select('id,name,logo')->asArray();
  122. }]);
  123. $count = $query->count();
  124. $pagination = new Pagination(['totalCount' => $count, 'page' => 0, 'pageSize' => $this->page * 10]);
  125. /* @var Order[] $list */
  126. $order_list = $query->limit($pagination->limit)->offset($pagination->offset)->orderBy('created_at DESC')->asArray()->all();
  127. foreach($order_list as &$o){
  128. $o['created_at'] = date("Y-m-d H:i:s",$o['created_at']);
  129. }
  130. return [
  131. 'code'=>0,
  132. 'msg'=>"SUCCESS",
  133. 'data'=>$order_list
  134. ];
  135. }
  136. //店铺续费订单
  137. public function storeReOrder(){
  138. $saas_user_id = get_saas_user_id();
  139. $admin = Admin::find()->where(['saas_user_id'=>$saas_user_id,'is_delete'=>0])->one();
  140. $sales_man_ids = Salesman::find()->where(['admin_id'=>$admin->id,'is_delete'=>0])->select("id")->column();
  141. $store_ids =Store::find()->where(['is_delete'=>0]);
  142. if($admin_model->area_level == 1){
  143. //查找区代店铺
  144. if ($admin->id) {
  145. $store_ids->andWhere([
  146. 'or',
  147. ['province_id' => $admin_model->province_id,'city_id' => $admin_model->city_id,'district_id' => $admin_model->district_id],
  148. ['in', 'salesman_id', $sales_man_ids]
  149. ]);
  150. }
  151. }else if($admin_model->area_level == 2){
  152. //查找市代
  153. if ($admin->id) {
  154. $store_ids->andWhere([
  155. 'or',
  156. ['province_id' => $admin_model->province_id,'city_id' => $admin_model->city_id],
  157. ['in', 'salesman_id', $sales_man_ids]
  158. ]);
  159. }
  160. }else if($admin_model->area_level == 3) {
  161. //查找省代
  162. if ($admin->id) {
  163. $store_ids->andWhere([
  164. 'or',
  165. ['province_id' => $admin_model->province_id],
  166. ['in', 'salesman_id', $sales_man_ids]
  167. ]);
  168. }
  169. }else{
  170. //啥也不是
  171. }
  172. // if ($admin->id) {
  173. // $store_ids->andWhere([
  174. // 'or',
  175. // ['admin_id' => $admin->id],
  176. // ['in', 'salesman_id', $sales_man_ids]
  177. // ]);
  178. // }
  179. $store_ids = $store_ids->select('id')->column();
  180. $query = StoreReOrder::find()->where(['store_id'=>$store_ids,'is_pay'=>1])->select('id,order_no,total_price,desc,store_id,', new Expression('FROM_UNIXTIME(created_at,"%Y-%m-%d %H:%i:%s") as created_at,'));//->asArray()->all();
  181. $query->with(['store'=>function($query){
  182. $query->with(['admin'=>function($querys){
  183. $querys->select('name')->asArray();
  184. }])->select("id,name,logo,admin_id")->asArray();
  185. }]);
  186. $count = $query->count();
  187. $pagination = new Pagination(['totalCount' => $count, 'page' => 0, 'pageSize' => $this->page * 10]);
  188. $order = $query->limit($pagination->limit)->offset($pagination->offset)->orderBy('created_at DESC')->asArray()->all();
  189. return [
  190. 'code'=>0,
  191. 'msg'=>"SUCCESS",
  192. 'data'=>$order
  193. ];
  194. }
  195. //分佣
  196. public function commission(){
  197. $saas_user = get_saas_user();
  198. //店铺入驻费用返利
  199. $query = StoreShareMoney::find()->where(['user_id'=>$saas_user->id,'is_delete'=>0])->select('id,store_id,commission as money,order_id,created_at')
  200. ->with(['store'=>function($query){
  201. $query->select('id,name,logo')->asArray();
  202. }]);
  203. if($this->type*1 === 0){
  204. $query->with(['order'=>function($query){
  205. $query->select('id,order_no,total_price')->asArray();
  206. }])->andWhere(['type' => 1]);
  207. }else{
  208. //店铺入驻费用返利
  209. $query->with(['reorder'=>function($query){
  210. $query->select('id,order_no,total_price')->asArray();
  211. }])->andWhere(['type' => 0]);
  212. }
  213. $query->orderBy("created_at desc");
  214. $count = $query->count();
  215. $pagination = new Pagination(['totalCount' => $count, 'page' => 0, 'pageSize' => $this->page * 10]);
  216. /* @var Order[] $list */
  217. $data = $query->limit($pagination->limit)->offset($pagination->offset)->orderBy('created_at DESC')->asArray()->all();
  218. foreach($data as &$item){
  219. $item['created_at'] = date("Y-m-d H:i:s",$item['created_at']);
  220. $item['order'] = !empty($item['reorder'])?$item['reorder']:$item['order'];
  221. }
  222. return [
  223. 'code'=>0,
  224. 'msg'=>"SUCCESS",
  225. 'data'=>$data
  226. ];
  227. }
  228. }