/** * 数据 */ public function val($relid, $attrid) { $mAttrBase = new ActivityAttrBase(); $attr = $mAttrBase->pk($attrid); $result = false; if (!$attr || $attr['status'] == ActivityAttrBase::STATUS_DISABLE) { return FALSE; } $mAttrVal = new ActivityProductAttrVal(); $attrval = []; if (!($attrval = $mAttrVal->getAttrVal($relid, $attrid))) { return FALSE; } $result = $this->parse(['ap_id' => $relid, 'product_id' => $attrval['product_id'], 'acti_id' => $attrval['acti_id'], 'type' => $attr['type'], 'attr_customid' => $attr['custom_id'], 'data_type' => $attr['data_type'], 'attr_val' => $attrval['attr_val']]); return $result; }
/** * 一呼百应 属性接口 * @param int $rel_id 活动产品id * @param int $attrid 活动产品属性值ID * @param str $attval 属性值 * endtime 结束时间 * * @return json * */ public function actionBaiyingattr() { //判断登陆 $user = PublicLibrary::is_login(); //if ($user && PublicLibrary::is_ajax()) { if ($user) { $uid = $user['uid']; } else { echo PublicLibrary::format_res_encode('1001', 'the user no landing or no ajax!'); exit; } //$uid = 241661; //$rel_id = 32825; //$attrid = 3; //$priceDis = 456; //$date = ['rel_id' => $rel_id, 'attrid' => $attrid, 'priceDis' => '346']; $date = Yii::$app->request->post(); $date = array_map('trim', $date); $date = array_map('strip_tags', $date); $rel_id = isset($date['rel_id']) ? intval($date['rel_id']) : 0; $attrid = isset($date['attrid']) ? intval($date['attrid']) : 0; $attval = isset($date['attval']) ? $date['attval'] : ''; if (isset($date['endtime']) && $date['endtime'] == 1) { $attrid = 2; } //用活动产品id 获取活动id $mpactivity = new ActivityProduct(); $pcone = $mpactivity->pk($rel_id); //当前用户和产品活动发布用户不同 if (empty($pcone) || $uid != $pcone['user_id'] || $pcone['status'] == ActivityProduct::STATUS_VERIFYING || $pcone['status'] == ActivityProduct::STATUS_VERIFY_THROUGH) { echo PublicLibrary::format_res_encode('1003', 'user or status error!'); exit; } $acti_id = $pcone->acti_id ? $pcone->acti_id : 0; $product_id = $pcone->product_id ? $pcone->product_id : 0; if (empty($rel_id) || empty($attrid) || empty($acti_id) || empty($product_id)) { echo PublicLibrary::format_res_encode('1004', 'params error'); exit; } // 查询属性基础信息 $mattrbase = new ActivityAttrBase(); $attr = $mattrbase->pk($attrid); //价格处理 if ($attr['type'] == ActivityAttrBase::DATA_TYPE_MODEL_PRICE) { //查询价格属性值 以供修改 $mAttrval = new ActivityProductAttrVal(); $pattrv = $mAttrval->getAttrVal($rel_id, $attrid); $priceval = []; if (isset($pattrv['attr_val']) && !empty($pattrv['attr_val'])) { $priceval = json_decode($pattrv['attr_val'], true); } if (isset($priceval) && !is_array($priceval)) { $priceval = []; } //图片上传 $priceimg = UploadedFile::getInstanceByName('attval'); if ($priceimg !== null) { //判断图片大小是否符合规定 if ($priceimg->size > ProductImage::MAX_SIZE || $priceimg->error != 0) { echo PublicLibrary::format_res_encode('1005', 'image error'); exit; } $rootpath = 'uploads/' . date('Y/m/d') . '/'; //图片保存路径 file_exists($rootpath) or mkdir($rootpath, 0777, true); //生成图片路径 $randname = time() . rand(0, 500); //图片公有名 $setpimage_path = $rootpath . $randname; //封面图路径 move_uploaded_file($priceimg->tempName, $setpimage_path . '.jpg'); $priceval['priceimg'] = $setpimage_path; } else { $priceval['price'] = $attval; } $attval = $priceval; } $mbaseattr = new BaseAttribute(); $btas = $mbaseattr->save($rel_id, $uid, $attrid, $attval, false, 1); if ($btas) { $pimg = isset($setpimage_path) ? $setpimage_path . '.jpg' : ''; //查询完成度 $ActivityRelAttrGroup = new ActivityRelAttrGroup(); //获取group_id $group = ActivityRelAttrGroup::find()->select('group_id')->where(['attr_id' => $attrid, 'acti_id' => ActivityBase::APPLY_BAIYING])->asArray()->one(); $group_id = $group['group_id']; $ids = $ActivityRelAttrGroup->completion($rel_id, ActivityBase::APPLY_BAIYING, $group_id); if ($ids) { echo PublicLibrary::format_res_encode('0', 'success', ['priceImg' => $pimg]); } else { echo PublicLibrary::format_res_encode('1', 'success', ['priceImg' => $pimg]); } } else { echo PublicLibrary::format_res_encode('1002', 'save error'); } }
/** * 获取分组完成度 * * @param int $apid 活动产品ID * @return array 分组完成度数据 * 分组完成度的数据结构如下: * ~~~ * [ * [ * 'id' => '分组ID', * 'acti_id' => '活动ID', * 'name' => '名称', * 'is_completed' => '是否已完成, 0: 未完成; 1: 已完成', * ], * // 其他分组数据...... * ] * ~~~ * */ public function getCompleteStatus($apid) { $apid = intval($apid); $result = []; $attrvals = []; $mActiProd = new ActivityProduct(); $actiprod = $mActiProd->pk($apid); if (!$actiprod) { return false; } $aid = intval($actiprod['acti_id']); $group = $this->getValidGroupsByAid($aid, TRUE); $mAttrVal = new ActivityProductAttrVal(); $result = $mAttrVal->getAttrVal($apid, false, ['attr_id', 'finish_status']); // 重新“组织”数据结构,即使用属性ID作为Key if ($result && is_array($result)) { foreach ($result as $val) { $attrvals[$val['attr_id']] = $val['finish_status']; } } // 针对每一个分组的attrs属性进行完成度"检测",并增加is_completed元素 // is_completed 1: 已完成, 2: 未完成 if ($group && is_array($group)) { foreach ($group as $key => $val) { if ($val['attrs'] && is_array($val['attrs'])) { $group[$key]['is_completed'] = true; foreach ($val['attrs'] as $attr) { $attrid = $attr['attr_id']; if (!isset($attrvals[$attrid]) || !$attrvals[$attrid]) { $group[$key]['is_completed'] = false; break; } } unset($group[$key]['attrs']); } else { $group[$key]['is_completed'] = false; } } } return $group; }