Transfer.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. <?php
  2. namespace addon\giftcard\model\transfer;
  3. use addon\giftcard\model\card\Card;
  4. use addon\giftcard\model\card\CardLog;
  5. use addon\giftcard\model\membercard\MemberCard;
  6. use app\model\BaseModel;
  7. class Transfer extends BaseModel
  8. {
  9. /**
  10. * 赠送后的操作
  11. * @param $params
  12. * @return array
  13. */
  14. public function transfer($params)
  15. {
  16. $blessing_id = $params[ 'blessing_id' ];
  17. $site_id = $params[ 'site_id' ] ?? 0;
  18. $blessing_model = new Blessing();
  19. $blessing_condition = array (
  20. [ 'blessing_id', '=', $blessing_id ],
  21. [ 'status', '=', 0 ]
  22. );
  23. if ($site_id > 0) {
  24. $blessing_condition[] = [ 'site_id', '=', $site_id ];
  25. }
  26. $blessing_info = $blessing_model->getMemberCardBlessingInfo($blessing_condition)[ 'data' ] ?? [];
  27. if (empty($blessing_info))
  28. return $this->error([], '礼品卡祝福已被领取或已失效');
  29. //todo 后续必然增加队列控制
  30. $member_card_id = $blessing_info[ 'member_card_id' ];
  31. $member_card_model = new MemberCard();
  32. $member_card_condition = array (
  33. [ 'member_card_id', '=', $member_card_id ],
  34. [ 'is_transfer', '=', 0 ]
  35. );
  36. if ($site_id > 0) {
  37. $member_card_condition[] = [ 'site_id', '=', $site_id ];
  38. }
  39. $member_card_info = $member_card_model->getMemberCardInfo($member_card_condition)[ 'data' ] ?? [];
  40. if (empty($member_card_info))
  41. return $this->error([], '当前礼品卡不存在或已被领取!');
  42. $from_member_id = $member_card_info[ 'member_id' ];
  43. $card_id = $member_card_info[ 'card_id' ];
  44. $member_id = $params[ 'member_id' ];
  45. $condition = array (
  46. [ 'card_id', '=', $card_id ],
  47. [ 'member_id', '=', $from_member_id ]
  48. );
  49. if ($from_member_id == $member_id)
  50. return $this->error([], '不能自己领取自己的礼品卡!');
  51. $card_model = new Card();
  52. $card_info = $card_model->getCardInfo($condition)[ 'data' ] ?? [];//
  53. if (empty($card_info))
  54. return $this->error([], '当前礼品卡不存在或已被领取!');
  55. $is_allow_transfer = $card_info[ 'is_allow_transfer' ];
  56. if ($is_allow_transfer == 0)
  57. return $this->error([], '当前礼品卡不允许转赠!');
  58. if ($card_info[ 'status' ] != 'to_use')
  59. return $this->error([], '只有待使用的礼品卡才允许转赠!');
  60. //将原所属者改变
  61. $transfer_params = array (
  62. 'card_id' => $card_id,
  63. 'member_id' => $from_member_id,
  64. 'to_member_id' => $member_id,
  65. 'member_card_id' => $member_card_id
  66. );
  67. $result = $member_card_model->memberCardTransfer($transfer_params);
  68. if ($result[ 'code' ] < 0)
  69. return $result;
  70. $set_params = array (
  71. 'blessing_id' => $blessing_id,
  72. 'to_member_id' => $member_id
  73. );
  74. $result = $blessing_model->setBlessingToMember($set_params);
  75. if ($result[ 'code' ] < 0)
  76. return $result;
  77. $card_params = array (
  78. 'site_id' => $params[ 'site_id' ],
  79. 'from_member_id' => $from_member_id,
  80. 'member_id' => $member_id,
  81. 'card_id' => $card_id,
  82. 'source' => 'gift',
  83. );
  84. $result = $member_card_model->addMemberCard($card_params);
  85. ( new CardLog() )->add([
  86. 'card_id' => $card_id,
  87. 'type' => 'transfer',
  88. 'operator_type' => 'member',//todo 暂时是确定的
  89. 'operator' => $member_id,
  90. 'type_id' => $result[ 'data' ]
  91. ]);
  92. return $result;
  93. }
  94. }