|
- <?php
-
- namespace backend\modules\api\models;
-
- use yii\base\Exception;
- use yii\db\ActiveRecord;
- use Yii;
- /**
- * This is the model class for table "opera_product".
- *
- * @property integer $PROD_ID
- * @property string $PROD_CODE
- * @property string $PROD_NAME
- * @property integer $PROD_TYPE
- * @property integer $PARENT_ID
- * @property integer $TOP_ORG_ID
- * @property integer $ORG_ID
- * @property integer $CANCEL_FLAG
- * @property integer $MAIN_CORP_ID
- * @property integer $CREATE_USER_ID
- * @property integer $UPDATE_USER_ID
- * @property integer $IS_ONSALE
- * @property string $PROD_PRICE
- * @property string $CUS_PRICE
- * @property string $REMARK
- * @property string $CREATE_TIME
- * @property string $UPDATE_TIME
- * @property integer $IS_REFUND
- * @property integer $REFUND_LIMIT_DAY
- * @property string $REFUND_LIMIT_TIME
- */
- class OperaProduct extends ActiveRecord
- {
- /**
- * @inheritdoc
- */
- public static function tableName()
- {
- return 'opera_product';
- }
-
- /**
- * @inheritdoc
- */
- public function rules()
- {
- return [
- [['PROD_CODE'], 'required'],
- [['PROD_TYPE', 'PARENT_ID', 'TOP_ORG_ID', 'ORG_ID', 'CANCEL_FLAG', 'MAIN_CORP_ID', 'CREATE_USER_ID', 'UPDATE_USER_ID', 'IS_ONSALE', 'IS_REFUND', 'REFUND_LIMIT_DAY','RUN_DUTY_ID'], 'integer'],
- [['PROD_PRICE', 'CUS_PRICE'], 'number'],
- [['REMARK'], 'string'],
- [['CREATE_TIME', 'UPDATE_TIME'], 'safe'],
- [['PROD_CODE', 'REFUND_LIMIT_TIME'], 'string', 'max' => 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;
-
- }
-
- }
|