|
|
@@ -328,7 +328,7 @@ class MemberService extends BaseService
|
|
|
return $info;
|
|
|
}
|
|
|
|
|
|
- $defaultField = ['id', 'user_type', 'realname', 'mobile', 'nickname', 'is_zg_vip', 'zg_vip_expired', 'is_zsb_vip', 'is_zsb_vip', 'zsb_vip_expired', 'is_video_vip', 'video_vip_expired', 'city', 'district', 'balance', 'code', 'openid', 'status', 'avatar'];
|
|
|
+ $defaultField = ['id', 'user_type', 'realname', 'mobile', 'nickname', 'is_vip_1', 'vip_1_expired', 'is_vip_2', 'vip_2_expired', 'is_vip_3', 'vip_3_expired', 'is_vip_4', 'vip_4_expired', 'is_video_vip', 'video_vip_expired', 'city', 'district', 'balance', 'code', 'openid', 'status', 'avatar'];
|
|
|
$field = $field ? $field : $defaultField;
|
|
|
if (is_array($where)) {
|
|
|
$info = $this->model->where(['mark' => 1])->where($where)->select($field)->first();
|
|
|
@@ -352,25 +352,47 @@ class MemberService extends BaseService
|
|
|
|
|
|
$isVip = 0;
|
|
|
$vipExpired = '';
|
|
|
- $isZgVip = isset($info['is_zg_vip']) ? $info['is_zg_vip'] : 0;
|
|
|
- $zgVipExpired = isset($info['zg_vip_expired']) && !empty($info['zg_vip_expired']) ? $info['zg_vip_expired'] : '';
|
|
|
- if ($isZgVip == 1 && $zgVipExpired && $zgVipExpired > date('Y-m-d H:i:s')) {
|
|
|
+ $isVip1 = isset($info['is_vip_1']) ? $info['is_vip_1'] : 0;
|
|
|
+ $vip1Expired = isset($info['vip_1_expired']) && !empty($info['vip_1_expired']) ? $info['vip_1_expired'] : '';
|
|
|
+ if ($isVip1 == 1 && $vip1Expired && $vip1Expired > date('Y-m-d H:i:s')) {
|
|
|
$isVip = 1;
|
|
|
- $isZgVip = 1;
|
|
|
- $vipExpired = $zgVipExpired;
|
|
|
+ $isVip1 = 1;
|
|
|
+ $vipExpired = $vip1Expired;
|
|
|
} else {
|
|
|
- $isZgVip = 0;
|
|
|
+ $isVip1 = 0;
|
|
|
}
|
|
|
|
|
|
- $isZsbVip = isset($info['is_zsb_vip']) ? $info['is_zsb_vip'] : 0;
|
|
|
- $zsbVipExpired = isset($info['zsb_vip_expired']) && !empty($info['zsb_vip_expired']) ? $info['zsb_vip_expired'] : '';
|
|
|
- if ($isZsbVip == 1 && $zsbVipExpired && $zsbVipExpired > date('Y-m-d H:i:s')) {
|
|
|
+ $isVip2 = isset($info['is_vip_2']) ? $info['is_vip_2'] : 0;
|
|
|
+ $vip2Expired = isset($info['vip_2_expired']) && !empty($info['vip_2_expired']) ? $info['vip_2_expired'] : '';
|
|
|
+ if ($isVip2 == 1 && $vip2Expired && $vip2Expired > date('Y-m-d H:i:s')) {
|
|
|
$isVip = 1;
|
|
|
- $vipExpired = $zsbVipExpired > $vipExpired ? $zsbVipExpired : $vipExpired;
|
|
|
+ $isVip2 = 1;
|
|
|
+ $vipExpired = $vip2Expired;
|
|
|
} else {
|
|
|
- $isZsbVip = 0;
|
|
|
+ $isVip2 = 0;
|
|
|
}
|
|
|
|
|
|
+ $isVip3 = isset($info['is_vip_3']) ? $info['is_vip_3'] : 0;
|
|
|
+ $vip3Expired = isset($info['vip_3_expired']) && !empty($info['vip_3_expired']) ? $info['vip_3_expired'] : '';
|
|
|
+ if ($isVip3 == 1 && $vip3Expired && $vip3Expired > date('Y-m-d H:i:s')) {
|
|
|
+ $isVip = 1;
|
|
|
+ $isVip3 = 1;
|
|
|
+ $vipExpired = $vip3Expired;
|
|
|
+ } else {
|
|
|
+ $isVip3 = 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ $isVip4 = isset($info['is_vip_4']) ? $info['is_vip_4'] : 0;
|
|
|
+ $vip4Expired = isset($info['vip_4_expired']) && !empty($info['vip_4_expired']) ? $info['vip_4_expired'] : '';
|
|
|
+ if ($isVip4 == 1 && $vip4Expired && $vip4Expired > date('Y-m-d H:i:s')) {
|
|
|
+ $isVip = 1;
|
|
|
+ $isVip4 = 1;
|
|
|
+ $vipExpired = $vip4Expired;
|
|
|
+ } else {
|
|
|
+ $isVip4 = 0;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
$isVideoVip = isset($info['is_video_vip']) ? $info['is_video_vip'] : 0;
|
|
|
$videoVipExpired = isset($info['video_vip_expired']) && !empty($info['video_vip_expired']) ? $info['video_vip_expired'] : '';
|
|
|
if ($isVideoVip == 1 && $videoVipExpired && $videoVipExpired > date('Y-m-d H:i:s')) {
|
|
|
@@ -380,13 +402,19 @@ class MemberService extends BaseService
|
|
|
}
|
|
|
|
|
|
$info['is_vip'] = $isVip;
|
|
|
- $info['is_zg_vip'] = $isZgVip;
|
|
|
- $info['is_zsb_vip'] = $isZsbVip;
|
|
|
+ $info['is_vip_1'] = $isVip1;
|
|
|
+ $info['is_vip_2'] = $isVip2;
|
|
|
+ $info['is_vip_3'] = $isVip3;
|
|
|
+ $info['is_vip_4'] = $isVip4;
|
|
|
$info['vip_expired'] = $vipExpired;
|
|
|
- $info['zg_vip_expired'] = $zgVipExpired;
|
|
|
- $info['zg_vip_day'] = max(0, intval((strtotime($zgVipExpired) - time()) / 86400));
|
|
|
- $info['zsb_vip_expired'] = $zsbVipExpired;
|
|
|
- $info['zsb_vip_day'] = max(0, intval((strtotime($zsbVipExpired) - time()) / 86400));
|
|
|
+ $info['vip_1_expired'] = $vip1Expired;
|
|
|
+ $info['vip_1_day'] = max(0, intval((strtotime($vip1Expired) - time()) / 86400));
|
|
|
+ $info['vip_2_expired'] = $vip2Expired;
|
|
|
+ $info['vip_2_day'] = max(0, intval((strtotime($vip2Expired) - time()) / 86400));
|
|
|
+ $info['vip_3_expired'] = $vip3Expired;
|
|
|
+ $info['vip_3_day'] = max(0, intval((strtotime($vip3Expired) - time()) / 86400));
|
|
|
+ $info['vip_4_expired'] = $vip4Expired;
|
|
|
+ $info['vip_4_day'] = max(0, intval((strtotime($vip4Expired) - time()) / 86400));
|
|
|
$info['is_video_vip'] = $isVideoVip;
|
|
|
$info['video_vip_expired'] = $videoVipExpired;
|
|
|
$info['video_vip_day'] = max(0, intval((strtotime($videoVipExpired) - time()) / 86400));
|
|
|
@@ -539,21 +567,6 @@ class MemberService extends BaseService
|
|
|
$realname = isset($params['realname']) ? trim($params['realname']) : '';
|
|
|
$university = isset($params['university']) ? trim($params['university']) : '';
|
|
|
$entryType = isset($params['entry_type']) ? intval($params['entry_type']) : 0;
|
|
|
-// if(empty($realname)){
|
|
|
-// $this->error = '请输入姓名';
|
|
|
-// return false;
|
|
|
-// }
|
|
|
-//
|
|
|
-// if(empty($realname)){
|
|
|
-// $this->error = '请输入毕业院校';
|
|
|
-// return false;
|
|
|
-// }
|
|
|
-//
|
|
|
-// if($entryType<=0){
|
|
|
-// $this->error = '请选择报考类型';
|
|
|
-// return false;
|
|
|
-// }
|
|
|
-
|
|
|
// 用户验证
|
|
|
RedisService::set($cacheLockKey.'_temp', ['user_id' => $userId, 'params' => $params], 3600);
|
|
|
RedisService::set($cacheLockKey, ['user_id' => $userId, 'params' => $params], rand(2, 3));
|
|
|
@@ -687,11 +700,6 @@ class MemberService extends BaseService
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
- // if($vipId== 4){
|
|
|
- // $this->error = '套餐价格:'.$price;
|
|
|
- // RedisService::clear($cacheKey . '_lock');
|
|
|
- // return false;
|
|
|
- // }
|
|
|
|
|
|
if ($price <= 0 || $day <= 0) {
|
|
|
$this->error = '该VIP参数错误';
|
|
|
@@ -699,21 +707,25 @@ class MemberService extends BaseService
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
- $showZsb = ConfigService::make()->getConfigByCode('show_zsb_entry', 0);
|
|
|
- if($vipType == 2 && !$showZsb){
|
|
|
+ $showVip = ConfigService::make()->getConfigByCode("show_{$vipType}_entry", 1);
|
|
|
+ if($showVip != 1){
|
|
|
$this->error = '该VIP套餐暂未开放~';
|
|
|
RedisService::clear($cacheKey . '_lock');
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
$info = $this->model->where(['id' => $userId, 'mark' => 1])
|
|
|
- ->select(['id', 'openid', 'mobile', 'is_zg_vip', 'zg_vip_expired', 'is_zsb_vip', 'zsb_vip_expired', 'is_video_vip', 'video_vip_expired', 'status'])
|
|
|
+ ->select(['id', 'openid', 'mobile', 'is_vip_1', 'vip_1_expired', 'is_vip_2', 'vip_2_expired', 'is_vip_3', 'vip_3_expired', 'is_vip_4', 'vip_4_expired', 'is_video_vip', 'video_vip_expired', 'status'])
|
|
|
->first();
|
|
|
- $isZgVip = isset($info['is_zg_vip']) ? $info['is_zg_vip'] : 0;
|
|
|
- $isZsbVip = isset($info['is_zsb_vip']) ? $info['is_zsb_vip'] : 0;
|
|
|
+ $isVip1 = isset($info['is_vip_1']) ? $info['is_vip_1'] : 0;
|
|
|
+ $isVip2 = isset($info['is_vip_2']) ? $info['is_vip_2'] : 0;
|
|
|
+ $isVip3 = isset($info['is_vip_2']) ? $info['is_vip_2'] : 0;
|
|
|
+ $isVip4 = isset($info['is_vip_2']) ? $info['is_vip_2'] : 0;
|
|
|
+ $vip1Expired = isset($info['vip_1_expired']) ? $info['vip_1_expired'] : '';
|
|
|
+ $vip2Expired = isset($info['vip_2_expired']) ? $info['vip_2_expired'] : '';
|
|
|
+ $vip3Expired = isset($info['vip_3_expired']) ? $info['vip_3_expired'] : '';
|
|
|
+ $vip4Expired = isset($info['vip_4_expired']) ? $info['vip_4_expired'] : '';
|
|
|
$isVideoVip = isset($info['is_video_vip']) ? $info['is_video_vip'] : 0;
|
|
|
- $zgVipExpired = isset($info['zg_vip_expired']) ? $info['zg_vip_expired'] : '';
|
|
|
- $zsbVipExpired = isset($info['zsb_vip_expired']) ? $info['zsb_vip_expired'] : '';
|
|
|
$videoVipExpired = isset($info['video_vip_expired']) ? $info['video_vip_expired'] : '';
|
|
|
$openid = isset($info['openid']) ? $info['openid'] : '';
|
|
|
if (!$info || $info['status'] != 1) {
|
|
|
@@ -732,7 +744,7 @@ class MemberService extends BaseService
|
|
|
$goodsId = 0;
|
|
|
$scene = 'vip';
|
|
|
$expiredTime = time();
|
|
|
- if ($vipId == 5) {
|
|
|
+ if ($vipId == 11 && $vipType==5) {
|
|
|
// 单节视频验证是否已付费过
|
|
|
if (VideoOrderModel::where(['goods_id' => $vipId, 'status' => 2, 'mark' => 1])->where('expired_at', '>', date('Y-m-d H:i:s'))->value('id')) {
|
|
|
$this->error = '抱歉,您已购买过该节视频课,请刷新后尝试观看~';
|
|
|
@@ -758,33 +770,53 @@ class MemberService extends BaseService
|
|
|
$goodsId = $vipId;
|
|
|
$vipLimitOpen = ConfigService::make()->getConfigByCode('vip_limit_more', 0);
|
|
|
if ($vipLimitOpen) {
|
|
|
- // 已开通职高VIP无法再开通
|
|
|
- if ($vipType == 1 && ($isZgVip == 1 && $zgVipExpired >= date('Y-m-d H:i:s'))) {
|
|
|
- $this->error = '抱歉,您的职高VIP未到期,到期后再尝试~';
|
|
|
+ // 已开通VIP1无法再开通
|
|
|
+ if ($vipType == 1 && ($isVip1 == 1 && $vip1Expired >= date('Y-m-d H:i:s'))) {
|
|
|
+ $this->error = '抱歉,您的医师资格VIP未到期,到期后再尝试~';
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
- // 已开通专升本VIP无法再开通
|
|
|
- if ($vipType == 2 && ($isZsbVip == 1 && $zsbVipExpired >= date('Y-m-d H:i:s'))) {
|
|
|
- $this->error = '抱歉,您的专升本VIP未到期,到期后再尝试~';
|
|
|
+ // 已开通VIP2无法再开通
|
|
|
+ if ($vipType == 2 && ($isVip2 == 1 && $vip2Expired >= date('Y-m-d H:i:s'))) {
|
|
|
+ $this->error = '抱歉,您的护士执业VIP未到期,到期后再尝试~';
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 已开通VIP3无法再开通
|
|
|
+ if ($vipType == 3 && ($isVip3 == 1 && $vip3Expired >= date('Y-m-d H:i:s'))) {
|
|
|
+ $this->error = '抱歉,您的医学技师VIP未到期,到期后再尝试~';
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 已开通VIP4无法再开通
|
|
|
+ if ($vipType == 4 && ($isVip4 == 1 && $vip4Expired >= date('Y-m-d H:i:s'))) {
|
|
|
+ $this->error = '抱歉,您的执业药师VIP未到期,到期后再尝试~';
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
// 已开通全部视频VIP无法再开通
|
|
|
- if ($vipType == 3 && ($isVideoVip && $videoVipExpired >= date('Y-m-d H:i:s'))) {
|
|
|
+ if ($vipType == 5 && ($isVideoVip && $videoVipExpired >= date('Y-m-d H:i:s'))) {
|
|
|
$this->error = '抱歉,您的已开通全部视频VIP,请到期后再尝试~';
|
|
|
return false;
|
|
|
}
|
|
|
} else {
|
|
|
- if ($vipType == 1 && $isZgVip == 1 && $zgVipExpired >= date('Y-m-d H:i:s')) {
|
|
|
- $expiredTime = strtotime($zgVipExpired);
|
|
|
+ if ($vipType == 1 && $isVip1 == 1 && $vip1Expired >= date('Y-m-d H:i:s')) {
|
|
|
+ $expiredTime = strtotime($vip1Expired);
|
|
|
+ }
|
|
|
+
|
|
|
+ if ($vipType == 2 && $isVip2 == 1 && $vip2Expired >= date('Y-m-d H:i:s')) {
|
|
|
+ $expiredTime = strtotime($vip2Expired);
|
|
|
+ }
|
|
|
+
|
|
|
+ if ($vipType == 3 && $isVip3 == 1 && $vip3Expired >= date('Y-m-d H:i:s')) {
|
|
|
+ $expiredTime = strtotime($vip3Expired);
|
|
|
}
|
|
|
|
|
|
- if ($vipType == 2 && $isZsbVip == 1 && $zsbVipExpired >= date('Y-m-d H:i:s')) {
|
|
|
- $expiredTime = strtotime($zsbVipExpired);
|
|
|
+ if ($vipType == 4 && $isVip4 == 1 && $vip4Expired >= date('Y-m-d H:i:s')) {
|
|
|
+ $expiredTime = strtotime($vip4Expired);
|
|
|
}
|
|
|
|
|
|
- if ($vipType == 3 && $isVideoVip == 1 && $videoVipExpired >= date('Y-m-d H:i:s')) {
|
|
|
+ if ($vipType == 5 && $isVideoVip == 1 && $videoVipExpired >= date('Y-m-d H:i:s')) {
|
|
|
$expiredTime = strtotime($videoVipExpired);
|
|
|
}
|
|
|
}
|
|
|
@@ -792,7 +824,7 @@ class MemberService extends BaseService
|
|
|
|
|
|
// 创建订单
|
|
|
$orderNo = get_order_num('VP');
|
|
|
- $remark = $vipType == 3 ? "购买{$vipName}" : "购买{$vipName}VIP";
|
|
|
+ $remark = $vipType == 5 ? "购买{$vipName}" : "购买{$vipName}VIP";
|
|
|
$order = [
|
|
|
'order_no' => $orderNo,
|
|
|
'user_id' => $userId,
|
|
|
@@ -806,7 +838,7 @@ class MemberService extends BaseService
|
|
|
];
|
|
|
|
|
|
DB::beginTransaction();
|
|
|
- $model = $vipId == 5 ? new VideoOrderModel : new OrderModel;
|
|
|
+ $model = $vipId ==11 ? new VideoOrderModel : new OrderModel;
|
|
|
if (!$orderId = $model::insertGetId($order)) {
|
|
|
$this->error = '创建VIP订单失败';
|
|
|
return false;
|