100], [['show_img', 'sign', 'prod_des'], 'string', 'max' => 255], [['memo',], 'string', 'max' => 65536], [['update_user', 'close_sale_time'], 'string', 'max' => 50], ]; } /** * @inheritdoc */ public function attributeLabels() { return [ 'pro_cate_id' => 'Pro Cate ID', 'pro_cate_name' => 'Pro Cate Name', 'category_id' => 'Category ID', 'show_price' => 'Show Price', 'show_img' => 'Show Img', 'sign' => 'sign', 'prod_des' => 'prod_des', 'sales_count' => 'Sales Count', 'memo' => 'Memo', 'commission' => 'Commission', 'create_user_id' => 'Create User ID', 'is_recom' => 'Is Recom', 'create_time' => 'Create Time', 'update_time' => 'Update Time', 'delete_flag' => 'Delete Flag', 'update_user' => 'Update User', 'address' => 'Address', 'bus_ticket_id' => 'Bus Ticket ID', 'bus_line_type' => 'Bus Line Type', ]; } /** * Function Description:热销商品推荐10个 * Function Name: GetHotProd * @param string $searchStr * * @return array|\yii\db\ActiveRecord[] * * @author 娄梦宁 */ public function GetHotProd($searchStr = '') { $where = [ 'and', ['<>', 'show_img', ''], ['=', 'a.delete_flag', 0], ['=', 'b.delete_flag', 0], ['=', 'b.system', 1] ]; if ($searchStr != '') { $where[] = ['like', 'pro_cate_name', $searchStr]; } $result = self::find()->select(['pro_cate_id', 'sales_count', "IFNULL(prod_des, '') prod_des", 'pro_cate_name', 'if(category_id=1,(if(sign is null,category_id,1000)),category_id) as category_id', 'show_price', "concat(show_img,'.','min.jpg') as show_img"]) ->from(self::tableName() . ' a') ->innerJoin('cms_category_prod b', 'a.pro_cate_id=b.prod_cate_id') ->where($where) ->orderBy(['sales_count' => SORT_DESC, 'pro_cate_id' => SORT_DESC]) ->limit(10) ->asArray() ->all(); foreach($result as &$v){ $v['show_price'] = $this->dealFloat($v['show_price']); } return $result; } /** * Function Description:推荐产品列表 * Function Name: GetRecommendProd * @param string $where * * @return array|\yii\db\ActiveRecord[] * * @author 娄梦宁 */ public function GetRecommendProd($where = '') { if ($where == '') { $result = self::find()->select(['pro_cate_id', 'sales_count', 'pro_cate_name', "IFNULL(prod_des, '') prod_des", 'if(category_id=1,(if(sign is null,category_id,1000)),category_id) as category_id', 'show_price', "concat(show_img,'.','min.jpg') as show_img"]) ->from(self::tableName() . ' a') ->leftJoin('cms_category_prod b', 'a.pro_cate_id=b.prod_cate_id and b.delete_flag=0') ->where(['and', ['=', 'is_recom', 1], ['!=', 'show_img', ''], ['=', 'a.delete_flag', 0], ['=', 'b.system', 1]]) ->orderBy(['pro_cate_id' => SORT_DESC]) ->asArray() ->all(); } else { $result = self::find()->select(['pro_cate_id', 'sales_count', 'pro_cate_name', "IFNULL(prod_des, '') prod_des", 'if(category_id=1,(if(sign is null,category_id,1000)),category_id) as category_id', 'show_price', "concat(show_img,'.','min.jpg') as show_img"]) ->from(self::tableName() . ' a') ->leftJoin('cms_category_prod b', 'a.pro_cate_id=b.prod_cate_id and b.delete_flag=0') ->where(['and', ['=', 'is_recom', 1], ['!=', 'show_img', ''], ['=', 'a.delete_flag', 0], ['=', 'b.system', 1]]) ->andWhere(['like', 'pro_cate_name', $where]) ->orderBy(['pro_cate_id' => SORT_DESC]) ->asArray() ->all(); } foreach($result as &$v){ $v['show_price'] = $this->dealFloat($v['show_price']); } return $result; } /** * Function Description:首页列表查询产品 * Function Name: GetListProd * @param $prod_id * @param string $where * * @return array|\yii\db\ActiveRecord[] * * @author 娄梦宁 */ public function GetListProd($prod_id, $where = '') { if ($where == '') { $result = self::find()->select(['pro_cate_id', 'sales_count', 'pro_cate_name', "IFNULL(prod_des, '') prod_des", 'if(category_id=1,(if(sign is null,category_id,1000)),category_id) as category_id', 'show_price', "concat(show_img,'.','min.jpg') as show_img"]) ->from(self::tableName() . ' a') ->leftJoin('cms_category_prod b', 'a.pro_cate_id=b.prod_cate_id and b.delete_flag=0') ->where(['and', ['=', 'b.cms_cate_id', $prod_id], ['<>', 'a.show_img', ''], ['=', 'a.delete_flag', 0]]) ->orderBy(['show_sort' => SORT_ASC, 'a.pro_cate_id' => SORT_DESC]) ->asArray() ->all(); } else { $result = self::find()->select(['pro_cate_id', 'sales_count', 'pro_cate_name', "IFNULL(prod_des, '') prod_des", 'if(category_id=1,(if(sign is null,category_id,1000)),category_id) as category_id', 'show_price', "concat(show_img,'.','min.jpg') as show_img"]) ->from(self::tableName() . ' a') ->leftJoin('cms_category_prod b', 'a.pro_cate_id=b.prod_cate_id and b.delete_flag=0') ->where(['and', ['=', 'b.cms_cate_id', $prod_id], ['<>', 'a.show_img', ''], ['=', 'a.delete_flag', 0]]) ->andWhere(['like', 'pro_cate_name', $where]) ->orderBy(['show_sort' => SORT_ASC, 'a.pro_cate_id' => SORT_DESC]) ->asArray() ->all(); } foreach($result as &$v){ $v['show_price'] = $this->dealFloat($v['show_price']); } return $result; } /** * Function Description:非巴士产品获取详情 * Function Name: getProdDetail * @param $pro_cate_id * * @return array|null|\yii\db\ActiveRecord * * @author 娄梦宁 */ public function getProdDetail($pro_cate_id) { $result = self::find()->select(['pro_cate_id', 'pro_cate_name', "IFNULL(prod_des, '') prod_des", 'category_id', 'show_img', 'memo booking_notice', 'sign', 'show_price', 'close_sale_time', "(select category_name from cms_category where cms_category_id =(select cms_cate_id from cms_category_prod where prod_cate_id=$pro_cate_id limit 1)) as category_name"]) ->from(self::tableName()) ->where(['and', ['=', 'pro_cate_id', $pro_cate_id], ['=', 'delete_flag', 0]]) ->asArray() ->one(); $result['show_price'] = $this->dealFloat($result['show_price']); return $result; } /** * Des:获取产品详细信息 * Name: getProdInfo * @param $pro_cate_id * @return array|null|\yii\db\ActiveRecord * @author 倪宗锋 */ public function getProdCateInfo($pro_cate_id) { $result = self::find() ->from(self::tableName()) ->where(['=', 'pro_cate_id', $pro_cate_id]) ->asArray() ->one(); return $result; } /** * Function Description:巴士产品获取详情 * Function Name: getBusProdDetail * @param $pro_cate_id * * @return array|null|\yii\db\ActiveRecord * * @author 娄梦宁 */ public function getBusProdDetail($pro_cate_id) { $result = self::find()->select(['pro_cate_id', 'pro_cate_name', "IFNULL(prod_des, '') prod_des", 'category_id', 'sign', 'show_img', 'IFNULL(close_sale_time,24) as close_sale_time', "(select category_name from cms_category where cms_category_id =(select cms_cate_id from cms_category_prod where prod_cate_id=$pro_cate_id limit 1)) as category_name" , 'b.start_area_name', 'b.start_area_id', 'b.start_res_name', 'b.end_res_name', 'b.end_area_name', 'b.end_area_id', 'memo booking_notice']) ->from(self::tableName() . ' as a') ->leftJoin('bus_ticket b', 'a.bus_ticket_id=b.ticket_id') ->where(['and', ['=', 'pro_cate_id', $pro_cate_id]]) ->asArray() ->one(); return $result; } /* * 后台产品列表 */ public function AdminGetList($param) { $where = ['and', ['=', 'a.delete_flag', 0]]; if ($param['category_id'] != '') { $where[] = ['=', 'b.cms_cate_id', $param['category_id']]; } if ($param['pro_cate_name'] != '') { $where[] = ['like', 'pro_cate_name', $param['pro_cate_name']]; } if ($param['is_recom'] != '') { $where[] = ['=', 'is_recom', $param['is_recom']]; } $offset = ($param['current_page'] - 1) * $param['page_size']; $select = [ 'pro_cate_id', 'a.category_id', "if(a.category_id=1,if(a.sign is not null,concat(c.category_name,'(主线路)'),concat(c.category_name,'(子线路)')),c.category_name) as base_category", 'pro_cate_name', 'close_sale_time', 'memo', "IFNULL(prod_des, '') prod_des", 'commission', 'show_img', 'is_recom as is_recom_id', 'if(is_recom=1,"已推荐","未推荐") as is_recom' , "(select 1) as commission_way_id", "(select '按金额') as commission_way", "ifnull((select category_name from cms_category where cms_category_id =(select cms_cate_id from cms_category_prod where prod_cate_id=a.pro_cate_id limit 1)),'') as category_name" , "ifnull(b.cms_cate_id,-1) as cms_category_id" ]; $result = self::find()->select($select) ->from(self::tableName() . ' a') ->leftJoin('cms_category_prod as b', 'b.prod_cate_id = a.pro_cate_id') ->innerJoin(BaseCategory::tableName() . ' c', 'c.category_id = a.category_id') ->where($where) ->groupBy('a.pro_cate_id') ->orderBy('a.pro_cate_id DESC') ->offset($offset) ->limit((int)$param['page_size']) ->asArray() ->all(); $result1 = self::find()->select('count(1) as count') ->from(self::tableName() . ' a') ->leftJoin('cms_category_prod as b', 'b.prod_cate_id=a.pro_cate_id') ->asArray() ->where($where) ->one(); $result1 = $result1['count']; return ['list' => $result, 'count' => $result1]; } /* * 产品推荐 */ public function Recommend($pro_cate_id) { $is_recom = self::find()->select(["is_recom"])->from(self::tableName())->where(['=', 'pro_cate_id', $pro_cate_id])->asArray()->one(); if ($is_recom['is_recom'] == 1) { $count = self::updateAll(['is_recom' => 0], ['=', 'pro_cate_id', $pro_cate_id]); } else { $count = self::updateAll(['is_recom' => 1], ['=', 'pro_cate_id', $pro_cate_id]); } return $count; } /* * 添加产品 */ public function addProd($param) { $values = [ 'category_id' => $param['category_id'], 'pro_cate_name' => $param['pro_cate_name'], 'memo' => $param['memo'], 'sales_count' => rand(1, 10), 'show_img' => $param['show_img'], 'create_time' => date('Y-m-d H:i:s'), 'prod_des' => $param['prod_des'], 'close_sale_time' => $param['close_sale_time'] //截止售卖时间 2017-05-18 fuhc ]; $transaction = Yii::$app->db->beginTransaction(); try { $this->attributes = $values; $res = $this->insert(); if (!$res) { throw new Exception('添加出错'); } $transaction->commit(); return true; } catch (Exception $e) { $transaction->rollBack(); return false; } } /* * 修改show price */ public function changeShowPrice($pro_cate_id) { //查当前产品的子产品最低价 $show_price = ProdMain::find()->select(['min(prod_price) as price'])->from('prod_main')->where(['and', ['=', 'delete_flag', '0'], ['=', 'prod_cate_id', $pro_cate_id]])->asArray()->one(); $show_price = $show_price['price']; $count = self::updateAll(['show_price' => $show_price], ['and', ['=', 'pro_cate_id', $pro_cate_id]]); return $count; } /* * 自定义佣金 */ public function DefineCommission($pro_cate_id, $commission) { $count = self::updateAll(['commission' => $commission], ['and', ['=', 'pro_cate_id', $pro_cate_id]]); return $count; } /* * 后台修改产品信息 */ public function uptAdminProd($param) { $values = [ 'category_id' => $param['category_id'], 'pro_cate_name' => $param['pro_cate_name'], 'memo' => $param['memo'], 'show_img' => $param['show_img'], 'prod_des' => $param['prod_des'], 'update_time' => date('Y-m-d H:i:s'), 'close_sale_time' => $param['close_sale_time'] //截止售卖时间 2017-05-18 fuhc ]; $transaction = Yii::$app->db->beginTransaction(); try { $uptOne = self::findOne(['pro_cate_id' => $param['pro_cate_id']]); $uptOne->attributes = $values; $res = $uptOne->update(); if ($res === false) { throw new Exception('添加出错'); } $transaction->commit(); return true; } catch (Exception $e) { $transaction->rollBack(); return false; } } /* * 产品增量 */ public function addCount($pro_cate_id, $cnt) { $sql = '' . "UPDATE prod_category set sales_count=sales_count+$cnt where pro_cate_id = $pro_cate_id "; $res = $this->getDb()->createCommand($sql)->execute(); if (!$res) { return false; } return true; } /** * Des: * Name: getEntranceTicket * @return array * @author 倪宗锋 */ public function getEntranceTicket() { $result = self::find() ->from(self::tableName()) ->where(['and', ['<>', 'sign', ''], ['=', 'category_id', 2], ['=', 'delete_flag', 0]]) ->indexBy('sign') ->asArray() ->all(); return $result; } /** * Des:同步门票数据 * Name: addEntranceTicketFormCs * @param $prodArr * @return int * @throws \yii\db\Exception * @author 倪宗锋 */ public function addEntranceTicketFormCs($prodArr) { $transaction = Yii::$app->db->beginTransaction(); try { /**添加产品主表数据***************/ $prodValues = []; $prodKeys = [ 'pro_cate_name', 'category_id', 'create_time', 'sign', ]; foreach ($prodArr as $key => $val) { $prodVal = []; $prodVal[] = $val['name']; $prodVal[] = 2; $prodVal[] = date('Y-m-d H:i:s'); $prodVal[] = $key; $prodValues[] = $prodVal; } $count = Yii::$app->db->createCommand()->batchInsert('prod_category', $prodKeys, $prodValues)->execute(); if ($count == 0) { $transaction->rollBack(); return false; } /**获取新添加的产品主表数据及其ID**/ $signArr = array_keys($prodArr); $result = self::find() ->from(self::tableName()) ->where(['and', ['in', 'sign', $signArr], ['=', 'category_id', 2]]) ->indexBy('sign') ->asArray() ->all(); /**将数据产褥prod_main表中*/ $prodMainValues = []; $prodMainKeys = ['prod_cate_id', 'prod_name', 'create_time', 'bus_id']; foreach ($result as $key => $val) { if (!empty($prodArr[$val['sign']]['sub_ticket']) && count($prodArr[$val['sign']]['sub_ticket']) > 0) { $subTicket = $prodArr[$val['sign']]['sub_ticket']; foreach ($subTicket as $subVal) { $prodMainVal = []; $prodMainVal[] = $val['pro_cate_id']; $prodMainVal[] = $subVal['prod_name']; $prodMainVal[] = date('Y-m-d H:i:s'); $prodMainVal[] = $subVal['prod_id']; $prodMainValues[] = $prodMainVal; } } } $count = Yii::$app->db->createCommand()->batchInsert('prod_main', $prodMainKeys, $prodMainValues)->execute(); if ($count == 0) { $transaction->rollBack(); return false; } $transaction->commit(); return true; } catch (Exception $e) { $transaction->rollBack(); return false; } } /** * Des: 删除门票数据 * Name: delEntranceTicketFormCs * @author 倪宗锋 */ public function delEntranceTicketFormCs($prodArr) { $transaction = Yii::$app->db->beginTransaction(); try { $values = [ 'delete_flag' => 1 ]; $signArr = array_keys($prodArr); $res = self::updateAll($values, ['in', 'sign', $signArr]); if ($res === false) { throw new Exception('添加出错'); } $transaction->commit(); return true; } catch (Exception $e) { $transaction->rollBack(); return false; } } /** * Des:修改订单状态为激活 * Name: interEntranceTicketFormCs * @param $new_bus_arr_inter * @return bool * @throws \yii\db\Exception * @author 倪宗锋 */ public function interEntranceTicketFormCs($new_bus_arr_inter) { $transaction = Yii::$app->db->beginTransaction(); try { $values = [ 'delete_flag' => 0 ]; $signArr = array_keys($new_bus_arr_inter); $res = self::updateAll($values, ['in', 'sign', $signArr]); if ($res === false) { throw new Exception('编辑出错'); } $transaction->commit(); return true; } catch (Exception $e) { $transaction->rollBack(); return false; } } /** * Des:每日增加产品的销售量 每月1号重置产品的销售量 * Name: setSaleCnt * @param $day * @return bool * @throws \yii\db\Exception * @author 倪宗锋 */ public function setSaleCnt($day) { if ($day == 1) { $values = [ 'sales_count' => new Expression("1+ROUND(RAND()*10,0)") ]; } else { $values = [ 'sales_count' => new Expression("sales_count+sales_count*0.05+1+ROUND(RAND()*5,0)") ]; } $transaction = Yii::$app->db->beginTransaction(); try { $res = self::updateAll($values); if ($res === false) { throw new Exception('添加出错'); } $transaction->commit(); return true; } catch (Exception $e) { $transaction->rollBack(); return false; } } /** * Des:LBS获取产品列表 * Name: getLBSListByCmsCate * @param $point * @param $cms_cate_id * @return array * @author 倪宗锋 */ public function getLBSListByCmsCate($point, $cms_cate_id) { $pointArr = explode(',', $point);//经纬度坐标 if (empty($pointArr['0']) || empty($pointArr['1'])) { return []; } $longitude = $pointArr['0']; $latitude = $pointArr['1']; $sql = '' . "SELECT round(if(a.start_lbs>a.end_lbs,a.end_lbs,a.start_lbs),3) 'lbs', b.pro_cate_id,b.sales_count, b.pro_cate_name,IFNULL(prod_des, '') prod_des,if(category_id=1,(if(sign is null,category_id,1000)),category_id) as category_id ,show_price,concat(show_img,'.','min.jpg') as show_img from ( select ticket_id,line_type,sqrt( ((({$longitude}-start_res_longitude)*PI()*12656*cos((($latitude+start_res_latitude)/2)*PI()/180)/180) * (({$longitude}-start_res_longitude)*PI()*12656*cos ((($latitude+start_res_latitude)/2)*PI()/180)/180)) + ((($latitude-start_res_latitude)*PI()*12656/180) * (($latitude-start_res_latitude)*PI()*12656/180)) )/2 as start_lbs, sqrt( ((({$longitude}-end_res_longitude)*PI()*12656*cos((($latitude+end_res_latitude)/2)*PI()/180)/180) *(({$longitude}-end_res_longitude)*PI()*12656*cos ((($latitude+end_res_latitude)/2)*PI()/180)/180) )+((($latitude-end_res_latitude)*PI()*12656/180) *(($latitude-end_res_latitude)*PI()*12656/180)) )/2 as end_lbs, start_res_longitude, start_res_latitude,end_res_longitude,end_res_latitude from bus_ticket where start_res_longitude is not null and end_res_longitude is not NULL and start_res_latitude is not null and end_res_latitude is not NULL ) a JOIN prod_category b on a.ticket_id=b.bus_ticket_id JOIN cms_category_prod c on b.pro_cate_id = c.prod_cate_id WHERE b.sign is NULL and c.cms_cate_id={$cms_cate_id} and b.show_img <> '' and b.delete_flag=0 ORDER BY lbs LIMIT 10 "; $result = Yii::$app->getDb()->createCommand($sql)->queryAll(); foreach($result as &$v){ $v['show_price'] = $this->dealFloat($v['show_price']); } return $result; } /** * Des: * Name: getEntranceHotel * @return array * @author 付泓程 */ public function getEntranceHotel() { $result = self::find() ->from(self::tableName()) ->where(['and', ['<>', 'sign', ''], ['=', 'category_id', 3]]) ->indexBy('sign') ->asArray() ->all(); return $result; } /** * Des:同步酒店数据 * Name: addEntranceHotelFormCs * @param $prodArr * @return bool * @throws \yii\db\Exception * @author 付泓程 */ public function addEntranceHotelFormCs($prodArr) { $transaction = Yii::$app->db->beginTransaction(); try { /**添加产品主表数据***************/ $prodValues = []; $prodKeys = [ 'pro_cate_name', 'category_id', 'create_time', 'sign', ]; foreach ($prodArr as $key => $val) { $prodVal = []; $prodVal[] = $val['name']; $prodVal[] = 3; $prodVal[] = date('Y-m-d H:i:s'); $prodVal[] = $key; $prodValues[] = $prodVal; } $count = Yii::$app->db->createCommand()->batchInsert('prod_category', $prodKeys, $prodValues)->execute(); if ($count == 0) { $transaction->rollBack(); return false; } /**获取新添加的产品主表数据及其ID**/ $signArr = array_keys($prodArr); $result = self::find() ->from(self::tableName()) ->where(['and', ['in', 'sign', $signArr], ['=', 'category_id', 3]]) ->indexBy('sign') ->asArray() ->all(); /**将数据插入prod_main表中*/ $prodMainValues = []; $prodMainKeys = ['prod_cate_id', 'prod_name', 'create_time', 'bus_id']; foreach ($result as $key => $val) { if (!empty($prodArr[$val['sign']]['sub_ticket']) && count($prodArr[$val['sign']]['sub_ticket']) > 0) { $subTicket = $prodArr[$val['sign']]['sub_ticket']; foreach ($subTicket as $subVal) { $prodMainVal = []; $prodMainVal[] = $val['pro_cate_id']; $prodMainVal[] = $subVal['prod_name']; $prodMainVal[] = date('Y-m-d H:i:s'); $prodMainVal[] = $subVal['prod_id']; $prodMainValues[] = $prodMainVal; } } } $count = Yii::$app->db->createCommand()->batchInsert('prod_main', $prodMainKeys, $prodMainValues)->execute(); if ($count == 0) { $transaction->rollBack(); return false; } $transaction->commit(); return true; } catch (Exception $e) { $transaction->rollBack(); return false; } } /** * Des: 删除酒店数据 * Name: delEntranceTicketFormCs * @author 付泓程 */ public function delEntranceHotelFormCs($prodArr) { $transaction = Yii::$app->db->beginTransaction(); try { $values = [ 'delete_flag' => 1 ]; $signArr = array_keys($prodArr); $res = self::updateAll($values, ['in', 'sign', $signArr]); if ($res === false) { throw new Exception('删除出错'); } $transaction->commit(); return true; } catch (Exception $e) { $transaction->rollBack(); return false; } } /** * Des:修改订单状态为激活 * Name: interEntranceHotelFormCs * @param $new_bus_arr_inter * @return bool * @throws \yii\db\Exception * @author 付泓程 */ public function interEntranceHotelFormCs($new_bus_arr_inter) { $transaction = Yii::$app->db->beginTransaction(); try { $values = [ 'delete_flag' => 0 ]; $signArr = array_keys($new_bus_arr_inter); $res = self::updateAll($values, ['in', 'sign', $signArr]); if ($res === false) { throw new Exception('编辑出错'); } $transaction->commit(); return true; } catch (Exception $e) { $transaction->rollBack(); return false; } } /** * Function Description:处理价格 * Function Name: dealFloat * @param $float * * @return float * * @author LUOCJ */ public function dealFloat($float) { $int = floor($float); if ($float - $int == 0) { $float = $int; } return $float; } }