MemberSignin.php 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com
  8. * =========================================================
  9. */
  10. namespace addon\membersignin\event;
  11. use addon\membersignin\model\Signin;
  12. use app\model\member\Member as MemberModel;
  13. use app\model\member\MemberAccount as MemberAccountModel;
  14. use app\model\member\MemberSignin as MemberSigninModel;
  15. /**
  16. * 会员签到奖励
  17. */
  18. class MemberSignin
  19. {
  20. /**
  21. * @param $param
  22. * @return string|\multitype
  23. */
  24. public function handle($param)
  25. {
  26. $signin_model = new Signin();
  27. $config_result = $signin_model->getConfig($param[ 'site_id' ]);
  28. $config = $config_result[ 'data' ];
  29. $point = 0;
  30. $growth = 0;
  31. if ($config[ 'is_use' ]) {
  32. $member_model = new MemberModel();
  33. $member_signin_model = new MemberSigninModel();
  34. $member_account_model = new MemberAccountModel();
  35. // 查询当前用户连签天数
  36. $member_info = $member_model->getMemberInfo([ [ 'member_id', '=', $param[ 'member_id' ] ] ], 'sign_days_series,site_id')[ 'data' ];
  37. $award = $config[ 'value' ][ 'reward' ];
  38. if (!empty($award)) {
  39. $everyday_award = $award[ 0 ]; // 每日签到奖励
  40. $point = !empty($everyday_award[ 'point' ]) ? $everyday_award[ 'point' ] : 0;
  41. $growth = !empty($everyday_award[ 'growth' ]) ? $everyday_award[ 'growth' ] : 0;
  42. if (count($award) > 1) {
  43. for ($i = 1; $i < count($award); $i++) {
  44. $even_award = $award[ $i ]; // 连签奖励
  45. if ($member_info[ 'sign_days_series' ] == $even_award[ 'day' ]) {
  46. if (!empty($even_award[ 'point' ])) {
  47. $point += $even_award[ 'point' ];
  48. }
  49. if (!empty($even_award[ 'growth' ])) {
  50. $growth += $even_award[ 'growth' ];
  51. }
  52. break;
  53. }
  54. }
  55. }
  56. if ($point > 0) {
  57. $remark = '签到奖励' . $point . '积分';
  58. $member_account_model->addMemberAccount($param[ 'site_id' ], $param[ 'member_id' ], 'point', $point, 'signin', 0, $remark);
  59. }
  60. if ($growth > 0) {
  61. $remark = '签到奖励' . $growth . '成长值';
  62. $member_account_model->addMemberAccount($param[ 'site_id' ], $param[ 'member_id' ], 'growth', $growth, 'signin', 0, $remark);
  63. }
  64. // 是否已签满一个周期
  65. if ($member_info[ 'sign_days_series' ] == $config[ 'value' ][ 'cycle' ]) {
  66. model('member')->update([ 'sign_days_series' => 0 ], [ [ 'member_id', '=', $param[ 'member_id' ] ] ]);
  67. }
  68. }
  69. }
  70. return [ 'point' => $point, 'growth' => $growth ];
  71. }
  72. }