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; } } }