UserGradeHistory.php 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <?php
  2. namespace App\Models;
  3. use Illuminate\Database\Eloquent\Model;
  4. use Illuminate\Support\Facades\DB;
  5. use Illuminate\Database\QueryException;
  6. class UserGradeHistory extends Model
  7. {
  8. protected $table = 'tb_member_grade_history';
  9. protected $primaryKey = 'mgh_key';
  10. public $keyType = 'int';
  11. public $incrementing = true;
  12. public $timestamps = true;
  13. const CREATED_AT = 'created_at';
  14. const UPDATED_AT = 'updated_at';
  15. /*
  16. * 회원등급 기록/변경 처리
  17. */
  18. public function register(int $memKey, int $toMgdKey, string $reason)
  19. {
  20. $MemberGradeMember = new MemberGradeMember();
  21. $member = $MemberGradeMember->findByMemKey($memKey);
  22. if(!$member) {
  23. return;
  24. }
  25. $fromMgdKey = intval($member->mgd_key);
  26. if($fromMgdKey === $toMgdKey) {
  27. return;
  28. }
  29. try{
  30. $sql = '
  31. INSERT INTO tb_member_grade_history(
  32. mem_key, from_key, from_name, to_key, to_name, reason, ip_address, useragent, created_at
  33. ) VALUES (
  34. ?,
  35. ?,
  36. (SELECT CONCAT(kor_name, \'(\', eng_name, \')\') FROM tb_member_grade WHERE mgd_key = ?),
  37. ?,
  38. (SELECT CONCAT(kor_name, \'(\', eng_name, \')\') FROM tb_member_grade WHERE mgd_key = ?),
  39. ?,
  40. ?,
  41. ?,
  42. NOW()
  43. );
  44. ';
  45. // 회원그룹 변경 기록
  46. DB::insert($sql, [
  47. $memKey,
  48. $fromMgdKey,
  49. $fromMgdKey,
  50. $toMgdKey,
  51. $toMgdKey,
  52. $reason,
  53. IP_ADDRESS,
  54. USER_AGENT,
  55. ]);
  56. // 회원그룹 변경 처리
  57. $MemberGradeMember->replace($memKey, $toMgdKey);
  58. DB::commit();
  59. return true;
  60. }catch(QueryException $e) {
  61. DB::rollBack();
  62. return false;
  63. }
  64. }
  65. }