255], [['PROD_NAME'], 'string', 'max' => 200], ]; } /** * @inheritdoc */ public function attributeLabels() { return [ 'PROD_ID' => '产品ID', 'PROD_CODE' => '产品编码', 'PROD_NAME' => '产品名称', 'PROD_TYPE' => '产品类别,DICT_TYPE.ID', 'PARENT_ID' => '父级产品ID,OPERA_PRODUCT.PROD_ID,若无父级,则为0', 'TOP_ORG_ID' => '所属一级组织机构ID,BASE_ORGANIZATION.ORG_ID,非0', 'ORG_ID' => '直属组织机构ID,BASE_ORGANIZATION.ORG_ID,非0', 'CANCEL_FLAG' => '记录有效性标记,CANCEL_FLAG=0记录有效;CANCEL_FLAG=1,记录已删除', 'MAIN_CORP_ID' => '运营主体', 'CREATE_USER_ID' => '记录创建用户ID', 'UPDATE_USER_ID' => '记录最后更新用户ID', 'IS_ONSALE' => '门票是否上架,0下架,1上架', 'PROD_PRICE' => '结算价格', 'CUS_PRICE' => '零售价', 'REMARK' => '备注', 'CREATE_TIME' => '创建时间', 'UPDATE_TIME' => '更新时间', 'IS_REFUND' => '是否允许退款 0 不允许 1 允许', 'REFUND_LIMIT_DAY' => '提前退款天数', 'REFUND_LIMIT_TIME' => '提前退款时间', 'RUN_DUTY_ID'=>'运营负责人ID' ]; } /** * Function Description:整理产品数据 * Function Name: getTicketProductList * @param string $prod_str 选购产品 * * @return array * * @author 张帅 */ public function getTicketProductList($prod_str) { $result = []; $prod_str = substr($prod_str, 1, -1); $prod_arr = explode('}{', $prod_str); foreach ($prod_arr as $key => $vel) { $vel = explode(',', $vel); $result[$vel[0]]['prod_id'] = $vel[0];//票种id $result[$vel[0]]['price'] = $vel[1];//票种价格 $result[$vel[0]]['num'] = $vel[2];//库存 } return $result; } /** * Function Description:获取主票种详情 * Function Name: getTicketMainProductListByProdId * @param int $prod_id 主票种id * * @return array|ActiveRecord[] * * @author 张帅 */ public function getTicketMainProductListByProdId($prod_id) { #region 获取数据详情 $result = self::find() ->select([ 'prod_id',//票种id 'prod_code', 'prod_name', 'prod_type', 'run_duty_id' ]) ->where([ 'and', ['=','prod_id',$prod_id], ['=','cancel_flag',0], ['=','is_onsale',1], ]) // ->createCommand()->getRawSql(); ->asArray()->one(); return $result; #endregion } /* * 获取产品编号数组(for驴妈妈)--娄梦宁 */ public function getCodeArr(){ $result=self::find()->select(['prod_id','prod_code','prod_name'])->from(self::tableName())->where(['and',['=','parent_id',0],['=','org_id',1369]])->indexBy('prod_code')->asArray()->all(); return $result; } /* * 获取子产品编号数组(for驴妈妈)--娄梦宁 */ public function getCodeArrSon(){ $result=self::find()->select(['prod_id','prod_code','prod_name'])->from(self::tableName())->where(['and',['!=','parent_id',0],['=','org_id',1369]])->indexBy('prod_code')->asArray()->all(); return $result; } /* * 通过产品编码删除门票产品 */ public function cancelProductByCode($code){ self::updateAll(['PROD_CODE'=>$code,'CANCEL_FLAG'=>0,'ORG_ID'=>1369],['CANCEL_FLAG'=>1]); $outside_ticket=new OutsideTicket(); $outside_ticket::updateAll(['prod_code'=>$code,'cancel_flag'=>0],['cancel_flag'=>1]); } /* * 驴妈妈主产品票种添加 */ public function istLvmamaProdMain($prod_id,$prod_name,$remark,$refund_limit_day=1, $refund_limit_time='23:00', $is_refund=0){ $transaction = Yii::$app->db->beginTransaction(); $values=[ 'PROD_NAME'=>$prod_name, 'PROD_CODE'=>(string)$prod_id, 'MAIN_CORP_ID'=>1, 'ORG_ID'=>1369, 'REMARK'=>$remark, 'CREATE_TIME'=>date('Y-m-d H:i:s'), 'IS_REFUND'=>$is_refund, 'REFUND_LIMIT_TIME'=>$refund_limit_time, 'REFUND_LIMIT_DAY'=>$refund_limit_day, ]; try { $opera_product = new OperaProduct(); $opera_prod = clone $opera_product; $opera_prod->attributes = $values; $prod_main_res = $opera_prod->insert(); if (!$prod_main_res) { $transaction->rollBack(); return ['code' => 1, 'msg' => '新增主产品失败','prod_id'=>0]; } }catch (Exception $e){ $transaction->rollBack(); return ['code' => 1, 'msg' => '新增主产品失败','prod_id'=>0]; } $transaction->commit(); return ['code'=>0,'prod_id'=>$opera_prod->PROD_ID]; } /* * 驴妈妈子门票添加 */ public function insLvmamaProdSon($parent_id,$prod_name,$prod_code, $refund_limit_day, $refund_limit_time, $is_refund){ $transaction = Yii::$app->db->beginTransaction(); $prod_type=self::find()->select(['prod_type'])->from(self::tableName())->where(['prod_id'=>$parent_id])->asArray()->one(); $values=[ 'PROD_NAME'=>$prod_name, 'PROD_CODE'=>(string)$prod_code, 'PARENT_ID'=>$parent_id, 'MAIN_CORP_ID'=>1, 'ORG_ID'=>1369, 'CREATE_TIME'=>date('Y-m-d H:i:s'), 'IS_REFUND'=>$is_refund, 'REFUND_LIMIT_TIME'=>$refund_limit_time, 'REFUND_LIMIT_DAY'=>$refund_limit_day, 'PROD_TYPE'=>(int)$prod_type['prod_type'] ]; try{ $opera_product = new OperaProduct(); $opera_prod = clone $opera_product; $opera_prod->attributes = $values; $prod_main_res = $opera_prod->insert(); if (!$prod_main_res) { $transaction->rollBack(); return ['code' => 1, 'msg' => '新增子产品失败']; } }catch (Exception $e){ $transaction->rollBack(); return ['code' => 1, 'msg' => '新增子产品失败']; } $transaction->commit(); return ['code'=>0]; } /* * 驴妈妈渠道所有产品id */ public function getIdForLvmama(){ $result=self::find()->select(['prod_id','prod_code'])->from(self::tableName())->where(['and',['=','cancel_flag',0],['=','parent_id',0],['=','org_id',1369]])->asArray()->all(); return $result; } /* * 驴妈妈渠道所有子产品id(商品) */ public function getSonIdForLvmama(){ $result=self::find()->select(['prod_id','prod_code'])->from(self::tableName())->where(['and',['=','cancel_flag',0],['!=','parent_id',0],['=','org_id',1369]])->asArray()->all(); return $result; } /** * Function Description:根据code改变主产品信息 * Function Name: uptLvmamaProdMain * @param $prod_code * @param $prod_name * @param $remark * * @return array * * @author 娄梦宁 */ public function uptLvmamaProdMain($prod_code,$prod_name,$remark){ $transaction= Yii::$app->db->beginTransaction(); $values=[ 'PROD_NAME'=>$prod_name, 'REMARK'=>$remark, 'CANCEL_FLAG'=>0 ]; try { $opera_prod=self::findOne(['PROD_CODE'=>(string)$prod_code,'ORG_ID'=>1369,'PARENT_ID'=>0]); $opera_prod->attributes=$values; $prod_main_res = $opera_prod->update(); if ($prod_main_res===false) { $transaction->rollBack(); return ['code' => 1, 'msg' => '更新主产品失败']; } }catch (Exception $e){ $transaction->rollBack(); return ['code' => 1, 'msg' => '更新主产品失败','info'=>$e]; } $transaction->commit(); return ['code' => 0, 'msg' => '更新主产品成功']; } /** * Function Description:根据code改变子产品(商品信息) * Function Name: uptLvmamaProdSon * @param $prod_code * @param $prod_name * @param $remark * @param $refund_limit_day * @param $refund_limit_time * * @return array * * @author 娄梦宁 */ public function uptLvmamaProdSon($prod_code,$prod_name,$remark,$refund_limit_day,$refund_limit_time,$is_refund,$parent_id=0){ $transaction= Yii::$app->db->beginTransaction(); $values=[ 'PROD_NAME'=>$prod_name, 'REMARK'=>$remark, 'CANCEL_FLAG'=>0, 'REFUND_LIMIT_TIME'=>$refund_limit_time, 'REFUND_LIMIT_DAY'=>$refund_limit_day, 'IS_REFUND'=>$is_refund, ]; if($parent_id!=0){ $values['PARENT_ID']=$parent_id; } $new_opera_product=clone $this; try { $new_opera_product::updateAll($values,['PROD_CODE'=>(string)$prod_code,'ORG_ID'=>1369]); }catch (Exception $e){ return ['code' => 0, 'msg' => '更新子产品失败']; } $transaction->commit(); return ['code' => 0, 'msg' => '更新子产品成功']; } /** * Function Description:凌晨批量定时任务更新产品相关信息 * Function Name: uptLvmamaProdDetail * @param $prod_code * @param $prod_name * @param $remark * @param $refund_limit_day * @param $refund_limit_time * @param $is_refund * * @return array * * @author 娄梦宁 */ public function uptLvmamaProdDetail($prod_code,$prod_name,$remark,$refund_limit_day,$refund_limit_time,$is_refund){ $transaction= Yii::$app->db->beginTransaction(); $values=[ 'PROD_NAME'=>$prod_name, 'REMARK'=>$remark, 'CANCEL_FLAG'=>0, 'IS_REFUND'=>$is_refund, 'REFUND_LIMIT_TIME'=>$refund_limit_time, 'REFUND_LIMIT_DAY'=>$refund_limit_day, 'UPDATE_TIME'=>date('Y-m-d H:i:s'), ]; try { $opera_prod=self::findOne(['PROD_CODE'=>(string)$prod_code,'ORG_ID'=>1369,'PARENT_ID'=>0]); $opera_prod->attributes=$values; $prod_main_res = $opera_prod->update(); if ($prod_main_res===false) { $transaction->rollBack(); return ['code' => 1, 'msg' => '更新主产品失败']; } }catch (Exception $e){ $transaction->rollBack(); return ['code' => 1, 'msg' => '更新主产品失败']; } $transaction->commit(); return ['code' => 0, 'msg' => '更新主产品成功']; } /** * Function Description:查询产品上架状态 * Function Name: getProdbyProdid * @param $prod_id * * @return array|null|ActiveRecord * * @author 冒炎 */ public function getProdbyProdid($prod_id){ $res = self::find() ->select('IS_ONSALE') ->from(self::tableName()) ->where(['=','PROD_ID',$prod_id]) ->asArray() ->one(); return $res; } /** * Function Description:获取具体日期的子产品信息 * Function Name: getProdInfo * @param $run_date * @param $to_org_id * @param $sub_prod_id * @param $flag * * @return array|null|ActiveRecord * * @author 冒炎 */ public function getProdInfo($run_date,$to_org_id,$sub_prod_id,$flag){ $select = [ 'prod_is_onsale'=>'a.is_onsale', 'run_is_onsale'=>'b.is_onsale', 'cus_price'=>'b.cus_price', 'prod_price'=>'b.prod_price', 'total_count'=>'b.total_count' ]; $where = [ 'and', ['=','a.cancel_flag',0], ['=','a.prod_id',$sub_prod_id], ['=','b.run_date',$run_date] ]; if($flag){ $where[] = ['=','b.to_org_id',$to_org_id]; }else{ $where[] = ['=','b.to_org_id',0]; } $res = self::find() ->select($select) ->from(self::tableName() . 'as a') ->leftJoin('opera_product_run as b','a.prod_id = b.prod_id and b.cancel_flag = 0') ->where($where) ->asArray() ->one(); return $res; } }