ShareForm.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  1. <?php
  2. /**
  3. * 重庆赤晓店信息科技有限公司
  4. * https://www.chixiaodian.com
  5. * Copyright (c) 2023 赤店商城 All rights reserved.
  6. */
  7. namespace app\modules\alliance\models;
  8. use app\models\BusinessMemberOrder;
  9. use app\models\Cash;
  10. use app\models\Option;
  11. use app\models\Order;
  12. use app\models\SaasShareMoney;
  13. use app\models\SaasUserPriceLog;
  14. use app\models\Share;
  15. use app\models\Store;
  16. use app\models\User;
  17. use app\models\SaasUser;
  18. use app\models\SharingReceiver;
  19. use app\models\UserShareMoney;
  20. use app\modules\alliance\models\ApiModel;
  21. use yii\helpers\Json;
  22. class ShareForm extends ApiModel
  23. {
  24. public $share;
  25. public $saas_id;
  26. public $store_id;
  27. public $user_id;
  28. public $name;
  29. public $mobile;
  30. public $agree;
  31. public $form_id;
  32. /**
  33. * 场景说明:NONE_CONDITION:无条件; APPLY:需要申请
  34. * @return array
  35. */
  36. public function rules()
  37. {
  38. return [
  39. [['name', 'mobile', 'agree'], 'required', 'on' => 'APPLY'],
  40. [['agree'], 'integer'],
  41. [['name', 'mobile', 'form_id'], 'trim'],
  42. [['mobile'], 'match', 'pattern' => "/\+?\d[\d -]{8,12}\d/", 'message' => '手机号错误', 'on' => 'APPLY']
  43. ];
  44. }
  45. public function attributeLabels()
  46. {
  47. return [
  48. 'name' => '真实姓名',
  49. 'mobile' => '手机号'
  50. ];
  51. }
  52. /**
  53. * 获取分销配置
  54. * @return array
  55. */
  56. public function getShareSetting() {
  57. $saas_info = get_saas_user();
  58. //$saas_id = 83;
  59. //$saas_info = SaasUser::find()->where(['id'=>$saas_id])->one();
  60. $data = [];
  61. $data['price'] = $saas_info->price;
  62. $data['total_price'] = $saas_info->total_price;
  63. $data['name'] = $saas_info->name;
  64. $data['avatar'] = $saas_info->avatar;
  65. if($saas_info->parent_id > 0){
  66. $parentSaas = SaasUser::findOne($saas_info->parent_id);
  67. $data['parent_name'] = isset($parentSaas->name) ? $parentSaas->name : '';
  68. }else{
  69. $data['parent_name'] = '';
  70. }
  71. // $receiverInfo = SharingReceiver::find()->where(['saas_id'=>$saas_info->id,'is_delete'=>0,'from'=>1])->andWhere(['AND', [
  72. // 'is_pay'=>[0,1]
  73. // ], ['>', 'saas_id', 0]])->asArray()->all();
  74. // $total = $finish = $nofinish = $num = 0;
  75. // foreach($receiverInfo as $val){
  76. // $num += 1;
  77. // $total += $val['amount'];
  78. // if($val['is_pay'] == 0){
  79. // $nofinish += $val['amount'];
  80. // }
  81. // if($val['is_pay'] == 1){
  82. // $finish += $val['amount'];
  83. // }
  84. // }
  85. // $data['distribution_num'] = $num;
  86. // $data['nofinish'] = $nofinish;
  87. // $data['finish'] = $finish;
  88. $data['distribution_num'] = SharingReceiver::find()->alias('sr')->leftJoin(['s' => Store::tableName()], 'sr.store_id = s.id')
  89. ->leftJoin(['su' => SaasUser::tableName()], 'sr.saas_id = su.id')
  90. ->where(['sr.is_delete' => 0, 'sr.from' => SharingReceiver::FROM_STORE, 'su.id' => get_saas_user_id()])->count();
  91. //昨天
  92. $yesterday = strtotime( date("Y-m-d",strtotime("-1 day")) );
  93. //$levelSaasIds = SaasUser::find()->where(['parent_id'=>$saas_info->id])->select('id')->asArray()->all();
  94. //会员卡订单信息
  95. //if(count($levelSaasIds)>0){
  96. //$levelSaasIds = array_column($levelSaasIds,'id');
  97. $levelInfo = SaasShareMoney::find()->where(['saas_id'=>$saas_info->id,'is_delete'=>0])->asArray()->all();
  98. $data['level_num'] = count($levelInfo);
  99. $dayLevelInfo = SaasShareMoney::find()->where(['saas_id'=>$saas_info->id,'is_delete'=>0])->andWhere(['>=','created_at',$yesterday])->andWhere(['<=','created_at',$yesterday+86400])->asArray()->all();
  100. $data['day_level_num'] = count($dayLevelInfo);
  101. // }else{
  102. // $data['level_num'] = $data['day_level_num'] = 0;
  103. // }
  104. //联盟分销
  105. $data['level_sales_num'] = SharingReceiver::find()->alias('sr')->leftJoin(['s' => Store::tableName()], 'sr.store_id = s.id')
  106. //->leftJoin(['su' => SaasUser::tableName()], 'sr.user_id = su.id')
  107. ->leftJoin(['su' => SaasUser::tableName()], 'sr.saas_id = su.id')
  108. ->where(['sr.is_delete' => 0, 'sr.from' => SharingReceiver::FROM_PLATFORM, 'su.id' => get_saas_user_id()])->count();
  109. //联盟分销
  110. $data['self_sales_num'] = SharingReceiver::find()->alias('sr')->leftJoin(['s' => Store::tableName()], 'sr.store_id = s.id')
  111. //->leftJoin(['su' => SaasUser::tableName()], 'sr.user_id = su.id')
  112. ->leftJoin(['su' => SaasUser::tableName()], 'sr.saas_id = su.id')
  113. ->where(['sr.is_delete' => 0, 'sr.from' => SharingReceiver::FROM_SELF, 'su.id' => get_saas_user_id()])->count();
  114. // $data['level_sales_num'] = SharingReceiver::find()->where(['saas_id'=>$saas_info->id,'is_delete' => 0])->count();
  115. // $data['day_level_sales_num'] = SharingReceiver::find()->where(['saas_id'=>$saas_info->id,'is_delete' => 0])->andWhere(['>=','updated_at',$yesterday])->andWhere(['<=','updated_at',$yesterday+86400])->count();
  116. // $users = User::find()->where(['binding'=>$saas_info->mobile,'is_delete'=>0])->select('id')->asArray()->all();
  117. // if(!empty($users) && count($users)>0 ){
  118. // $data['level_sales_num'] = UserShareMoney::find()->where(['user_id'=>array_column($users,'id'),'is_delete'=>0])->groupBy('order_id')->count();
  119. // $data['day_level_sales_num'] = UserShareMoney::find()->where(['user_id'=>array_column($users,'id'),'is_delete'=>0])->andWhere(['>=','created_at',$yesterday])->andWhere(['<=','created_at',$yesterday+86400])->groupBy('order_id')->count();
  120. // }else{
  121. // $data['level_sales_num'] = $data['day_level_sales_num'] = 0;
  122. // }
  123. //推荐店铺订单
  124. $data['recommend_num'] = SharingReceiver::find()->where(['saas_id'=>$saas_info->id,'is_delete' => 0, 'from' => SharingReceiver::FROM_NEW_STORE_RECOMMEND])
  125. ->count();
  126. $data['day_recommend_num'] = SharingReceiver::find()->where(['saas_id'=>$saas_info->id,'is_delete' => 0, 'from' => SharingReceiver::FROM_NEW_STORE_RECOMMEND])
  127. ->andWhere(['>=','updated_at',$yesterday])->andWhere(['<=','updated_at',$yesterday+86400])->count();
  128. //到账
  129. $data['to_account'] = $data['total_price'] - $data['price'] + $data['finish'];
  130. //供货商推荐人订单数量
  131. $data['supplier_recommend_num'] = SaasUserPriceLog::find()->where([
  132. 'saas_id' => $saas_info->id,
  133. 'amount_type' => SaasUserPriceLog::AMOUNT_TYPE_SUPPLIER_PARENT,
  134. 'log_type' => SaasUserPriceLog::LOG_TYPE_INCOME,
  135. ])->count();
  136. //灵活分润
  137. $data['custom_sharing_num'] = SharingReceiver::find()->where(['saas_id'=>$saas_info->id,'is_delete' => 0, 'from' => SharingReceiver::FROM_CUSTOM])->count();;
  138. return ['code' => 0, 'msg' => 'success', 'data' => $data];
  139. }
  140. /**
  141. * 获取分销配置
  142. * @return array
  143. */
  144. public function getShareMsg() {
  145. $setting = Option::get('share_basic_setting', $this->store_id);
  146. $share_basic_setting = $setting ? Json::decode($setting['value']) : [];
  147. $money_setting = Option::get('share_money_setting', $this->store_id);
  148. $share_money_setting = $money_setting ? Json::decode($money_setting['value']) : [];
  149. $arr['first'] = $share_money_setting['level_one']['value'] ?? '';
  150. $arr['second'] = $share_money_setting['level_two']['value'] ?? '';
  151. $arr['third'] = $share_money_setting['level_three']['value'] ?? '';
  152. $arr['store_id'] = $this->store_id;
  153. $arr['level'] = $share_basic_setting['level']['value'] ?? '';
  154. $arr['condition'] = $share_basic_setting['condition']['value'] ?? '';
  155. $arr['share_condition'] = $share_basic_setting['share_condition']['value'] ?? 2;
  156. // 无需审核,判断是否需要其他条件
  157. if ($arr['share_condition'] == 2) {
  158. $exit = Share::find()->andWhere(['user_id' => get_user_id(), 'store_id' => $this->store_id, 'is_delete' => 0,
  159. 'status' => 1])->exists();
  160. if (!$exit && ($share_basic_setting['auto_share_val']['value'] > 0 || $share_basic_setting['share_goods_status'] !=0 )) {
  161. return [
  162. 'code' => 1,
  163. 'msg' => $share_basic_setting['auto_share_val']['value'] > 0 ? '条件不满足,请消费'.$share_basic_setting['auto_share_val']['value'].'元': '请购买指定商品'
  164. ];
  165. }
  166. }
  167. return ['code' => 0, 'msg' => 'success'];
  168. }
  169. /**
  170. * @return array
  171. * 获取佣金相关信息
  172. */
  173. public function getPrice()
  174. {
  175. $saas = SaasUser::find()->where(['id' => $this->saas_id])->one();
  176. $list = Cash::find()->where(['saas_id' => $this->saas_id, 'is_delete' => 0])->asArray()->all();
  177. $new_list = [];
  178. $new_list['total_price'] = $saas->total_price;//分销佣金
  179. $new_list['price'] = $saas->price;
  180. $new_list['cash_price'] = 0;//已提现
  181. $new_list['un_pay'] = 0;//未审核
  182. $new_list['total_cash'] = 0;//提现明细
  183. foreach ($list as $index => $value) {
  184. if ($value['status'] == 1) {
  185. $new_list['un_pay'] = round(($new_list['un_pay'] + $value['price']), 2);
  186. $new_list['total_cash'] = round(($new_list['total_cash'] + $value['price']), 2);
  187. } elseif ($value['status'] == 2 || $value['status'] == 5) {
  188. $new_list['cash_price'] = round(($new_list['cash_price'] + $value['price']), 2);
  189. $new_list['total_cash'] = round(($new_list['total_cash'] + $value['price']), 2);
  190. }
  191. }
  192. return $new_list;
  193. }
  194. /**
  195. * @return array|null|\yii\db\ActiveRecord
  196. *
  197. */
  198. public function getCash()
  199. {
  200. $list = User::find()->alias('u')
  201. ->where(['u.is_delete' => 0, 'u.store_id' => $this->store_id, 'u.id' => $this->user_id])
  202. ->leftJoin('{{%cash}} c', 'c.user_id=u.id and c.is_delete=0')
  203. ->select([
  204. 'u.total_price', 'u.price',
  205. 'sum(case when c.status = 2 then c.price else 0 end) cash_price',
  206. 'sum(case when c.status = 1 then c.price else 0 end) un_pay'
  207. ])->groupBy('c.user_id')->asArray()->one();
  208. return $list;
  209. }
  210. }