コード例 #1
0
 /**
  * @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,
     // ]);
 }
コード例 #2
0
ファイル: BaseAttribute.php プロジェクト: songhongyu/idaiyan
 /**
  * 属性值保存
  *
  * @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;
     }
 }