| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191 |
- <?php
- /**
- * 重庆赤晓店信息科技有限公司
- * https://www.chixiaodian.com
- * Copyright (c) 2023 赤店商城 All rights reserved.
- */
- namespace app\modules\alliance\models;
- use app\models\BusinessMember;
- use app\models\BusinessMemberOrder;
- use app\models\Coupon;
- use app\models\Store;
- use app\models\SaasCoupon;
- use app\models\VerifyCard;
- use app\models\VerifyCardSale;
- use app\models\BusinessRightInfo;
- use app\models\Option;
- use app\modules\admin\models\BusinessMemberForm as AdminBusinessMemberForm;
- use app\models\Order;
- use app\models\BusinessRightDuration;
- use yii\base\Model;
- class BusinessMemberForm extends Model
- {
- public $member_id;
- public $member_type;
- public $saas_id;
- public function rules()
- {
- return [
- [['member_id','saas_id'], 'number'],
- [['member_type'], 'string']
- ];
- }
- public function getAll(){
- $saas_id = get_saas_user_id();
- $time = time();
- //已生效的会员卡信息
- $orderInfo = BusinessMemberOrder::find()->where(['saas_id'=>$saas_id,'is_pay'=>1,'is_delete'=>0])->andWhere([">","pay_time",0])
- ->andWhere(['or', ['>=','end_time',$time], ['end_time' => 0]])->andWhere(["<=",'begin_time',$time])->asArray()->all();
- //$orderInfo = BusinessOrder::find()->asArray()->all();
- if(count($orderInfo) > 0){
- $existMemberInfo = array_column($orderInfo,NULL,'member_id');
- }
- $memberInfo = BusinessMember::find()->where(['is_delete'=>0,'status'=>1])->asArray()->all();
- foreach($memberInfo as $k=>$v){
- if(isset($existMemberInfo[$v['id']]) ){
- $businessMemberOrder = BusinessMemberOrder::find()->where(['member_id' => $v['id'], 'is_pay' => 1])->andWhere([">","pay_time",0])
- ->andWhere(['or', ['>=','end_time',$time], ['end_time' => 0]])->andWhere(["<=",'begin_time',$time])
- ->orderBy('id DESC')->asArray()->one();
- $memberInfo[$k]['end_time'] = $businessMemberOrder['end_time'] > 0 ? date('Y-m-d H:i:s', $businessMemberOrder['end_time']) : '永久有效';
- $memberInfo[$k]['is_sell'] = 1;
- $memberInfo[$k]['member_type_text'] = BusinessMemberOrder::MEMBER_TYPE_ARR[$businessMemberOrder['member_type']];
- $memberInfo[$k]['member_type'] = $businessMemberOrder['member_type'];
- }else{
- $memberInfo[$k]['is_sell'] = 0;
- }
- if($v['give'] == 1){
- //优惠券信息
- if($v['give_coupon']){
- $couponIds = json_decode($v['coupon_info'],true);
- if(count($couponIds) > 0 ){
- $couponInfo = Coupon::find()->alias("c")->where(['in','c.id',$couponIds])->andWhere(['c.is_delete'=>0,'c.is_business'=>1])
- ->leftJoin(['s' => Store::tableName()], 'c.store_id=s.id')
- ->select("c.*,s.logo")
- ->asArray()->all();
- foreach($couponInfo as $key=>$val){
- $is_coupon_info = SaasCoupon::find()->where(['saas_id'=>$saas_id,'coupon_id'=>$val['id'] ])->one();
- $couponInfo[$key]['is_sell'] = ($is_coupon_info) ? 1 : 0;
- }
- $memberInfo[$k]['coupon_info_detail'] = $couponInfo;
- $memberInfo[$k]['coupon_info'] = $couponIds;
- }
- }
- //核销卡信息
- if($v['give_verify']){
- $verifyIds = json_decode($v['verify_info'],true);
- if(count($verifyIds) > 0 ){
- $verifyInfo = VerifyCard::find()->alias("v")->where(['in','v.id',$verifyIds])->andWhere(['v.is_delete'=>0,'v.is_business'=>1])
- ->leftJoin(['s' => Store::tableName()], 'v.store_id=s.id')
- ->select("v.*,s.logo")
- ->asArray()->all();
- foreach($verifyInfo as $key=>$val){
- $is_verify_info = VerifyCardSale::find()->where(['saas_id'=>$saas_id,'verify_card_id'=>$val['id'] ])->one();
- $verifyInfo[$key]['is_sell'] = ($is_verify_info) ? 1 : 0;
- }
- $memberInfo[$k]['verify_info_detail'] = $verifyInfo;
- $memberInfo[$k]['verify_info'] = $verifyIds;
- }
- }
- }
- if($v['sale_info']){
- $memberInfo[$k]['sale_info'] = json_decode($v['sale_info'],true);
- }
- //权利信息
- if($v['right_info']){
- // $info = BusinessRightInfo::find()->where(['is_delete'=>0])->select("id,name,explanation")->asArray()->all();
- $info = BusinessRightInfo::resetRightInfo([], "id,name,explanation");
- $rightInfo = json_decode($v['right_info'],true);
- $rightInfo = array_column($rightInfo,NULL,'id');
- foreach($info as $key=>$val){
- if(isset($rightInfo[$val['id']]['icon']) && $rightInfo[$val['id']]['icon']){
- $info[$key]['icon'] = $rightInfo[$val['id']]['icon'];
- }else{
- $info[$key]['icon'] = '';
- }
- if(isset($rightInfo[$val['id']]['choosed']) && $rightInfo[$val['id']]['choosed']){
- $info[$key]['choosed'] = $rightInfo[$val['id']]['choosed'];
- }else{
- $info[$key]['choosed'] = false;
- }
- if(isset($rightInfo[$val['id']]['custom_name']) && $rightInfo[$val['id']]['custom_name']){
- $info[$key]['custom_name'] = $rightInfo[$val['id']]['custom_name'];
- }else{
- $info[$key]['custom_name'] = '';
- }
- if(isset($rightInfo[$val['id']]['custom_explanation']) && $rightInfo[$val['id']]['custom_explanation']){
- $info[$key]['custom_explanation'] = $rightInfo[$val['id']]['custom_explanation'];
- }else{
- $info[$key]['custom_explanation'] = '';
- }
- }
- $memberInfo[$k]['right_info'] = $info;
- }
- }
- return [
- 'code' => 0,
- 'msg' => '成功',
- 'data' => $memberInfo
- ];
- }
- public function checkCanOpenRight($saas_id, $rid) {
- $rel = [
- 1 => 'consumerRebate',
- 2 => 'allianceDistribution',
- 3 => 'shopReferrer',
- ];
- $conf = Option::get('alliance_member_right_conf', -1, 'store', '{}');
- $conf = json_decode($conf['value'], true);
- if(empty($conf[$rel[$rid]]) || empty($conf[$rel[$rid]]['condition'])){
- return [
- 'code' => 1,
- 'msg' => '权限配置未找到',
- ];
- }
- $iconf = $conf[$rel[$rid]]['condition'];
- if(isset($iconf['free']) && intval($iconf['free']) == 0){
- if(isset($iconf['consume']) && intval($iconf['consume']) > 0){
- $paySum = $this->paySum($saas_id);
- if($paySum < intval($iconf['consume'])){
- return [
- 'code' => 1,
- 'msg' => '消费金额不满足条件',
- 'paySum' => $paySum,
- ];
- }
- }
- }
- return [
- 'code' => 0,
- 'msg' => 'ok',
- ];
- }
- public function paySum($saas_id) {
- $res = Order::find()->where([
- 'and', [
- 'saas_id' => $saas_id,
- 'is_pay' => 1,
- 'type' => 0,
- ],
- ['>', 'pay_time', 0],
- ])->select('SUM(pay_price) paysum')->scalar();
- return $res > 0 ? $res : 0;
- }
- public function openRight($saas_id, $rid) {
- $check = $this->checkCanOpenRight($saas_id, $rid);
- if($check['code'] != 0){
- return $check;
- }
- $form = new AdminBusinessMemberForm();
- $save = $form->rightDuration($saas_id,$rid,0, BusinessRightDuration::FROM_PAYSUM);
- return [
- 'code'=> $save ? 0 : 1,
- 'msg' => $save ? '成功' : '失败',
- ];
- }
- }
|