|
- <?php
-
- /**
- * Created by PhpStorm.
- * User: Steven
- * Date: 2016/10/15
- * Time: 15:43
- * 销售规则
- */
- class saleRule extends base
- {
- /**
- * 根据票种信息获取销售规则列表
- * @param $param
- * @return mixed
- */
- public function getRuleList($param)
- {
- $user_id = $this->user_id;
- $ticket_list = isset($param['ticket_id']) ? $param['ticket_id'] : false;
- $line_type = isset($param['line_type']) ? $param['line_type'] : false; //线路类型:255:直通、256:穿梭 316:组合
- $current_page = isset($param['current_page']) ? $param['current_page'] : false;
- $page_size = isset($param['page_size']) ? $param['page_size'] : false;
- if (false === $ticket_list || false === $current_page || false === $page_size || false === $line_type) {
- $result['code'] = '2';
- $result['info'] = "缺少必要参数";
- return $result;
- }
- $ticket_id = explode(',', $ticket_list);
- $ticket_info = $this->getTicketById($ticket_id[0]); //获取票种基本信息
- if (!$ticket_info) {
- $result['code'] = '1';
- $result['info'] = '获取票种基本信息失败';
- return $result;
- }
- $sql = "CALL SP_GET_TICKET_SALE_RULE($user_id,$ticket_id[0],$current_page,$page_size,$line_type)";
- zzcsUtils::writeLog($sql);
- $res = $this->procQuery($sql);
- if ($res['code'] != 0) {
- $json["code"] = (string)$res['code'];
- $json["info"] = $res['info'];
- return $json;
- }
- $result['code'] = '0';
- $result['info'] = '销售规则获取成功';
- $result['page'] = array(
- 'currpage' => $res['data'][0][0]["currpage"],
- 'total_page' => $res['data'][0][0]["total_page"],
- 'total_count' => $res['data'][0][0]["total"],
- 'page_size' => $res['data'][0][0]["page_size"]
- );
- $result['ticket_info'] = $ticket_info;
- $result['station'] = $res['data'][1];
- return $result;
-
- }
-
-
- /**
- * 获取销售规则基本信息
- * @param $param
- * @return mixed
- */
- public function getRuleBaseInfo($param)
- {
- $user_id = $this->user_id;
- $ticket_id = isset($param['ticket_id']) ? $param['ticket_id'] : false;
- $supplier_id = isset($param['supplier_id']) ? $param['supplier_id'] : false;
- if (!$ticket_id || !$supplier_id) {
- $result['code'] = 2;
- $result['info'] = "缺少必要参数";
- return $result;
- }
- $ticket_id_list = explode(',', $ticket_id);
- $supplier_id_list = explode(',', $supplier_id);
- $sql = "CALL SP_GET_SALE_RULE_BY_SUPPLIER_ID($user_id,$ticket_id_list[0],$supplier_id_list[0])";
- zzcsUtils::writeLog($sql);
- $res = $this->procQuery($sql);
- if ($res['code'] != 0) {
- $json["code"] = (string)$res['code'];
- $json["info"] = $res['info'];
- return $json;
- }
- $saleType = Dictionary::saleType(); //销售方式
- $define_type = Dictionary::define_type(); //佣金定义类型
- $back_commision_type = Dictionary::back_commision_type(); //返佣类型
- $back_commision_method = Dictionary::back_commision_method(); //返佣方式
- $result['code'] = '0';
- $result['info'] = '获取销售规则获取成功';
- $result['base_info'] = $res['data'][0][0];
- $result['base_info']['authority_status'] = "1";
- $result['saleType'] = $saleType;
- $result['define_type'] = $define_type;
- $result['back_commision_type'] = $back_commision_type;
- $result['back_commision_method'] = $back_commision_method;
- return $result;
- }
-
-
- /*
- * 修改销售规则的授权状态
- * @param $param
- * @return mixed
- */
- public function updateAuthorize($param)
- {
- $user_id = $this->user_id;
- $ticket_list = isset($param['ticket_list']) ? $param['ticket_list'] : false;
- $authority_status = isset($param['authority_status']) ? $param['authority_status'] : false;
- $supplier_id = isset($param['supplier_id']) ? $param['supplier_id'] : false;
- $line_id = isset($param['line_id']) ? $param['line_id'] : false;
- if (!$ticket_list || $authority_status === false || !$supplier_id) {
- $result['code'] = 2;
- $result['info'] = "缺少必要参数";
- return $result;
- }
- $tick_list = explode(",", $ticket_list);
- foreach ($tick_list as $value) {
- $sql = "select count(*) as num from opera_tickets_distrib where TICKET_ID=$value AND SUPPLIER_ID=$supplier_id";
- $res_exist = $this->query($sql);
- if ($res_exist[0]['num'] > 0) {//更新
- $sql_auth_update = "update opera_tickets_distrib SET AUTHORITY_STATUS=$authority_status,UPDATE_USER_ID=$user_id,UPDATE_TIME=now() WHERE TICKET_ID=$value AND SUPPLIER_ID=$supplier_id;";
- $res_update = $this->exec($sql_auth_update);
- } else { //新增
- $sql_proc = "CALL SP_GET_SALE_RULE_BY_SUPPLIER_ID($user_id,$ticket_list,$supplier_id)";
- zzcsUtils::writeLog($sql_proc);
- $res = $this->procQuery($sql_proc);
- if ($res['code'] != 0) {
- $json["code"] = (string)$res['code'];
- $json["info"] = $res['info'];
- return $json;
- }
- $res_ticket = $res['data'][0][0];
- $sale_type = $res_ticket['sale_type']; //销售方式
- $commision_flag = $res_ticket['commision_flag']; //是否有佣金规则
- $commision_type = $res_ticket['commision_type']; //佣金类别
- $back_commision_type = $res_ticket['back_commision_type']; //返佣类别
- $back_commision_method = $res_ticket['back_commision_method']; //返佣方式,按销售或按结算
- $back_percent = empty($res_ticket['back_percent']) ? 0 : $res_ticket['back_percent']; //返佣比例
- $back_value = empty($res_ticket['back_value']) ? 0 : $res_ticket['back_value']; //返佣金额
- $prod_price = empty($res_ticket['prod_price']) ? 0 : $res_ticket['prod_price']; //分销价
-
- $sql_auth_insert = "INSERT INTO opera_tickets_distrib
- (CREATE_USER_ID,CREATE_TIME,UPDATE_USER_ID,UPDATE_TIME,CANCEL_FLAG,LINE_ID,TICKET_ID,SUPPLIER_ID,SALE_TYPE,COMMISION_FLAG,COMMISION_TYPE,BACK_COMMISION_TYPE,BACK_COMMISION_METHOD,BACK_PERCENT,BACK_VALUE,PROD_PRICE,AUTHORITY_STATUS)
- VALUES(
- $user_id,NOW(),$user_id,NOW(),0,$line_id,$ticket_list,$supplier_id,$sale_type,$commision_flag,$commision_type,$back_commision_type,$back_commision_method,$back_percent,$back_value,$prod_price,$authority_status)";
- zzcsUtils::writeLog($sql);
- $res_update = $this->exec($sql_auth_insert);
- }
-
- }
- if ($res_update) {
- $code = 0;
- $msg = '票种授权状态修改成功';
- } else {
- $code = 1;
- $msg = '票种授权状态修改失败';
- }
- $result['code'] = $code;
- $result['info'] = $msg;
- return $result;
- }
-
- /**
- * 根据票种修改规则信息
- * @param $param
- * @return mixed
- */
- public function updateRule($param)
- {
- $sql_str = "";
- $ticket_list = isset($param['ticket_list']) ? $param['ticket_list'] : false; //票种ID列表
- $supplier_id = isset($param['supplier_list']) ? $param['supplier_list'] : false; //渠道商ID列表
- if (!$ticket_list || !$supplier_id) {
- $result['code'] = 2;
- $result['info'] = "缺少必要参数";
- return $result;
- }
- $tick_list = explode(',', $ticket_list);
- $supp_list = explode(',', $supplier_id);
- foreach ($supp_list as $v) {
- foreach ($tick_list as $value) {
- $sql = "select count(*) as num from opera_tickets_distrib where TICKET_ID=$value AND SUPPLIER_ID=$v and cancel_flag = 0";
- $res = $this->query($sql);
- if ($res[0]['num'] == 0) //数据库表无记录,新增
- {
- $sql_add = $this->assembleAddSql($value, $v, $param);
- $sql_str .= $sql_add;
- } else //有记录,更新
- {
- $sql_update = $this->assembleUpdateSql($value, $v, $param);
- $sql_str .= $sql_update;
- }
- }
- }
- //执行SQL
- zzcsUtils::writeLog($sql_str);
- $res = $this->exec($sql_str);
- if ($res) {
- $code = 0;
- $msg = '票种销售规则修改成功';
- } else {
- $code = 1;
- $msg = '票种销售规则修改失败';
- }
- $result['code'] = (string)$code;
- $result['info'] = $msg;
- return $result;
-
- }
-
- /**
- * 修改销售规则时拼接新增记录的sql
- * @param $ticket
- * @param $param
- * @return string
- */
- private function assembleAddSql($ticket, $supplier_id, $param)
- {
- $user_id = $this->user_id;
- $sale_type = isset($param['sale_type']) ? $param['sale_type'] : false; //销售方式
- $prod_price = isset($param['prod_price']) ? $param['prod_price'] : false; //分销价
- $is_rule = isset($param['is_rule']) ? $param['is_rule'] : false;//是否有佣金规则 1:有,0:无
- $authority_status = isset($param['authority_status']) ? $param['authority_status'] : false; //授权开关 0:关 1:开
- $line_id = isset($param['line_id']) ? $param['line_id'] : false;
- if (!$ticket || $sale_type === false || $prod_price === false || $is_rule === false || $authority_status === false || !$line_id) {
- $result['code'] = 2;
- $result['info'] = "缺少必要参数";
- return $result;
- }
- $sql_fore = "CREATE_USER_ID,CREATE_TIME,UPDATE_USER_ID,UPDATE_TIME,LINE_ID,TICKET_ID,SUPPLIER_ID,SALE_TYPE,PROD_PRICE,COMMISION_FLAG,AUTHORITY_STATUS"; //sql键
- $sql_tail = "$user_id,NOW(),$user_id,NOW(),$line_id,$ticket,$supplier_id,$sale_type,$prod_price,$is_rule,$authority_status";//sql值
- if ($is_rule == 1) {//有佣金规则
- $define_type = isset($param['define_type']) ? $param['define_type'] : false; //佣金规则类型
- if (!$define_type) {
- $result['code'] = 2;
- $result['info'] = "缺少必要参数";
- return $result;
- }
- $sql_fore .= ",COMMISION_TYPE";
- $sql_tail .= ",$define_type";
- if ($define_type == 304) // 304:产品定义
- {
- $commision_type = isset($param['commision_type']) ? $param['commision_type'] : false; //返佣类别
- $commision_methed = isset($param['commision_methed']) ? $param['commision_methed'] : false; //返佣方式
- if (!$commision_type || !$commision_methed) {
- $result['code'] = 2;
- $result['info'] = "缺少必要参数";
- return $result;
- }
- $sql_fore .= ",BACK_COMMISION_TYPE,BACK_COMMISION_METHOD";
- $sql_tail .= ",$commision_type,$commision_methed";
- if ($commision_methed == 308 || $commision_methed == 309) //按照销售金额
- {
- $back_value = isset($param['back_value']) ? $param['back_value'] : 0; //返佣比例
- $sql_fore .= ",BACK_PERCENT";
- $sql_tail .= ",$back_value";
- } elseif ($commision_methed == 335) //按照销售单位
- {
- $back_value = isset($param['back_value']) ? $param['back_value'] : 0; //值
- $sql_fore .= ",BACK_VALUE";
- $sql_tail .= ",$back_value";
- }
- }
- // elseif ($define_type == 303) { //303 渠道定义
- // $sql_fore .= ",CANCEL_FLAG";
- // $sql_tail .= ",1";
- // }
- }
- $sql_str = "INSERT INTO opera_tickets_distrib($sql_fore) VALUES($sql_tail);";
- return $sql_str;
- }
-
- /**
- * 修改销售规则时拼接更新记录的sql
- * @param $ticket
- * @param $param
- * @return string
- */
- private function assembleUpdateSql($ticket, $supplier_id, $param)
- {
- $user_id = $this->user_id;
- $sale_type = isset($param['sale_type']) ? $param['sale_type'] : false; //销售方式
- $prod_price = isset($param['prod_price']) ? $param['prod_price'] : false; //分销价
- $is_rule = isset($param['is_rule']) ? $param['is_rule'] : false;//是否有佣金规则 1:有,0:无
- $authority_status = isset($param['authority_status']) ? $param['authority_status'] : false; //授权开关 0:关 1:开
- if (!$ticket || $sale_type === false || $prod_price === false || $is_rule === false || $authority_status === false) {
- $result['code'] = 2;
- $result['info'] = "缺少必要参数";
- return $result;
- }
- $sql_base = "UPDATE_USER_ID=$user_id,UPDATE_TIME=now(),SUPPLIER_ID=$supplier_id,SALE_TYPE=$sale_type,PROD_PRICE=$prod_price,COMMISION_FLAG=$is_rule,AUTHORITY_STATUS=$authority_status";
- if ($is_rule == 1) {//有佣金规则
- $define_type = isset($param['define_type']) ? $param['define_type'] : false; //佣金规则类型
- if (!$define_type) {
- $result['code'] = 2;
- $result['info'] = "缺少必要参数";
- return $result;
- }
- $sql_base .= ",COMMISION_TYPE=$define_type";
- if ($define_type == 304) // 303:渠道定义 304:产品定义
- {
- $commision_type = isset($param['commision_type']) ? $param['commision_type'] : false; //返佣类别
- $commision_methed = isset($param['commision_methed']) ? $param['commision_methed'] : false; //返佣方式
- if (!$commision_type || !$commision_methed) {
- $result['code'] = 2;
- $result['info'] = "缺少必要参数";
- return $result;
- }
- $sql_base .= ",BACK_COMMISION_TYPE=$commision_type,BACK_COMMISION_METHOD=$commision_methed";
- if ($commision_methed == 308 || $commision_methed == 309) { //按照销售金额
- $back_value = isset($param['back_value']) ? $param['back_value'] : 0; //返佣比例
- $sql_base .= ",BACK_PERCENT=$back_value";
- } elseif ($commision_methed == 335) { //按照销售单位
- $back_value = isset($param['back_value']) ? $param['back_value'] : 0; //值
- $sql_base .= ",BACK_VALUE=$back_value";
- }
- }
- // elseif ($define_type == 303) { //303 渠道定义
- // $sql_base .= ",CANCEL_FLAG=1";
- // }
- }
- $sql_str = "update opera_tickets_distrib SET $sql_base WHERE TICKET_ID=$ticket AND SUPPLIER_ID=$supplier_id;";
- return $sql_str;
- }
-
- /**
- * 根据票种ID获取票种基本信息
- * @param $ticketId
- * @return bool
- */
- private function getTicketById($ticketId)
- {
- $sql = "SELECT ticket_id,line_id,
- (select type_name from dict_type where id = seat_type) as seat_type_name,
- (select type_name from dict_type where id = human_type) as human_type_name,
- prod_price,
- cus_price
- FROM opera_tickets
- WHERE cancel_flag = 0 AND TICKET_ID=$ticketId";
- $res = $this->query($sql);
- if ($res) {
- return $res[0];
- } else {
- return false;
- }
- }
-
- }
|