์ ์ฐ ํ์ผ์ ์ฌ๋ ค์ ์ฃผ๋ฌธ๊ณผ ๋ง์ถ๋ ๊ธฐ๋ฅ์ด ์๋ค. ๋งค์นญ์ด ์ ๋๋ฉด ์คํจ ๋ชฉ๋ก์ ๋ด๊ธฐ๋๋ฐ ํ ๋ฌ์น๋ฅผ ์ฌ๋ฆฌ๋ ์คํจ๊ฐ 340๊ฑด์ด์๋ค. ๋ชฉ๋ก์๋ order_code ๋ง ์์๋ค.
Table of contents
Open Table of contents
๋ฌด์์ ํด์ผ ํ ์ง ์ ์ ์์๋ค
340๊ฑด์ ํ๋์ฉ ๋์ผ๋ก ๋ณด๋ ๋ช ๊ฐ์ง ์ ํ์ด ์์ฌ ์์๋ค. order_code ๊ฐ ์ฐ๋ฆฌ ์ชฝ์ ์์ ์๋ ๊ฒ๊ณผ ์ฃผ๋ฌธ์ ์๋๋ฐ ๊ธ์ก์ด ๋ค๋ฅธ ๊ฒ๊ณผ settle_yn ์ด ์ด๋ฏธ Y ์ธ ๊ฒ๊ณผ ํ์ผ ํ์์ด ๋ฌ๋ผ ๋ชป ์ฝ์ ๊ฒ๊ณผ ๊ทธ ์นธ์ด ๋น ๊ฒ์ด๋ค.
์๋ณผ ๊ณณ์ด ์ ํ๋ง๋ค ๋ฌ๋๋ค. F2 ๋ ์๋ ์ชฝ์ ๋ฌธ์ํ ์ผ์ด๊ณ F4 ๋ ํ์ธ์ด ํ์ํ๋ค. F3 ์ ๋ฌด์ํด๋ ๋๊ณ F5 ๋ ์ฐ๋ฆฌ ์ฝ๋ ๋ฌธ์ ๋ค. ํ ๋ฉ์ด๋ฆฌ๋ก ๋๋ฉด 340๊ฑด ์ ๋ถ๋ฅผ ์ฌ๋์ด ๋ด์ผ ํ๋ค.
๊ตฌ๋ถ ์ฝ๋๋ฅผ ๋ถ์๋ค
match_order ๊ฐ ์คํจํ ๋ ์ด์ ๋ฅผ ํจ๊ป ๋๋ ค์ฃผ๊ฒ ๋ฐ๊ฟจ๋ค.
function match_order($row)
{
if (empty($row['order_code'])) {
return ['ok' => false, 'code' => 'F1', 'msg' => '์ฃผ๋ฌธ๋ฒํธ ์์'];
}
$order = $this->order_model->get_by_code($row['order_code']);
if (!$order) {
return ['ok' => false, 'code' => 'F2', 'msg' => '์ฃผ๋ฌธ ์์'];
}
if ($order->settle_yn === 'Y') {
return ['ok' => false, 'code' => 'F3', 'msg' => '์ด๋ฏธ ์ ์ฐ๋จ'];
}
if (abs($order->amount - $row['amount']) > 1) {
return ['ok' => false, 'code' => 'F4', 'msg' => '๊ธ์ก ๋ถ์ผ์น',
'detail' => "์ฐ๋ฆฌ {$order->amount} / ํ์ผ {$row['amount']}"];
}
return ['ok' => true];
}
code ์ msg ๋ฅผ ๊ฐ์ด ๋๋ ค์ค๋ค. code ๋ GROUP BY ์ ์ฐ๊ณ msg ๋ ์ฌ๋์ด ์ฝ๋๋ค.
์ธ์ด ๋ณด๋ ๊ทธ๋ฆผ์ด ๋ฌ๋ผ์ก๋ค
GROUP BY code ๋ก ์ธ์ด ๋ณด๋ 295๊ฑด์ด F3 ์ด์๋ค. ์ง๋๋ฌ ํ์ผ์ ๋ค์ ์ฌ๋ฆฐ ๊ฒ์ด๋ค.
F1 3
F2 18
F3 295
F4 24
340๊ฑด ์ค ์ค์ ๋ก ํ์ธ์ด ํ์ํ ๊ฒ์ F2 ์ F4 ๋ฅผ ํฉ์น 42๊ฑด์ด๊ณ ๋๋จธ์ง๋ ์ ์ ๋์์ด์๋ค. ์ธ์ด ๋ณด๊ธฐ ์ ์๋ 340๊ฑด ์ ๋ถ๊ฐ ๋ฌธ์ ๋ก ๋ณด์๋ค.
ํ๋ฉด๋ ์ ํ๋ณ๋ก ๋๋ด๋ค. ์ ์์ธ ๊ฒ๊ณผ ํ์ธ์ด ํ์ํ ๊ฒ์ ๊ฐ๋ผ ๋๋ ๋ด๋น์๊ฐ ๋ณผ ๊ณณ์ด 42๊ฑด์ผ๋ก ์ค์๋ค.
์ฑ๊ณต 1,842
์ด๋ฏธ ์ ์ฐ 295 (์ ์)
์ฃผ๋ฌธ ์์ 18 โ ํ์ธ ํ์
๊ธ์ก ๋ถ์ผ์น 24 โ ํ์ธ ํ์
์ฃผ๋ฌธ๋ฒํธ ์์ 3 โ ํ์ผ ํ์ธ
์ซ์์ ์ฌ์ ๋ก๋
F4 ๋ ์ผ๋ง๊ฐ ๋ค๋ฅธ์ง๊ฐ ์ค์ํด์ abs ๋ก ์ฐ ์ฐจ์ด๋ฅผ detail ์ ํจ๊ป ๋จ๊ฒผ๋ค. ํ์ ์์ฒด๋ abs(...) > 1 ์ด๋ผ 1 ์๊น์ง๋ ๊ฐ์ ๊ฒ์ผ๋ก ๋ณธ๋ค.
F4 ์ฃผ๋ฌธ 20150112-0341 ์ฐ๋ฆฌ 128,000 / ํ์ผ 126,800 ์ฐจ์ด 1,200
์ฐจ์ด๊ฐ ์ผ์ ํ๋ฉด ๋ฌด์ธ๊ฐ ํ ํญ๋ชฉ์ด ๋น ์ง ๊ฒ์ด๊ณ ์ ๊ฐ๊ฐ์ด๋ฉด ๋ค๋ฅธ ๋ฌธ์ ๋ค. 24๊ฑด ์ค 21๊ฑด์ด ์ ํํ ๊ฐ์ ์ฐจ์ด์๊ณ ์ฟ ํฐ ํ ์ธ์ ๋ฐ์ํ๋ ๋ฐฉ์์ด ์๋ก ๋ฌ๋๋ค. ์ซ์๋ฅผ ๊ฐ์ด ๋จ๊ธฐ์ง ์์์ผ๋ฉด ๊ท์น์ด ์ ๋ณด์์ ๊ฒ์ด๋ค.
๊ฐ์ ํ์ผ์ ๋ ๋ฒ ์ฌ๋ฆฌ๋ ๊ฒ๋ ๋ง์์ผ ํ๋ค. ํ์ผ ์ด๋ฆ์ ๋ฐ๋ ์ ์์ผ๋ md5_file ๋ก ๋ด์ฉ์ ๋ดค๋ค. ์ด ํจ์๋ ํ์ผ์ ์ฝ์ด ๊ฐ๋ฉฐ ํด์ํ๋ฏ๋ก file_get_contents ๋ก ํต์งธ๋ก ์ฌ๋ฆฐ ๋ค md5 ํ๋ ๊ฒ๊ณผ ๋ฌ๋ฆฌ ํฐ ํ์ผ์์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ๋จน๋๋ค.
$hash = md5_file($tmpPath);
$prev = $this->db->where('file_hash', $hash)->get('settle_upload')->row();
if ($prev) {
return "์ด ํ์ผ์ {$prev->reg_date}์ ์ด๋ฏธ ์ฌ๋ ธ์ต๋๋ค. ๊ณ์ํ์๊ฒ ์ต๋๊น?";
}
settle_upload ์ file_hash ์๋ ์ธ๋ฑ์ค๋ฅผ ๊ฑธ์๋ค. ์ฌ๋ฆด ๋๋ง๋ค ๊ทธ ์ปฌ๋ผ์ผ๋ก ์กฐํํ๋ ์ ๊ฑธ๋ฉด ํ์ผ์ด ์์ผ์๋ก ๋๋ ค์ง๋ค.
์ฐ๋ค ๋ณด๋ F5 ์ F6 ์ด ๋ ๋์ด์ ๋ชฉ๋ก๋ ๋ง๋ค์๋ค. ๊ฐ ์ฝ๋์ ๋ฌด์์ ํด์ผ ํ๋์ง๋ฅผ ๊ฐ์ด ์ ์๋๋ฐ ์ฝ๋๋ง ์์ผ๋ฉด ๋ด๋น์๊ฐ ๋ค์ ๋ฌผ์ด๋ณด๊ธฐ ๋๋ฌธ์ด๋ค.
F1 ์ฃผ๋ฌธ๋ฒํธ ์์ ํ์ผ ํ์ธ
F2 ์ฃผ๋ฌธ ์์ ์๋ ๋ฌธ์
F3 ์ด๋ฏธ ์ ์ฐ๋จ ์ ์ (์ฌ์
๋ก๋)
F4 ๊ธ์ก ๋ถ์ผ์น ํ์ธ ํ์
F5 ๋ ์ง ํ์ ์ค๋ฅ ํ์ผ ํ์ธ
F6 ์ค๋ณต ํ ํ์ผ ํ์ธ
์ ๋ฆฌ
- ์คํจ๋ฅผ ํ ๋ฉ์ด๋ฆฌ๋ก ๋๋ฉด ์ ๋ถ๋ฅผ ์ฌ๋์ด ๋ด์ผ ํ๋ค
- ์ด์ ๋ฅผ
code๋ก ๋จ๊ธฐ๋ฉดGROUP BY code์COUNT(*)๋ก ์ ํ๋ณ ์ง๊ณ๊ฐ ๋๋ค - ์ธ์ด ๋ณด๋ฉด ๋๋ถ๋ถ์ด ์ ์ ๋์์ธ ๊ฒฝ์ฐ๊ฐ ์๋ค โ 340๊ฑด ์ค 295๊ฑด์ด
F3์ด์๋ค - ํ๋ฉด์์ ์ ์์ธ ๊ฒ๊ณผ ํ์ธ์ด ํ์ํ ๊ฒ์ ๋๋ ๋ณด์ฌ ์ค๋ค
abs๋ก ์ฐ ์ฐจ์ด๋ฅผ ๊ฐ์ด ๋จ๊ธฐ๋ฉด ์ผ์ ํ์ง ์ ๊ฐ๊ฐ์ธ์ง๊ฐ ์์ธ์ ๊ฐ๋ฅธ๋คmd5_file๋ก ์ค๋ณต ์ ๋ก๋๋ฅผ ์ก๋๋ค. ์ด๋ฆ์ ๋ฐ๋ ์ ์๋คfile_hash์ปฌ๋ผ์๋ ์ธ๋ฑ์ค๋ฅผ ๊ฑด๋ค. ์ฌ๋ฆด ๋๋ง๋ค ์กฐํํ๋ค- ๊ตฌ๋ถ ์ฝ๋๋ง๋ค ๋ฌด์์ ํด์ผ ํ๋์ง๋ฅผ ๊ฐ์ด ์ ๋๋ค