['plugin' => 'rights', 'payfor' => 'rights'], 2 => ['plugin' => 'rights', 'payfor' => 'rightsBag'] ]; /** * 我的权益首页展示数据 * @return void */ public function getRightsList() { global $_W, $_GPC; $rights = Rights::getRightsList(); $contentList = []; foreach ($rights as $rightsKey => $rightsValue) { $contentList[] = ($rightsKey + 1) . '.' . $rightsValue['content']; } $rightsBag = pdo_get(PDO_NAME . 'rights_bag',['id' => 2],['id','title','price']); $this->renderSuccess('数据获取成功',[ 'table_list' => Rights::getRightsMergeList(), 'content_list' => $contentList, 'member_rights_list' => Rights::getMemberRightsUsageInfo($_W['mid']), 'rights_bag_data' => $rightsBag?:[] ]); } /** * 权益详情页面展示数据 * @return void */ public function getRightsTypeInfo() { global $_W, $_GPC; $rightsid = $_GPC['rights_id']; $mid = $_W['mid']; if (empty($rightsid) || !is_numeric($rightsid)) $this->renderError('缺少权益id'); $rights = pdo_get(PDO_NAME . 'rights',['id' => $rightsid],['rights_type','calculate_method','price']); if (!$rights) $this->renderError('权益信息不存在'); $rights_type = $rights['rights_type']; $data = [ 'rights_type' => $rights_type, // 权益类型 'remaining_amount' => 0, // 剩余数量 'price' => $rights['price'] // 单价 ]; $memberRights = pdo_get(PDO_NAME . 'member_rights',['rightsid' => $rightsid,'mid' => $mid,'status' => 1]); if ($memberRights) { $use_amount = $memberRights['use_amount']; // 现有数量 $data['remaining_amount'] = Rights::getUseAmount($rightsid,$memberRights['id'],$use_amount,$memberRights['total_amount']); } // 获取权益提交数据信息 switch ($rightsid) { case 1: break; case 2: $data['amount_unit'] = Rights::$unit[4]; // 数量单位 $data['num_data'] = Rights::$dayData; // 数量选择 $data['filter_data'] = [ 'recruit' => Rights::getStoreRecruitInfo($mid) // 商户招聘职位信息 ]; break; case 3: $data['amount_unit'] = Rights::$unit[4]; $data['num_data'] = Rights::$monthData; break; case 4: $data['amount_unit'] = Rights::$unit[3]; $data['num_data'] = Rights::$numData; break; case 5: $data['amount_unit'] = Rights::$unit[2]; $data['num_data'] = Rights::$copyData; $data['filter_data'] = [ 'recruit' => Rights::getStoreRecruitInfo($mid), 'graduated_school' => Rights::$graduatedSchool, // 毕业院校 'experience' => Rights::$experience // 经历 ]; break; } $this->renderSuccess('数据返回成功',$data); } /** * 创建权益支付接口 * @return void */ public function createRightsPay() { global $_W, $_GPC; $rightsid = $_GPC['rights_id']; // 权益ID $type = $_GPC['type']; // 权益支付类型 $num = $_GPC['num']; // 购买数量 $contacts = $_GPC['contacts']; // 联系人名称 $contact_phone = $_GPC['contact_phone'] ?: ''; // 联系电话 if (empty($rightsid) || !is_numeric($rightsid)) $this->renderError('缺少权益id'); if (empty($type) || !in_array($type,array_keys($this->typeArray))) $this->renderError('权益支付类型数据有误'); if (!empty($contact_phone) && $contact_phone != 'undefined') { if (!preg_match("/^1[3-9]\d{9}$/",$contact_phone)) $this->renderError('请输入正确的手机号'); } if ($type == 2) { $num = 1; } else { if (empty($num)) $this->renderError('请输入购买数量'); if (!preg_match("/^\d+$/",$num)) $this->renderError('购买数量必须是数字整数'); if ($num <= 0 || $num > 500) $this->renderError('购买数量最低不能小于0,最高不能大于500'); } if (!empty($contacts)) { $contactsRes = Filter::init($contacts,$_W['source'],1); if ($contactsRes['errno'] == 0) $this->renderError('联系人名称'.$contactsRes['message']); } $typeData = $this->typeArray[$type]; // 获取权益价格 $oprice = 0; if ($typeData['payfor'] == 'rights') { $rights = pdo_get(PDO_NAME . 'rights',['id' => $rightsid],['price']); $oprice = $rights['price']; } elseif ($typeData['payfor'] == 'rightsBag') { $rightsBag = pdo_get(PDO_NAME . 'rights_bag',['id' => $rightsid],['price']); $oprice = $rightsBag['price']; } $price = bcmul($oprice,$num,2); //生成订单 $orderdata = [ 'uniacid' => $_W['uniacid'], 'mid' => $_W['mid'], 'aid' => $_W['aid'], 'fkid' => $rightsid, 'createtime' => time(), 'orderno' => createUniontid(), 'oprice' => $oprice, 'price' => $price, 'num' => $num, 'plugin' => $typeData['plugin'], 'payfor' => $typeData['payfor'], 'goodsprice' => $price, 'fightstatus' => 1, 'name' => $contacts, 'mobile' => $contact_phone ]; pdo_insert(PDO_NAME.'order',$orderdata); $orderid = pdo_insertid(); if (empty($orderid)) { $this->renderError('生成订单失败,请刷新重试'); } else { $this->renderSuccess('发布成功',['status' => 1,'type' => $typeData['plugin'],'orderid' => $orderid]); } } /** * 用户使用权益 * @return void */ public function memberUseRights() { global $_W, $_GPC; $mid = $_W['mid']; $rightsid = $_GPC['rights_id']; // 权益id $position = json_decode(html_entity_decode($_GPC['position']),true); // 使用权益 关联信息 if (empty($rightsid) || !is_numeric($rightsid)) $this->renderError('缺少权益id'); if (empty($position)) $this->renderError('position参数不能为空'); if (!is_array($position)) $this->renderError('position参数数据有误'); $sumNum = 0; // 总使用数量 // 验证请求数据 foreach($position as $value) { $num = $value['num']; // 使用数量 $recruit_id = $value['recruit_id']; // 商户招聘信息ID if (empty($num)) $this->renderError('请填写使用数量'); if ($num <= 0) $this->renderError('使用数量不能小于等于0'); if (empty($recruit_id) || !is_numeric($recruit_id)) $this->renderError('请选择要置顶的岗位'); $sumNum += $num; } // 获取用户是否购买权益 $memberRights = Rights::getMemberRights($mid,$rightsid); if (!$memberRights) $this->renderError('您没有该权益,请先购买权益'); #$remaining_amount = $memberRights['total_amount'] - $memberRights['use_amount']; // 剩余权益数量 $remaining_amount = Rights::getUseAmount($rightsid,$memberRights['id'],$memberRights['use_amount'],$memberRights['total_amount']); // 判断权益是否使用完 if ($memberRights['status'] == 0) $this->renderError('该权益的使用已到期,请重新购买使用'); if ($remaining_amount <= 0) $this->renderError('该权益的使用数量为零,请重新购买使用'); if ($sumNum > $remaining_amount) $this->renderError('填写数量不能大于剩余数量'); try { pdo_begin(); switch ($rightsid) { case 2: // 生成使用信息 foreach ($position as $value) { // 生成子权益使用 $saveMemberRightsUse = Rights::saveMemberRightsUse($rightsid,$memberRights['id'],$value['num'],$value['recruit_id']); if (!$saveMemberRightsUse['status']) throw new Exception($saveMemberRightsUse['msg']); // 判断是否可以置顶 可以及开始置顶 $isTopRes = Rights::recruitIsTop($value['recruit_id'],$memberRights['id'],$memberRights,$value['num']); $num = 1; if ($isTopRes == 2) $num = 0; if ($isTopRes) Rights::useMemberRights($rightsid,$mid,$value['recruit_id'],'recruit_bout',$num); } break; case 5: $graduated_school = $_GPC['graduated_school']; // 毕业院校(待确认) $experience = $_GPC['experience']; // 优先选项 - 经历(待确认) $data = []; if (!empty($graduated_school) && is_numeric($graduated_school)) $data['graduated_school'] = $graduated_school; if (!empty($experience) && is_numeric($experience)) $data['experience'] = $experience; foreach ($position as $value) { $saveMemberRightsUse = Rights::saveMemberRightsUse($rightsid,$memberRights['id'],$value['num'],$value['recruit_id'],'recruit_resume',$data); if (!$saveMemberRightsUse['status']) throw new Exception($saveMemberRightsUse['msg']); } break; } // $memberRightsUpdateArr = ['use_amount' => $memberRights['use_amount'] + $sumNum]; // $memberRightsUpdate = pdo_update(PDO_NAME . 'member_rights',$memberRightsUpdateArr,['id' => $memberRights['id']]); // if (!$memberRightsUpdate) throw new Exception('使用失败'); } catch (Exception $e) { pdo_rollback(); $this->renderError($e->getMessage()); } pdo_commit(); $this->renderSuccess('使用成功'); } public function getRightsOrderList() { global $_W, $_GPC; $page = $_GPC['page'] ? : 1; $pageIndex = $_GPC['page_index'] ? : 10; $where = ['uniacid' => $_W['uniacid'], 'aid' => $_W['aid'], 'plugin' => 'rights','mid' => $_W['mid']?:4]; $field = "id,orderno,status,paytype,payfor,paytime,price,fkid,mid,num"; $orderData = Util::getNumData($field, PDO_NAME . 'order', $where, 'id desc', $page, $pageIndex, 1); $list = $orderData[0]; foreach($list as &$item){ if ($item['payfor'] == 'rightsBag') { $rightsBag = pdo_get(PDO_NAME . 'rights_bag',['id' => $item['fkid']]); $item['storename'] = $rightsBag['title']; } else { $rights = pdo_get(PDO_NAME . 'rights',['id' => $item['fkid']]); $item['storename'] = $rights['rights_type']; } Member::getMemberInfo($item,$item['mid']); } $this->renderSuccess('数据获取成功',$list); } }