BusinessMemberForm.php 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  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\BusinessMember;
  9. use app\models\BusinessMemberOrder;
  10. use app\models\Coupon;
  11. use app\models\Store;
  12. use app\models\SaasCoupon;
  13. use app\models\VerifyCard;
  14. use app\models\VerifyCardSale;
  15. use app\models\BusinessRightInfo;
  16. use app\models\Option;
  17. use app\modules\admin\models\BusinessMemberForm as AdminBusinessMemberForm;
  18. use app\models\Order;
  19. use app\models\BusinessRightDuration;
  20. use yii\base\Model;
  21. class BusinessMemberForm extends Model
  22. {
  23. public $member_id;
  24. public $member_type;
  25. public $saas_id;
  26. public function rules()
  27. {
  28. return [
  29. [['member_id','saas_id'], 'number'],
  30. [['member_type'], 'string']
  31. ];
  32. }
  33. public function getAll(){
  34. $saas_id = get_saas_user_id();
  35. $time = time();
  36. //已生效的会员卡信息
  37. $orderInfo = BusinessMemberOrder::find()->where(['saas_id'=>$saas_id,'is_pay'=>1,'is_delete'=>0])->andWhere([">","pay_time",0])
  38. ->andWhere(['or', ['>=','end_time',$time], ['end_time' => 0]])->andWhere(["<=",'begin_time',$time])->asArray()->all();
  39. //$orderInfo = BusinessOrder::find()->asArray()->all();
  40. if(count($orderInfo) > 0){
  41. $existMemberInfo = array_column($orderInfo,NULL,'member_id');
  42. }
  43. $memberInfo = BusinessMember::find()->where(['is_delete'=>0,'status'=>1])->asArray()->all();
  44. foreach($memberInfo as $k=>$v){
  45. if(isset($existMemberInfo[$v['id']]) ){
  46. $businessMemberOrder = BusinessMemberOrder::find()->where(['member_id' => $v['id'], 'is_pay' => 1])->andWhere([">","pay_time",0])
  47. ->andWhere(['or', ['>=','end_time',$time], ['end_time' => 0]])->andWhere(["<=",'begin_time',$time])
  48. ->orderBy('id DESC')->asArray()->one();
  49. $memberInfo[$k]['end_time'] = $businessMemberOrder['end_time'] > 0 ? date('Y-m-d H:i:s', $businessMemberOrder['end_time']) : '永久有效';
  50. $memberInfo[$k]['is_sell'] = 1;
  51. $memberInfo[$k]['member_type_text'] = BusinessMemberOrder::MEMBER_TYPE_ARR[$businessMemberOrder['member_type']];
  52. $memberInfo[$k]['member_type'] = $businessMemberOrder['member_type'];
  53. }else{
  54. $memberInfo[$k]['is_sell'] = 0;
  55. }
  56. if($v['give'] == 1){
  57. //优惠券信息
  58. if($v['give_coupon']){
  59. $couponIds = json_decode($v['coupon_info'],true);
  60. if(count($couponIds) > 0 ){
  61. $couponInfo = Coupon::find()->alias("c")->where(['in','c.id',$couponIds])->andWhere(['c.is_delete'=>0,'c.is_business'=>1])
  62. ->leftJoin(['s' => Store::tableName()], 'c.store_id=s.id')
  63. ->select("c.*,s.logo")
  64. ->asArray()->all();
  65. foreach($couponInfo as $key=>$val){
  66. $is_coupon_info = SaasCoupon::find()->where(['saas_id'=>$saas_id,'coupon_id'=>$val['id'] ])->one();
  67. $couponInfo[$key]['is_sell'] = ($is_coupon_info) ? 1 : 0;
  68. }
  69. $memberInfo[$k]['coupon_info_detail'] = $couponInfo;
  70. $memberInfo[$k]['coupon_info'] = $couponIds;
  71. }
  72. }
  73. //核销卡信息
  74. if($v['give_verify']){
  75. $verifyIds = json_decode($v['verify_info'],true);
  76. if(count($verifyIds) > 0 ){
  77. $verifyInfo = VerifyCard::find()->alias("v")->where(['in','v.id',$verifyIds])->andWhere(['v.is_delete'=>0,'v.is_business'=>1])
  78. ->leftJoin(['s' => Store::tableName()], 'v.store_id=s.id')
  79. ->select("v.*,s.logo")
  80. ->asArray()->all();
  81. foreach($verifyInfo as $key=>$val){
  82. $is_verify_info = VerifyCardSale::find()->where(['saas_id'=>$saas_id,'verify_card_id'=>$val['id'] ])->one();
  83. $verifyInfo[$key]['is_sell'] = ($is_verify_info) ? 1 : 0;
  84. }
  85. $memberInfo[$k]['verify_info_detail'] = $verifyInfo;
  86. $memberInfo[$k]['verify_info'] = $verifyIds;
  87. }
  88. }
  89. }
  90. if($v['sale_info']){
  91. $memberInfo[$k]['sale_info'] = json_decode($v['sale_info'],true);
  92. }
  93. //权利信息
  94. if($v['right_info']){
  95. // $info = BusinessRightInfo::find()->where(['is_delete'=>0])->select("id,name,explanation")->asArray()->all();
  96. $info = BusinessRightInfo::resetRightInfo([], "id,name,explanation");
  97. $rightInfo = json_decode($v['right_info'],true);
  98. $rightInfo = array_column($rightInfo,NULL,'id');
  99. foreach($info as $key=>$val){
  100. if(isset($rightInfo[$val['id']]['icon']) && $rightInfo[$val['id']]['icon']){
  101. $info[$key]['icon'] = $rightInfo[$val['id']]['icon'];
  102. }else{
  103. $info[$key]['icon'] = '';
  104. }
  105. if(isset($rightInfo[$val['id']]['choosed']) && $rightInfo[$val['id']]['choosed']){
  106. $info[$key]['choosed'] = $rightInfo[$val['id']]['choosed'];
  107. }else{
  108. $info[$key]['choosed'] = false;
  109. }
  110. if(isset($rightInfo[$val['id']]['custom_name']) && $rightInfo[$val['id']]['custom_name']){
  111. $info[$key]['custom_name'] = $rightInfo[$val['id']]['custom_name'];
  112. }else{
  113. $info[$key]['custom_name'] = '';
  114. }
  115. if(isset($rightInfo[$val['id']]['custom_explanation']) && $rightInfo[$val['id']]['custom_explanation']){
  116. $info[$key]['custom_explanation'] = $rightInfo[$val['id']]['custom_explanation'];
  117. }else{
  118. $info[$key]['custom_explanation'] = '';
  119. }
  120. }
  121. $memberInfo[$k]['right_info'] = $info;
  122. }
  123. }
  124. return [
  125. 'code' => 0,
  126. 'msg' => '成功',
  127. 'data' => $memberInfo
  128. ];
  129. }
  130. public function checkCanOpenRight($saas_id, $rid) {
  131. $rel = [
  132. 1 => 'consumerRebate',
  133. 2 => 'allianceDistribution',
  134. 3 => 'shopReferrer',
  135. ];
  136. $conf = Option::get('alliance_member_right_conf', -1, 'store', '{}');
  137. $conf = json_decode($conf['value'], true);
  138. if(empty($conf[$rel[$rid]]) || empty($conf[$rel[$rid]]['condition'])){
  139. return [
  140. 'code' => 1,
  141. 'msg' => '权限配置未找到',
  142. ];
  143. }
  144. $iconf = $conf[$rel[$rid]]['condition'];
  145. if(isset($iconf['free']) && intval($iconf['free']) == 0){
  146. if(isset($iconf['consume']) && intval($iconf['consume']) > 0){
  147. $paySum = $this->paySum($saas_id);
  148. if($paySum < intval($iconf['consume'])){
  149. return [
  150. 'code' => 1,
  151. 'msg' => '消费金额不满足条件',
  152. 'paySum' => $paySum,
  153. ];
  154. }
  155. }
  156. }
  157. return [
  158. 'code' => 0,
  159. 'msg' => 'ok',
  160. ];
  161. }
  162. public function paySum($saas_id) {
  163. $res = Order::find()->where([
  164. 'and', [
  165. 'saas_id' => $saas_id,
  166. 'is_pay' => 1,
  167. 'type' => 0,
  168. ],
  169. ['>', 'pay_time', 0],
  170. ])->select('SUM(pay_price) paysum')->scalar();
  171. return $res > 0 ? $res : 0;
  172. }
  173. public function openRight($saas_id, $rid) {
  174. $check = $this->checkCanOpenRight($saas_id, $rid);
  175. if($check['code'] != 0){
  176. return $check;
  177. }
  178. $form = new AdminBusinessMemberForm();
  179. $save = $form->rightDuration($saas_id,$rid,0, BusinessRightDuration::FROM_PAYSUM);
  180. return [
  181. 'code'=> $save ? 0 : 1,
  182. 'msg' => $save ? '成功' : '失败',
  183. ];
  184. }
  185. }