MemberSignin.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com
  8. * =========================================================
  9. */
  10. namespace app\model\member;
  11. use app\model\BaseModel;
  12. use Carbon\Carbon;
  13. /**
  14. * 会员签到
  15. */
  16. class MemberSignin extends BaseModel
  17. {
  18. /**
  19. * 获取签到奖励规则
  20. */
  21. public function getAward($site_id)
  22. {
  23. $award = event('MemberSigninAward', [ 'site_id' => $site_id ], true);
  24. return $this->success($award);
  25. }
  26. /**
  27. * 判断是否已经签到
  28. * @param $member_id
  29. * @return array
  30. */
  31. public function isSign($member_id)
  32. {
  33. $member_info = model("member")->getInfo([ [ 'member_id', '=', $member_id ] ], 'sign_time');
  34. if ($member_info[ 'sign_time' ] != 0) {
  35. $compare_time = Carbon::today()->timestamp;
  36. if ($member_info[ 'sign_time' ] < $compare_time) {
  37. $is_sign = 0;
  38. } else {
  39. $is_sign = 1;
  40. }
  41. //纠正连签天数
  42. $compare_yesterday = Carbon::yesterday()->timestamp;
  43. if ($compare_yesterday > $member_info[ 'sign_time' ]) {
  44. model("member")->update([ 'sign_days_series' => 0, 'sign_time' => 0 ], [ [ 'member_id', '=', $member_id ] ]);
  45. }
  46. } else {
  47. $is_sign = 0;
  48. }
  49. return $this->success($is_sign);
  50. }
  51. /**
  52. * 签到
  53. * @param $member_id
  54. * @return array|\multitype
  55. */
  56. public function signin($member_id, $site_id)
  57. {
  58. $member_info = model("member")->getInfo([ [ 'member_id', '=', $member_id ] ], 'sign_time,sign_days_series');
  59. if ($member_info[ 'sign_time' ] != 0) {
  60. $compare_time = Carbon::today()->timestamp;
  61. if ($member_info[ 'sign_time' ] < $compare_time) {
  62. $is_sign = 0;
  63. } else {
  64. $is_sign = 1;
  65. }
  66. } else {
  67. $is_sign = 0;
  68. }
  69. if ($is_sign == 1) {
  70. return $this->error('', "SIGNED_IN");
  71. } else {
  72. $data_log = [
  73. 'member_id' => $member_id,
  74. 'action' => 'membersignin',
  75. 'action_name' => '会员签到',
  76. 'create_time' => time(),
  77. 'remark' => '会员签到'
  78. ];
  79. model("member_log")->add($data_log);
  80. //连续签到
  81. $compare_yesterday = Carbon::yesterday()->timestamp;
  82. if ($compare_yesterday < $member_info[ 'sign_time' ]) {
  83. model("member")->setInc([ [ 'member_id', '=', $member_id ] ], 'sign_days_series');
  84. model("member")->update([ 'sign_time' => time() ], [ [ 'member_id', '=', $member_id ] ]);
  85. } else {
  86. model("member")->update([ 'sign_days_series' => 1, 'sign_time' => time() ], [ [ 'member_id', '=', $member_id ] ]);
  87. }
  88. //执行签到奖励
  89. $res = event("MemberSignin", [ 'member_id' => $member_id, 'site_id' => $site_id ], true);
  90. return $this->success($res);
  91. }
  92. }
  93. /**
  94. * 获取签到记录
  95. * @param array $condition
  96. * @param string $field
  97. * @param string $order
  98. * @return array
  99. */
  100. public function getMemberSigninList($condition = [], $field = '*', $order = 'create_time asc')
  101. {
  102. $list = model('member_log')->getList($condition, $field, $order);
  103. return $this->success($list);
  104. }
  105. }