/** * @author song <*****@*****.**> * @param $pid 产品id * @param $aid 活动id * * @return */ public function actionApplybaiying() { //测试数据 // $_GET['pid'] = 4395; // $_GET['aid'] = 8; $user = PublicLibrary::is_login() ? PublicLibrary::is_login() : $this->redirect(['user/login']); $parr = Yii::$app->request->get(); $pid = isset($parr['pid']) ? intval($parr['pid']) : ''; $aid = ActivityBase::APPLY_BAIYING; //$aid = isset($parr['aid']) ? intval($parr['aid']) : ''; // print_r($user);exit; if (empty($pid) || empty($aid)) { return $this->redirect(['home-page/lists', 'uid' => $user['uid']]); //跳转到完善信息 } //判断是否存在该活动 $mActiBase = new ActivityBase(); $activity = $mActiBase->pk($aid); if (!$activity) { return $this->redirect(['home-page/lists', 'uid' => $user['uid']]); //跳转到用户主页 } //查询是不是该用户发布的产品 $model = new IProductBase(); $res = $model->isMyProduct($user['uid'], $pid); $basePrice = isset($res[0]['price']) ? $res[0]['price'] : ''; if (!$res) { return $this->redirect(['home-page/lists', 'uid' => $user['uid']]); //跳转到用户主页 } //$session->set('acti_config', $activity['config']); //查询该商品有没有参加过该活动 $mactivitypdt = new ActivityProduct(); $one = $mactivitypdt->isinActivity($user['uid'], $aid, $pid); // echo '<pre>'; // print_r($one);exit; //属性Map $mArag = new ActivityRelAttrGroup(); $attrMap = $mArag->getAttrMapping($aid); // print_r($attrMap);exit; // //查询左侧菜单 // $ActivityAttrGroup = new ActivityAttrGroup(); // $menu = $ActivityAttrGroup->getCompleteStatus(32833); // print_r($menu);exit; $lockData = ['start_time' => ['acti_id' => 8, 'type' => 'datepicker', 'data_type' => 'date', 'attr_val' => strtotime('2015-04-11'), 'val' => strtotime('2015-04-11'), 'attr_id' => 1], 'end_time' => ['acti_id' => 8, 'type' => 'datepicker', 'data_type' => 'date', 'attr_val' => strtotime('2015-04-18'), 'val' => strtotime('2015-04-18'), 'attr_id' => 2], 'supply_num' => ['acti_id' => 8, 'type' => 'input', 'data_type' => 'number', 'attr_val' => 29, 'val' => 29, 'attr_id' => 4], 'limit_people_num' => ['acti_id' => 8, 'type' => 'input', 'data_type' => 'number', 'attr_val' => 30, 'val' => 30, 'attr_id' => 5], 'discount_price' => ['acti_id' => 8, 'type' => 'cumbie', 'data_type' => 'price', 'attr_val' => ['price' => 1], 'val' => json_encode(['price' => 1]), 'attr_id' => 3]]; // print_r($lockData);exit; // print_r($one);exit; if (!$one) { //入库 $apdata = ['product_id' => $pid, 'acti_id' => $aid, 'user_id' => $user['uid'], 'status' => ActivityProduct::STATUS_SAVE, 'apply_way' => 1]; $rel_id = $mactivitypdt->store($apdata); // print_r($rel_id);exit; //插入到活动产品统计表 $apstart = new ActivityProductStat(); $data = ['rel_id' => $rel_id, 'acti_id' => $aid, 'product_id' => $pid]; $apstart->store($data); // print_r($rel_id);exit; //锁定数据入库 $mbaseattr = new BaseAttribute(); foreach ($lockData as $v) { $isComplete = 1; //价格部分锁定,完成度为不完成 if ($v['data_type'] == 'price') { $isComplete = 0; } $mbaseattr->save($rel_id, $user['uid'], $v['attr_id'], $v['attr_val'], false, $isComplete); } // $btas = $mbaseattr->save($rel_id, $user['uid'], $attrid, $content, false, 1); //查询左侧菜单 $ActivityAttrGroup = new ActivityAttrGroup(); $menu = $ActivityAttrGroup->getCompleteStatus($rel_id); $ActivityProductAttrVal = new ActivityProductAttrVal(); $attrval = $ActivityProductAttrVal->getRealAttrVals($rel_id, $aid); $attrval = array_merge($attrMap, $attrval); // echo "string"; // print_r($attrMap);exit; // $this -> layout = '@app/views/layouts/main_activity.php'; // $this -> layout = false; $this->layout_data = 'uc'; return $this->render('applybaiyingformal', ['pid' => $pid, 'rel_id' => $rel_id, 'menu' => $menu, 'attrs' => $attrval, 'basePrice' => $basePrice, 'attrMap' => $attrMap]); } else { // echo "zhanglu";exit; if ($one['status'] == ActivityProduct::STATUS_VERIFYING || $one['status'] == ActivityProduct::STATUS_VERIFY_THROUGH) { //审核中 或 审核通过 return $this->redirect(['home-page/lists', 'uid' => $_SESSION['user']['uid']]); } else { $rel_id = $one['id']; // echo $rel_id ;exit; if (intval($one['apply_way']) == 0) { $apdata = ['id' => $rel_id, 'apply_way' => 1]; $mactivitypdt->store($apdata); //xxx入库不成功 $mActivityProductAttrVal = new ActivityProductAttrVal(); foreach ($lockData as $v) { // $data = [ // 'rel_id' => $rel_id, // 'acti_id' => ActivityBase::APPLY_BAIYING, // 'product_id' => $one['product_id'], // 'attr_id' => $v['attr_id'], // 'attr_val' => $v['attr_val'], // ]; // print_r($data);exit; if ($mActivityProductAttrVal->hasExit($rel_id, $v['attr_id'])) { // $mActivityProductAttrVal->store(['rel_id' => $rel_id, 'acti_id' => ActivityBase::APPLY_BAIYING, 'product_id' => $one['product_id'], 'attr_id' => $v['attr_id'], 'attr_val' => $v['val']]); } else { $mbaseattr = new BaseAttribute(); $mbaseattr->save($rel_id, $user['uid'], $v['attr_id'], $v['attr_val'], false, 1); } // echo "zhanglu";exit; } // exit; } // echo "hello zhanglu";exit; // 需要在前台测试!!! // 查询左侧菜单 $ActivityAttrGroup = new ActivityAttrGroup(); $menu = $ActivityAttrGroup->getCompleteStatus($one['id']); // print_r($menu);exit; $ActivityProductAttrVal = new ActivityProductAttrVal(); $attrval = $ActivityProductAttrVal->getRealAttrVals($one['id'], $aid); // echo '<pre>'; // print_r($attrval);exit; // exit; $attrval = array_merge($attrMap, $attrval); // print_r('zhanglu'); // print_r($attrval); // exit; $this->layout_data = 'uc'; return $this->render('applybaiyingformal', ['pid' => $pid, 'rel_id' => $rel_id, 'menu' => $menu, 'attrs' => $attrval, 'basePrice' => $basePrice, 'attrMap' => $attrMap]); } } //$mArag = new ActivityRelAttrGroup();ƒ //$attrMap = $mArag->getAttrMapping($aid); //查询左侧菜单 // $ActivityAttrGroup = new ActivityAttrGroup(); // $menu = $ActivityAttrGroup->getCompleteStatus($rel_id); // return $this->render('applybaiyingformal',[ // 'pid' => $pid, // //'rel_id' => $rel_id, // //'menu' =>$menu, // //'attrMap'=>$attrMap, // ]); }
/** * 属性值保存 * * @param int $relid 活动产品ID * @param int $uid 用户ID * @param int $attrid 属性ID * @param int $attrval 属性值 * @param str $actiConfig 活动配置 * @param int $isCompleted 是否完成 * * @return boolean */ public function save($relid, $uid, $attrid, $attrval, $actiConfig = false, $isCompleted = ActivityProductAttrVal::STATUS_UNFINISHED) { $mActiProd = new ActivityProduct(); $dActiProd = []; if (!($dActiProd = $mActiProd->getByPkAndUid($relid, $uid))) { return FALSE; } $mAttrBase = new ActivityAttrBase(); $attr = $mAttrBase->pk($attrid); if (!$attr) { return FALSE; } $dataType = $attr['data_type']; $type = $attr['type']; $data = ['rel_id' => $dActiProd['id'], 'acti_id' => $dActiProd['acti_id'], 'product_id' => $dActiProd['product_id'], 'attr_id' => $attrid]; if ($type == ActivityAttrBase::DATA_TYPE_MODEL) { $data['attr_val'] = $attrval; $data['finish_status'] = $isCompleted; //ActivityProductAttrVal::STATUS_FINISHED; // $data['finish_status'] = ActivityProductAttrVal::STATUS_FINISHED; } else { //if ($attr['type'] != 'cumbie') { //$attrval = $attrval['price']; //} $attrval = $this->parse(['ap_id' => $dActiProd['id'], 'type' => $attr['type'], 'data_type' => $attr['data_type'], 'attr_customid' => $attr['custom_id'], 'attr_val' => $attrval], self::PARSE_MODE_INPUT); if ($attrval === FALSE) { return $attrval; } $data['attr_val'] = $attrval; //$data['finish_status'] = $data['attr_val'] ? // ActivityProductAttrVal::STATUS_FINISHED : ActivityProductAttrVal::STATUS_UNFINISHED; $data['finish_status'] = $isCompleted; //ActivityProductAttrVal::STATUS_FINISHED; } $mAttrVal = new ActivityProductAttrVal(); // 保存后 if ($mAttrVal->store($data)) { if (!$actiConfig) { return TRUE; } $customid = $attr['custom_id']; if (isset($actiConfig['rel_attrs']) && isset($actiConfig['rel_attrs'][$customid]) && isset($actiConfig['rel_attrs'][$customid]['custom_id'])) { $itemConfig = $actiConfig['rel_attrs'][$customid]; $attr = $mAttrBase->getByCustomID($itemConfig['custom_id']); if (isset($itemConfig['is_use_baseval']) && isset($itemConfig['op_type'])) { // XXX: 1. 考虑调整类常量 2. 提供统一处理方法 // TODO: 能够根据数据类型自动选择操作 switch ($itemConfig['op_type']) { case 'incr': $attrval = $attrval + $itemConfig['val']; break; default: } } $data['attr_id'] = $attr['id']; $data['attr_val'] = $attrval; unset($mAttrVal['id']); $mAttrVal->isNewRecord = TRUE; // TODO: 需要进行代码"解耦" $attrval = $this->parse(['ap_id' => $dActiProd['id'], 'type' => $attr['type'], 'data_type' => $attr['data_type'], 'attr_customid' => $attr['custom_id'], 'attr_val' => $attrval], self::PARSE_MODE_INPUT); return $mAttrVal->store($data); } else { return TRUE; } } else { return FALSE; } }