EOT
}
}
&out_enc;
&html_out("stars_material_list02.html");
}
#---------------------------------------
# 購入
#---------------------------------------
sub buy {
if ($in{'seq'} eq ''){&stars_err("CODE:MB-01 指定が正しくありません。");}
if ($in{'pcid'} eq ''){&stars_err("キャラクターが指定されていません。");}
$sql = "select a.crid,b.name,a.pdid,c.pdname,a.file_name1,a.file_name2,a.file_name3,a.sex,a.class,a.race,a.age,a.figure_str,a.skin_str,a.hair_str,a.eye_str,a.height,a.add_price,c.price,a.buy_pcid,a.open_time,a.reserve_time,substr(a.close_time + '-1 days',1,19) from material a,creator b,goods c where ";
$sql .= "a.seq = $in{'seq'} and a.apply_state = 1 and a.buy_pcid is null and a.open_time <= now() and a.reserve_time < now() and a.crid = b.id and a.crid <> '1101' and a.pdid = c.pdid;";
$ref = $dbh->selectall_arrayref($sql) or &stars_err("CODE:M-01 エラーが発生しました。");
($crid,$out{'cr_name'},$pdid,$out{'pdname'},$file_name1,$file_name2,$file_name3,$pd_sex,$pd_class,$pd_race,$out{'pd_age'},$pd_figure,$pd_skin,$pd_hair,$pd_eye,$out{'height'},$add_price,$price,$buy_pcid,$open_time,$reserve_time,$close_time)=@{$ref->[0]};
if ($buy_pcid ne ''){&stars_err("この商品を購入する事はできません。");}
if ($crid eq ''){&stars_err("CODE:MB-02 指定が正しくありません。");}
$price += $add_price;
$za_rex = &get_rex(undef,$uid);
if ($za_rex < $price && $uid ne 4){&stars_err("REXポイント残高が不足しております。
購入価格:$price Rex REXポイント残高:$za_rex Rex");}
$out{'price'} = $price;
$out{'reserve_time'} = substr($reserve_time,0,19);
$out{'reserve_time'} =~ s/\-/\//g;
&out_enc;
&html_out("stars_material_buy01.html");
}
#---------------------------------------
# 購入
#---------------------------------------
sub buy2 {
if ($in{'seq'} eq ''){&stars_err("CODE:MB-03 指定が正しくありません。");}
if ($in{'pcid'} eq ''){&stars_err("キャラクターが指定されていません。");}
$sql = "select count(*) from material_reservation where order_seq = $in{'seq'} and pcid = '$in{'pcid'}';";
$ref = $dbh->selectall_arrayref($sql) or &stars_err("CODE:M-01 エラーが発生しました。");
($cnt)=@{$ref->[0]};
if ($cnt eq ''){$cnt = 0;}
if ($cnt > 0){&stars_err("この商品に既に予約しています。");}
$sql = "select a.crid,b.name,a.pdid,c.pdname,a.file_name1,a.file_name2,a.file_name3,a.sex,a.class,a.race,a.age,a.figure_str,a.skin_str,a.hair_str,a.eye_str,a.height,a.add_price,c.price,a.buy_pcid,a.open_time,a.reserve_time,substr(a.close_time + '-1 days',1,19) from material a,creator b,goods c where ";
$sql .= "a.seq = $in{'seq'} and a.apply_state = 1 and a.buy_pcid is null and a.open_time <= now() and a.reserve_time < now() and a.crid = b.id and a.crid <> '1101' and a.pdid = c.pdid;";
$ref = $dbh->selectall_arrayref($sql) or &stars_err("CODE:M-01 エラーが発生しました。");
($crid,$out{'cr_name'},$pdid,$out{'pdname'},$file_name1,$file_name2,$file_name3,$pd_sex,$pd_class,$pd_race,$out{'pd_age'},$pd_figure,$pd_skin,$pd_hair,$pd_eye,$out{'height'},$add_price,$price,$buy_pcid,$open_time,$reserve_time,$close_time)=@{$ref->[0]};
if ($buy_pcid ne ''){&stars_err("この商品を購入する事はできません。");}
if ($crid eq ''){&stars_err("CODE:MB-04 指定が正しくありません。");}
$price += $add_price;
# $price = $price * 2;
$za_rex = &get_rex(undef,$uid);
if ($za_rex < $price && $uid ne 4){&stars_err("Rexポイント残高が不足しております。
購入料金:$price REXポイント残高:$za_rex");}
$out{'price'} = $price;
$kakin = $price * -1;
$cont = "SEQ:$in{'seq'},UID:$uid,PCID:$in{'pcid'},PCNAME:$pcname,PDID:$pdid,PRODUCT:$out{'pdname'},PRICE:$price,CRID:$crid,CRNAME:$out{'cr_name'}";
$rtn = &use_rex_stars($uid,$kakin,'STARSマテリアル購入',$cont);
if ($rtn ne 0){
&sendmail('log@rexi.jp','stars@rexi.jp','STARSマテリアル購入エラー',$rtn . "\n" . $cont);
}
$sql = "insert into material_reservation (order_seq,uid,pcid,amount,result) values ($in{'seq'},$uid,'$in{'pcid'}',$price,3);";
$dbh->do($sql) or &stars_err("CODE:STU-03 エラーが発生しました。");
#即決したので確定処理
$sql = "update material set buy_pcid = '$in{'pcid'}',buy_uid = $uid,buy_time = now() where seq = $in{'seq'};";
$dbh->do($sql) or &stars_err("CODE:STS-01 エラーが発生しました。");
$sql = "update character set material_seq = $in{'seq'} where pcid = '$in{'pcid'}';";
&si_rtn_db_data('insert_data',$sql,'si');
$sql = "insert into reservation (usr_seq,crid,pdid,reserve_date,result_date,amount,result,pcid,pcname,closing,delivered_date,delivered_result,delivered_result_date,delivered_filename1,delivered_filename2,delivered_filename3,game,material_seq";
$sql .= ") values (";
$sql .= "$uid,'$crid','$pdid',now(),now(),$price,1,'$in{'pcid'}','$pcname',now(),now(),3,now(),'$file_name1'";
if ($file_name2 ne ''){$sql .= ",'$file_name2'";}
else{$sql .= ",NULL";}
if ($file_name3 ne ''){$sql .= ",'$file_name3'";}
else{$sql .= ",NULL";}
$sql .= ",'si',$in{'seq'}";
$sql .= ");";
$dbh->do($sql) or &stars_err("CODE:STS-02 エラーが発生しました。");
if ($pdid eq 'C02'){ #アイコンセット
$f_pass = "/home/rexi-jp/public_html/stars/data/material/$file_name1";
$r_pass = "/public_html/stars/data/si/";
&sv_copy(undef,undef,undef,$r_pass,$f_pass);
$sql = "insert into stars_data (pcid,pdid,pdname,crid,crname,file_name,url) values ('$in{'pcid'}','$pdid','$out{'pdname'}','$crid','$out{'cr_name'}','$file_name1','http://rexis.jp/stars/data/si/$file_name1";
# &si_rtn_db_data('insert_data',$sql,'si');
$f_pass = "/home/rexi-jp/public_html/stars/data/material/$file_name2";
$r_pass = "/public_html/stars/data/si/";
&sv_copy(undef,undef,undef,$r_pass,$f_pass);
$sql = "insert into stars_data (pcid,pdid,pdname,crid,crname,file_name,url) values ('$in{'pcid'}','$pdid','$out{'pdname'}','$crid','$out{'cr_name'}','$file_name2','http://rexis.jp/stars/data/si/$file_name2";
# &si_rtn_db_data('insert_data',$sql,'si');
$sql = "update character set icon = 'http://rexis.jp/stars/data/si_mypage/$file_name1' where pcid = '$in{'pcid'}';";
&si_rtn_db_data('insert_data',$sql,'si');
}
elsif ($pdid eq 'C13'){ #スタートセット
$f_pass = "/home/rexi-jp/public_html/stars/data/material/$file_name1";
$r_pass = "/public_html/stars/data/si/";
&sv_copy(undef,undef,undef,$r_pass,$f_pass);
$sql = "insert into stars_data (pcid,pdid,pdname,crid,crname,file_name,url) values ('$in{'pcid'}','$pdid','$out{'pdname'}','$crid','$out{'cr_name'}','$file_name1','http://rexis.jp/stars/data/si/$file_name1";
# &si_rtn_db_data('insert_data',$sql,'si');
$f_pass = "/home/rexi-jp/public_html/stars/data/material/$file_name2";
$r_pass = "/public_html/stars/data/si/";
&sv_copy(undef,undef,undef,$r_pass,$f_pass);
$sql = "insert into stars_data (pcid,pdid,pdname,crid,crname,file_name,url) values ('$in{'pcid'}','$pdid','$out{'pdname'}','$crid','$out{'cr_name'}','$file_name2','http://rexis.jp/stars/data/si/$file_name2";
# &si_rtn_db_data('insert_data',$sql,'si');
$f_pass = "/home/rexi-jp/public_html/stars/data/material/$file_name3";
$r_pass = "/public_html/stars/data/si/";
&sv_copy(undef,undef,undef,$r_pass,$f_pass);
$sql = "insert into stars_data (pcid,pdid,pdname,crid,crname,file_name,url) values ('$in{'pcid'}','$pdid','$out{'pdname'}','$crid','$out{'cr_name'}','$file_name3','http://rexis.jp/stars/data/si/$file_name3";
# &si_rtn_db_data('insert_data',$sql,'si');
$sql = "update character set icon = 'http://rexis.jp/stars/data/si_mypage/$file_name2' where pcid = '$in{'pcid'}';";
&si_rtn_db_data('insert_data',$sql,'si');
}
elsif ($pdid eq 'S01'){ #SINN透過全身図
$f_pass = "/home/rexi-jp/public_html/stars/data/material/$file_name1";
$r_pass = "/public_html/stars/data/si/";
&sv_copy(undef,undef,undef,$r_pass,$f_pass);
$sql = "insert into stars_data (pcid,pdid,pdname,crid,crname,file_name,url) values ('$in{'pcid'}','$pdid','$out{'pdname'}','$crid','$out{'cr_name'}','$file_name1','http://rexis.jp/stars/data/si/$file_name1";
# &si_rtn_db_data('insert_data',$sql,'si');
}
if ($pdid eq 'C13' || $pdid eq 'S01'){
#サムネイル生成
$img1 = "/home/rexi-jp/public_html/stars/data/material/$file_name1";
$img2 = "/home/rexi-jp/public_html/stars/data/tmp/$file_name1";
$r_pass = "/public_html/stars/data/si_thumbnail/";
($format,$width,$height) = &GetImageSize($img1);
if ($width > 100 || $height > 100){
if ($width > $height){
#横長の場合
system "convert -resize 100 +profile iptc -quality 100 $img1 $img2";
}
else{
#縦長、または同じの場合
system "convert -resize x100 +profile iptc -quality 100 $img1 $img2";
}
&sv_copy(undef,undef,undef,$r_pass,$img2);
}
$img1 = "/home/rexi-jp/public_html/stars/data/material/$file_name1";
$img2 = "/home/rexi-jp/public_html/stars/data/tmp/$file_name1";
$r_pass = "/public_html/stars/data/si_mypage/";
system "convert -resize 300x557 +profile iptc -quality 100 $img1 $img2";
&sv_copy(undef,undef,undef,$r_pass,$img2);
$sql = "update character set zensin = 'http://rexis.jp/stars/data/si_mypage/$file_name1' where pcid = '$in{'pcid'}';";
&si_rtn_db_data('insert_data',$sql,'si');
}
#ユーザーデータ取得
$dbh_pl = &connectDB($plDB);
$sql = "select name,mail from userdat where seq = $uid;";
$ref = $dbh_pl->selectall_arrayref($sql) or &stars_err("エラーが発生しました。");
($name,$mail)=@{$ref->[0]};
$mail_reserve_time = substr($reserve_time,0,19);
$mailbody =<<"EOT";
$name 様
お世話になっております、REXiです。
このたびは、STARSマテリアルをご利用いただき、まことにありがとうございます。
お客様が購入された内容の詳細をお送りします。
●ゲーム
SINN
●発注キャラクター
$in{'pcid'} $pcname
●商品
$out{'pdname'}
●クリエーター
$out{'cr_name'}
今後とも、よろしくお願いします。
$mailfooter
EOT
&sendmail($mail,'stars@rexi.jp','【STARS】マテリアル購入',$mailbody);
$sql = "select a.crid,b.name,a.pdid,c.pdname,a.file_name1,a.file_name2,a.file_name3,a.sex,a.class,a.race,a.age,a.figure_str,a.skin_str,a.hair_str,a.eye_str,a.height,a.add_price,c.price,a.buy_pcid,a.open_time,a.reserve_time,substr(a.close_time + '-1 days',1,19),a.position from material a,creator b,goods c where a.seq = $in{'seq'} and a.apply_state = 1 and a.crid = b.id and a.crid <> '1101' and a.pdid = c.pdid;";
$ref = $dbh->selectall_arrayref($sql) or &stars_err("CODE:M-01 エラーが発生しました。");
($crid,$out{'cr_name'},$pdid,$out{'pdname'},$file_name1,$file_name2,$file_name3,$pd_sex,$pd_class,$pd_race,$out{'pd_age'},$pd_figure,$pd_skin,$pd_hair,$pd_eye,$out{'height'},$add_price,$price,$buy_pcid,$open_time,$reserve_time,$close_time,$position)=@{$ref->[0]};
$out{'game'} = 'SINN';
$out{'open_time'} = substr($open_time,5,5);
$out{'open_time'} =~ s/\-/\//g;
$reserve_time2 = $reserve_time;
$open_time2 = $open_time;
$reserve_time =~ s/\-/\//g;
$reserve_time = substr($reserve_time,5,11);
$reserve_time =~ s/\-/\//g;
$out{'price'} = $price + $add_price;
$out{'price2'} = $out{'price'} * 2;
$out{'sex_str'} = @si_sex_mark[$pd_sex];
if ($out{'sex_str'} eq ''){$out{'sex_str'} = '性別自由';}
$out{'class_str'} = @si_class_str[$pd_class];
if ($out{'class_str'} eq ''){$out{'class_str'} = 'クラス自由';}
$out{'race_str'} = @si_race_str[$pd_race];
if ($out{'race_str'} eq ''){$out{'race_str'} = '種族自由';}
if ($position eq '' && ($pd_class eq 1 || $pd_class eq 2)){$out{'position'} = '聖職者、信者';}
elsif ($position eq ''){$out{'position'} = '立場自由';}
else{
@ary_position = ();
@ary_position = split(/\,/,$position);
$f = 0;
foreach(@ary_position){
$fi_id = $_;
$out{'position'} .= @si_position_str[$fi_id];
if ($f ne $#ary_position){$out{'position'} .= "、";}
$f++;
}
if (substr($out{'position'},-2) eq "、"){$out{'position'} = substr($out{'position'},0,-2);}
}
@ary_figure = ();
@ary_figure = split(/\,/,$pd_figure);
$f = 0;
foreach(@ary_figure){
$fi_id = $_;
$out{'figure_str'} .= @si_figure_str[$fi_id];
if ($f ne $#ary_figure){$out{'figure_str'} .= "、";}
$f++;
}
@ary_skin = ();
@ary_skin = split(/\,/,$pd_skin);
$f = 0;
foreach(@ary_skin){
$fi_id = $_;
$out{'skin_str'} .= @si_skin_str[$fi_id];
if ($f ne $#ary_skin){$out{'skin_str'} .= "、";}
$f++;
}
@ary_hair = ();
@ary_hair = split(/\,/,$pd_hair);
$f = 0;
foreach(@ary_hair){
$fi_id = $_;
$out{'hair_str'} .= @si_hair_str[$fi_id];
if ($f ne $#ary_hair){$out{'hair_str'} .= "、";}
$f++;
}
@ary_eye = ();
@ary_eye = split(/\,/,$pd_eye);
$f = 0;
foreach(@ary_eye){
$fi_id = $_;
$out{'eye_str'} .= @si_eye_str[$fi_id];
if ($f ne $#ary_eye){$out{'eye_str'} .= "、";}
$f++;
}
$sql = "select mail from creator where id = '$crid';";
$ref = $dbh->selectall_arrayref($sql) or &stars_err("CODE:M-01 エラーが発生しました。");
($cr_mail)=@{$ref->[0]};
##クリエーター向けメール
$mailbody =<<"EOT";
$out{'cr_name'} 様
お世話になっております。REXi STARS事務局です。
以下のSTARSマテリアルがお客様に通常購入されましたので、ご報告致します。
●基本データ
ゲーム:$out{'game'}
商品:$out{'pdname'}
公開日:$out{'open_time'}
クラス:$out{'class_str'}
立場:$out{'position'}
性別:$out{'sex_str'}
種族:$out{'race_str'}
年齢:$out{'pd_age'}歳(±2歳)
外見:$out{'figure_str'}
身長:$out{'height'}cm(±2cm)
肌の色:$out{'skin_str'}
髪の色:$out{'hair_str'}
瞳の色:$out{'eye_str'}
●購入キャラクターID
$in{'pcid'}
※このキャラクターが正式登録された後、該当ゲーム内でイラストが公開されます。
それでは、今後ともREXiをよろしくお願い致します。
$mailfooter
EOT
&sendmail($cr_mail,'stars@rexi.jp','【STARS】マテリアルが通常購入されました',$mailbody);
print "Location: ./stars_matarial_prompt_end.html\n\n";
}
#---------------------------------------
# 即決購入
#---------------------------------------
sub prompt {
if ($in{'seq'} eq ''){&stars_err("CODE:MB-05 指定が正しくありません。");}
if ($in{'pcid'} eq ''){&stars_err("キャラクターが指定されていません。");}
$sql = "select a.crid,b.name,a.pdid,c.pdname,a.file_name1,a.file_name2,a.file_name3,a.sex,a.class,a.race,a.age,a.figure_str,a.skin_str,a.hair_str,a.eye_str,a.height,a.add_price,c.price,a.buy_pcid,a.open_time,a.reserve_time,substr(a.close_time + '-1 days',1,19) from material a,creator b,goods c where ";
$sql .= "a.seq = $in{'seq'} and a.apply_state = 1 and a.buy_pcid is null and a.open_time <= now() and a.reserve_time > now() and a.crid = b.id and a.crid <> '1101' and a.pdid = c.pdid;";
$ref = $dbh->selectall_arrayref($sql) or &stars_err("CODE:M-01 エラーが発生しました。");
($crid,$out{'cr_name'},$pdid,$out{'pdname'},$file_name1,$file_name2,$file_name3,$pd_sex,$pd_class,$pd_race,$out{'pd_age'},$pd_figure,$pd_skin,$pd_hair,$pd_eye,$out{'height'},$add_price,$price,$buy_pcid,$open_time,$reserve_time,$close_time)=@{$ref->[0]};
if ($buy_pcid ne ''){&stars_err("この商品を即決購入する事はできません。");}
if ($crid eq ''){&stars_err("CODE:MB-06 指定が正しくありません。");}
$price += $add_price;
$price = $price * 2;
$za_rex = &get_rex(undef,$uid);
if ($za_rex < $price && $uid ne 4){&stars_err("REXポイント残高が不足しております。
即決購入価格:$price Rex REXポイント残高:$za_rex Rex");}
$out{'price'} = $price;
$out{'reserve_time'} = substr($reserve_time,0,19);
$out{'reserve_time'} =~ s/\-/\//g;
&out_enc;
&html_out("stars_material_prompt01.html");
}
#---------------------------------------
# 即決購入
#---------------------------------------
sub prompt2 {
if ($in{'seq'} eq ''){&stars_err("CODE:MB-07 指定が正しくありません。");}
if ($in{'pcid'} eq ''){&stars_err("キャラクターが指定されていません。");}
$sql = "select count(*) from material_reservation where order_seq = $in{'seq'} and pcid = '$in{'pcid'}';";
$ref = $dbh->selectall_arrayref($sql) or &stars_err("CODE:M-01 エラーが発生しました。");
($cnt)=@{$ref->[0]};
if ($cnt eq ''){$cnt = 0;}
if ($cnt > 0){&stars_err("この商品に既に予約しています。");}
$sql = "select a.crid,b.name,a.pdid,c.pdname,a.file_name1,a.file_name2,a.file_name3,a.sex,a.class,a.race,a.age,a.figure_str,a.skin_str,a.hair_str,a.eye_str,a.height,a.add_price,c.price,a.buy_pcid,a.open_time,a.reserve_time,substr(a.close_time + '-1 days',1,19) from material a,creator b,goods c where ";
$sql .= "a.seq = $in{'seq'} and a.apply_state = 1 and a.buy_pcid is null and a.open_time <= now() and a.reserve_time > now() and a.crid = b.id and a.crid <> '1101' and a.pdid = c.pdid;";
$ref = $dbh->selectall_arrayref($sql) or &stars_err("CODE:M-01 エラーが発生しました。");
($crid,$out{'cr_name'},$pdid,$out{'pdname'},$file_name1,$file_name2,$file_name3,$pd_sex,$pd_class,$pd_race,$out{'pd_age'},$pd_figure,$pd_skin,$pd_hair,$pd_eye,$out{'height'},$add_price,$price,$buy_pcid,$open_time,$reserve_time,$close_time)=@{$ref->[0]};
if ($buy_pcid ne ''){&stars_err("この商品を即決購入する事はできません。");}
if ($crid eq ''){&stars_err("CODE:MB-08 指定が正しくありません。");}
$price += $add_price;
$price = $price * 2;
$za_rex = &get_rex(undef,$uid);
if ($za_rex < $price && $uid ne 4){&stars_err("Rexポイント残高が不足しております。
即決購入料金:$price REXポイント残高:$za_rex");}
$out{'price'} = $price;
$kakin = $price * -1;
$cont = "SEQ:$in{'seq'},UID:$uid,PCID:$in{'pcid'},PCNAME:$pcname,PDID:$pdid,PRODUCT:$out{'pdname'},PRICE:$price,CRID:$crid,CRNAME:$out{'cr_name'}";
$rtn = &use_rex_stars($uid,$kakin,'STARSマテリアル即決購入',$cont);
if ($rtn ne 0){
&sendmail('log@rexi.jp','stars@rexi.jp','STARSマテリアル即決購入エラー',$rtn . "\n" . $cont);
}
########################################
########################################
$sql = "insert into material_reservation (order_seq,uid,pcid,amount,result) values ($in{'seq'},$uid,'$in{'pcid'}',$price,3);";
$dbh->do($sql) or &stars_err("CODE:STU-03 エラーが発生しました。");
#即決したので確定処理
$sql = "update material set buy_pcid = '$in{'pcid'}',buy_uid = $uid,buy_time = now() where seq = $in{'seq'};";
$dbh->do($sql) or &stars_err("CODE:STS-01 エラーが発生しました。");
$sql = "update character set material_seq = $in{'seq'} where pcid = '$in{'pcid'}';";
&si_rtn_db_data('insert_data',$sql,'si');
$sql = "insert into reservation (usr_seq,crid,pdid,reserve_date,result_date,amount,result,pcid,pcname,closing,delivered_date,delivered_result,delivered_result_date,delivered_filename1,delivered_filename2,delivered_filename3,game,material_seq";
$sql .= ") values (";
$sql .= "$uid,'$crid','$pdid',now(),now(),$price,1,'$in{'pcid'}','$pcname',now(),now(),3,now(),'$file_name1'";
if ($file_name2 ne ''){$sql .= ",'$file_name2'";}
else{$sql .= ",NULL";}
if ($file_name3 ne ''){$sql .= ",'$file_name3'";}
else{$sql .= ",NULL";}
$sql .= ",'si',$in{'seq'}";
$sql .= ");";
$dbh->do($sql) or &stars_err("CODE:STS-02 エラーが発生しました。");
if($uid ne 1717){
if ($pdid eq 'C02'){ #アイコンセット
$f_pass = "/home/rexi-jp/public_html/stars/data/material/$file_name1";
$r_pass = "/public_html/stars/data/si/";
&sv_copy(undef,undef,undef,$r_pass,$f_pass);
$sql = "insert into stars_data (pcid,pdid,pdname,crid,crname,file_name,url) values ('$in{'pcid'}','$pdid','$out{'pdname'}','$crid','$out{'cr_name'}','$file_name1','http://rexis.jp/stars/data/si/$file_name1";
# &si_rtn_db_data('insert_data',$sql,'si');
$f_pass = "/home/rexi-jp/public_html/stars/data/material/$file_name2";
$r_pass = "/public_html/stars/data/si/";
&sv_copy(undef,undef,undef,$r_pass,$f_pass);
$sql = "insert into stars_data (pcid,pdid,pdname,crid,crname,file_name,url) values ('$in{'pcid'}','$pdid','$out{'pdname'}','$crid','$out{'cr_name'}','$file_name2','http://rexis.jp/stars/data/si/$file_name2";
# &si_rtn_db_data('insert_data',$sql,'si');
$sql = "update character set icon = 'http://rexis.jp/stars/data/si/$file_name1' where pcid = '$in{'pcid'}';";
&si_rtn_db_data('insert_data',$sql,'si');
}
elsif ($pdid eq 'C13'){ #スタートセット
$f_pass = "/home/rexi-jp/public_html/stars/data/material/$file_name1";
$r_pass = "/public_html/stars/data/si/";
&sv_copy(undef,undef,undef,$r_pass,$f_pass);
$sql = "insert into stars_data (pcid,pdid,pdname,crid,crname,file_name,url) values ('$in{'pcid'}','$pdid','$out{'pdname'}','$crid','$out{'cr_name'}','$file_name1','http://rexis.jp/stars/data/si/$file_name1";
# &si_rtn_db_data('insert_data',$sql,'si');
$f_pass = "/home/rexi-jp/public_html/stars/data/material/$file_name2";
$r_pass = "/public_html/stars/data/si/";
&sv_copy(undef,undef,undef,$r_pass,$f_pass);
$sql = "insert into stars_data (pcid,pdid,pdname,crid,crname,file_name,url) values ('$in{'pcid'}','$pdid','$out{'pdname'}','$crid','$out{'cr_name'}','$file_name2','http://rexis.jp/stars/data/si/$file_name2";
# &si_rtn_db_data('insert_data',$sql,'si');
$f_pass = "/home/rexi-jp/public_html/stars/data/material/$file_name3";
$r_pass = "/public_html/stars/data/si/";
&sv_copy(undef,undef,undef,$r_pass,$f_pass);
$sql = "insert into stars_data (pcid,pdid,pdname,crid,crname,file_name,url) values ('$in{'pcid'}','$pdid','$out{'pdname'}','$crid','$out{'cr_name'}','$file_name3','http://rexis.jp/stars/data/si/$file_name3";
# &si_rtn_db_data('insert_data',$sql,'si');
$sql = "update character set icon = 'http://rexis.jp/stars/data/si/$file_name2' where pcid = '$in{'pcid'}';";
&si_rtn_db_data('insert_data',$sql,'si');
}
elsif ($pdid eq 'S01'){ #SINN透過全身図
$f_pass = "/home/rexi-jp/public_html/stars/data/material/$file_name1";
$r_pass = "/public_html/stars/data/si/";
&sv_copy(undef,undef,undef,$r_pass,$f_pass);
$sql = "insert into stars_data (pcid,pdid,pdname,crid,crname,file_name,url) values ('$in{'pcid'}','$pdid','$out{'pdname'}','$crid','$out{'cr_name'}','$file_name1','http://rexis.jp/stars/data/si/$file_name1";
# &si_rtn_db_data('insert_data',$sql,'si');
}
if ($pdid eq 'C13' || $pdid eq 'S01'){
#サムネイル生成
$img1 = "/home/rexi-jp/public_html/stars/data/material/$file_name1";
$img2 = "/home/rexi-jp/public_html/stars/data/tmp/$file_name1";
$r_pass = "/public_html/stars/data/si_thumbnail/";
($format,$width,$height) = &GetImageSize($img1);
if ($width > 100 || $height > 100){
if ($width > $height){
#横長の場合
system "convert -resize 100 +profile iptc -quality 100 $img1 $img2";
}
else{
#縦長、または同じの場合
system "convert -resize x100 +profile iptc -quality 100 $img1 $img2";
}
&sv_copy(undef,undef,undef,$r_pass,$img2);
}
$img1 = "/home/rexi-jp/public_html/stars/data/material/$file_name1";
$img2 = "/home/rexi-jp/public_html/stars/data/tmp/$file_name1";
$r_pass = "/public_html/stars/data/si_mypage/";
system "convert -resize 300x557 +profile iptc -quality 100 $img1 $img2";
&sv_copy(undef,undef,undef,$r_pass,$img2);
$sql = "update character set zensin = 'http://rexis.jp/stars/data/si_mypage/$file_name1' where pcid = '$in{'pcid'}';";
&si_rtn_db_data('insert_data',$sql,'si');
}
}
#ユーザーデータ取得
$dbh_pl = &connectDB($plDB);
$sql = "select name,mail from userdat where seq = $uid;";
$ref = $dbh_pl->selectall_arrayref($sql) or &stars_err("エラーが発生しました。");
($name,$mail)=@{$ref->[0]};
$mail_reserve_time = substr($reserve_time,0,19);
$mailbody =<<"EOT";
$name 様
お世話になっております、REXiです。
このたびは、STARSマテリアルをご利用いただき、まことにありがとうございます。
お客様が即決購入された内容の詳細をお送りします。
●ゲーム
SINN
●発注キャラクター
$in{'pcid'} $pcname
●商品
$out{'pdname'}
●クリエーター
$out{'cr_name'}
今後とも、よろしくお願いします。
$mailfooter
EOT
&sendmail($mail,'stars@rexi.jp','【STARS】マテリアル即決購入',$mailbody);
$sql = "select a.crid,b.name,a.pdid,c.pdname,a.file_name1,a.file_name2,a.file_name3,a.sex,a.class,a.race,a.age,a.figure_str,a.skin_str,a.hair_str,a.eye_str,a.height,a.add_price,c.price,a.buy_pcid,a.open_time,a.reserve_time,substr(a.close_time + '-1 days',1,19),a.position from material a,creator b,goods c where a.seq = $in{'seq'} and a.apply_state = 1 and a.crid = b.id and a.crid <> '1101' and a.pdid = c.pdid;";
$ref = $dbh->selectall_arrayref($sql) or &stars_err("CODE:M-01 エラーが発生しました。");
($crid,$out{'cr_name'},$pdid,$out{'pdname'},$file_name1,$file_name2,$file_name3,$pd_sex,$pd_class,$pd_race,$out{'pd_age'},$pd_figure,$pd_skin,$pd_hair,$pd_eye,$out{'height'},$add_price,$price,$buy_pcid,$open_time,$reserve_time,$close_time,$position)=@{$ref->[0]};
$out{'game'} = 'SINN';
$out{'open_time'} = substr($open_time,5,5);
$out{'open_time'} =~ s/\-/\//g;
$reserve_time2 = $reserve_time;
$open_time2 = $open_time;
$reserve_time =~ s/\-/\//g;
$reserve_time = substr($reserve_time,5,11);
$reserve_time =~ s/\-/\//g;
$out{'price'} = $price + $add_price;
$out{'price2'} = $out{'price'} * 2;
$out{'sex_str'} = @si_sex_mark[$pd_sex];
if ($out{'sex_str'} eq ''){$out{'sex_str'} = '性別自由';}
$out{'class_str'} = @si_class_str[$pd_class];
if ($out{'class_str'} eq ''){$out{'class_str'} = 'クラス自由';}
$out{'race_str'} = @si_race_str[$pd_race];
if ($out{'race_str'} eq ''){$out{'race_str'} = '種族自由';}
if ($position eq '' && ($pd_class eq 1 || $pd_class eq 2)){$out{'position'} = '聖職者、信者';}
elsif ($position eq ''){$out{'position'} = '立場自由';}
else{
@ary_position = ();
@ary_position = split(/\,/,$position);
$f = 0;
foreach(@ary_position){
$fi_id = $_;
$out{'position'} .= @si_position_str[$fi_id];
if ($f ne $#ary_position){$out{'position'} .= "、";}
$f++;
}
if (substr($out{'position'},-2) eq "、"){$out{'position'} = substr($out{'position'},0,-2);}
}
@ary_figure = ();
@ary_figure = split(/\,/,$pd_figure);
$f = 0;
foreach(@ary_figure){
$fi_id = $_;
$out{'figure_str'} .= @si_figure_str[$fi_id];
if ($f ne $#ary_figure){$out{'figure_str'} .= "、";}
$f++;
}
@ary_skin = ();
@ary_skin = split(/\,/,$pd_skin);
$f = 0;
foreach(@ary_skin){
$fi_id = $_;
$out{'skin_str'} .= @si_skin_str[$fi_id];
if ($f ne $#ary_skin){$out{'skin_str'} .= "、";}
$f++;
}
@ary_hair = ();
@ary_hair = split(/\,/,$pd_hair);
$f = 0;
foreach(@ary_hair){
$fi_id = $_;
$out{'hair_str'} .= @si_hair_str[$fi_id];
if ($f ne $#ary_hair){$out{'hair_str'} .= "、";}
$f++;
}
@ary_eye = ();
@ary_eye = split(/\,/,$pd_eye);
$f = 0;
foreach(@ary_eye){
$fi_id = $_;
$out{'eye_str'} .= @si_eye_str[$fi_id];
if ($f ne $#ary_eye){$out{'eye_str'} .= "、";}
$f++;
}
$sql = "select mail from creator where id = '$crid';";
$ref = $dbh->selectall_arrayref($sql) or &stars_err("CODE:M-01 エラーが発生しました。");
($cr_mail)=@{$ref->[0]};
##クリエーター向けメール
$mailbody =<<"EOT";
$out{'cr_name'} 様
お世話になっております。REXi STARS事務局です。
以下のSTARSマテリアルがお客様に即決購入されましたので、ご報告致します。
●基本データ
ゲーム:$out{'game'}
商品:$out{'pdname'}
公開日:$out{'open_time'}
クラス:$out{'class_str'}
立場:$out{'position'}
性別:$out{'sex_str'}
種族:$out{'race_str'}
年齢:$out{'pd_age'}歳(±2歳)
外見:$out{'figure_str'}
身長:$out{'height'}cm(±2cm)
肌の色:$out{'skin_str'}
髪の色:$out{'hair_str'}
瞳の色:$out{'eye_str'}
●購入キャラクターID
$in{'pcid'}
※このキャラクターが正式登録された後、該当ゲーム内でイラストが公開されます。
それでは、今後ともREXiをよろしくお願い致します。
$mailfooter
EOT
if($uid ne 1717){
&sendmail($cr_mail,'stars@rexi.jp','【STARS】マテリアルが即決購入されました',$mailbody);
}
##予約キャンセル
#落選処理
$sql2 = "select seq,pcid,uid,amount from material_reservation where order_seq = $in{'seq'} and result = 0;";
$ref2 = $dbh->selectall_arrayref($sql2) or &text_err("エラーが発生しました。\n$sql2\n".$dbh->errstr);
foreach(@$ref2) {
($res_seq,$res_pcid,$res_uid,$res_amount)=@{$_};
$sql2 = "update material_reservation set result = 2,result_date = now() where seq = $res_seq;";
$dbh->do($sql2) or &text_err("CODE:SM-03 エラーが発生しました。 $sql2 ".$dbh->errstr);
$sql2 = "select name,mail from userdat where seq = $res_uid;";
$ref2 = $dbh_pl->selectall_arrayref($sql2) or &text_err("エラーが発生しました。");
($p_name,$p_mail)=@{$ref2->[0]};
$sql2 = "select name from character where pcid = '$res_pcid';";
($pcname) = &si_rtn_db_data('select_line',$sql2,'si');
$mail_body =<<"EOT";
$p_name 様
お世話になっております、REXiです。
このたびは、STARSをご利用いただき、まことにありがとうございます。
お客様が予約された下記のSTARSマテリアルですが、他のPCが即決購入したため、予約がキャンセルとなりました。
予約料金を返還致しましたので、Myページにて残高をご確認ください。
●ゲーム
SINN
●発注キャラクター
$pcname($res_pcid)
●商品
$pdname
●クリエーター
$crname
今後とも、よろしくお願いします。
$mailfooter
EOT
&sendmail($p_mail,'stars@rexi.jp','【STARS】STARSマテリアル予約落選',$mail_body);
#返金処理
$cont = "SEQ:$res_seq,UID:$res_uid,PCID:$res_pcid,PCNAME:$pcname,PDID:$pdid,PRODUCT:$pdname,PRICE:$res_amount,CRNAME:$crname";
$rtn = &use_rex_stars($res_uid,$res_amount,'STARS予約返金',$cont);
if ($rtn ne 0){
&sendmail('log@rexi.jp','stars@rexi.jp','STARS予約返金エラー',$rtn . "\n" . $cont);
}
}
print "Location: ./stars_matarial_buy_end.html\n\n";
}
#---------------------------------------
# 予約
#---------------------------------------
sub reserve {
if ($in{'seq'} eq ''){&stars_err("指定が正しくありません。");}
if ($in{'pcid'} eq ''){&stars_err("キャラクターが指定されていません。");}
$sql = "select a.crid,b.name,a.pdid,c.pdname,a.file_name1,a.file_name2,a.file_name3,a.sex,a.class,a.race,a.age,a.figure_str,a.skin_str,a.hair_str,a.eye_str,a.height,a.add_price,c.price,a.buy_pcid,a.open_time,a.reserve_time,substr(a.close_time + '-1 days',1,19) from material a,creator b,goods c where ";
$sql .= "a.seq = $in{'seq'} and a.apply_state = 1 and a.buy_pcid is null and a.open_time <= now() and a.reserve_time > now() and a.crid = b.id and a.crid <> '1101' and a.pdid = c.pdid;";
$ref = $dbh->selectall_arrayref($sql) or &stars_err("CODE:M-01 エラーが発生しました。");
($crid,$out{'cr_name'},$pdid,$out{'pdname'},$file_name1,$file_name2,$file_name3,$pd_sex,$pd_class,$pd_race,$out{'pd_age'},$pd_figure,$pd_skin,$pd_hair,$pd_eye,$out{'height'},$add_price,$price,$buy_pcid,$open_time,$reserve_time,$close_time)=@{$ref->[0]};
if ($buy_pcid ne ''){&stars_err("この商品に予約する事はできません。");}
if ($crid eq ''){&stars_err("指定が正しくありません。");}
$price += $add_price;
$za_rex = &get_rex(undef,$uid);
if ($za_rex < $price && $uid ne 4){&stars_err("REXポイント残高が不足しております。
予約価格:$price Rex REXポイント残高:$za_rex Rex");}
$out{'price'} = $price;
$out{'reserve_time'} = substr($reserve_time,0,19);
$out{'reserve_time'} =~ s/\-/\//g;
&out_enc;
&html_out("stars_material_reserve01.html");
}
#---------------------------------------
# 予約実行
#---------------------------------------
sub reserve2 {
if ($in{'seq'} eq ''){&stars_err("指定が正しくありません。");}
if ($in{'pcid'} eq ''){&stars_err("キャラクターが指定されていません。");}
$sql = "select count(*) from material_reservation where order_seq = $in{'seq'} and pcid = '$in{'pcid'}';";
$ref = $dbh->selectall_arrayref($sql) or &stars_err("CODE:M-01 エラーが発生しました。");
($cnt)=@{$ref->[0]};
if ($cnt eq ''){$cnt = 0;}
if ($cnt > 0){&stars_err("この商品に既に予約しています。");}
$sql = "select a.crid,b.name,a.pdid,c.pdname,a.file_name1,a.file_name2,a.file_name3,a.sex,a.class,a.race,a.age,a.figure_str,a.skin_str,a.hair_str,a.eye_str,a.height,a.add_price,c.price,a.buy_pcid,a.open_time,a.reserve_time,substr(a.close_time + '-1 days',1,19) from material a,creator b,goods c where ";
$sql .= "a.seq = $in{'seq'} and a.apply_state = 1 and a.buy_pcid is null and a.open_time <= now() and a.reserve_time > now() and a.crid = b.id and a.crid <> '1101' and a.pdid = c.pdid;";
$ref = $dbh->selectall_arrayref($sql) or &stars_err("CODE:M-01 エラーが発生しました。");
($crid,$out{'cr_name'},$pdid,$out{'pdname'},$file_name1,$file_name2,$file_name3,$pd_sex,$pd_class,$pd_race,$out{'pd_age'},$pd_figure,$pd_skin,$pd_hair,$pd_eye,$out{'height'},$add_price,$price,$buy_pcid,$open_time,$reserve_time,$close_time)=@{$ref->[0]};
if ($buy_pcid ne ''){&stars_err("この商品に予約する事はできません。");}
if ($crid eq ''){&stars_err("指定が正しくありません。");}
$price += $add_price;
$za_rex = &get_rex(undef,$uid);
if ($za_rex < $price && $uid ne 4){&stars_err("Rexポイント残高が不足しております。
予約料金:$price REXポイント残高:$za_rex");}
$out{'price'} = $price;
$kakin = $price * -1;
$cont = "SEQ:$in{'seq'},UID:$uid,PCID:$in{'pcid'},PCNAME:$pcname,PDID:$pdid,PRODUCT:$out{'pdname'},PRICE:$price,CRID:$crid,CRNAME:$out{'cr_name'}";
$rtn = &use_rex_stars($uid,$kakin,'STARSマテリアル予約',$cont);
if ($rtn ne 0){
#&stars_err("$sql");
&sendmail('log@rexi.jp','stars@rexi.jp','STARSマテリアル予約エラー',$rtn . "\n" . $cont);
}
$sql = "insert into material_reservation (order_seq,uid,pcid,amount) values ($in{'seq'},$uid,'$in{'pcid'}',$price);";
$dbh->do($sql) or &stars_err("CODE:STU-03 エラーが発生しました。");
$sql = "update character set reserve_material_seq = $in{'seq'} where pcid = '$in{'pcid'}';";
&si_rtn_db_data('insert_data',$sql,'si');
#ユーザーデータ取得
$dbh_pl = &connectDB($plDB);
$sql = "select name,mail from userdat where seq = $uid;";
$ref = $dbh_pl->selectall_arrayref($sql) or &stars_err("エラーが発生しました。");
($name,$mail)=@{$ref->[0]};
$mail_reserve_time = substr($reserve_time,0,19);
$mailbody =<<"EOT";
$name 様
お世話になっております、REXiです。
このたびは、STARSマテリアルをご利用いただき、まことにありがとうございます。
お客様が予約された内容の詳細をお送りします。
●ゲーム
SINN
●発注キャラクター
$in{'pcid'} $pcname
●商品
$out{'pdname'}
●クリエーター
$out{'cr_name'}
●予約抽選日
$mail_reserve_time
今後とも、よろしくお願いします。
$mailfooter
EOT
&sendmail($mail,'stars@rexi.jp','【STARS】マテリアル予約確認',$mailbody);
print "Location: ./stars_matarial_reserve_end.html\n\n";
}