Award.php 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <?php
  2. /**
  3. * 奖励服务模块
  4. * @author wesmiler
  5. */
  6. namespace app\weixin\service;
  7. use app\weixin\model\Member;
  8. use app\weixin\model\Wechat;
  9. class Award
  10. {
  11. public static function inviteUser($userId, $regUserInfo = [])
  12. {
  13. $userInfo = Member::where(['id' => $userId, 'user_status' => 1])
  14. ->field('id,user_login,user_nickname,openid,redheart')
  15. ->find();
  16. PRedis::set('test:userInfo', ['data'=> $userInfo,'userId'=> $userId], 600);
  17. $inviteOpenid = isset($userInfo['openid']) ? $userInfo['openid'] : '';
  18. $inviteNickname = isset($userInfo['user_nickname']) ? $userInfo['user_nickname'] : '';
  19. $redheart = isset($userInfo['redheart']) ? floatval($userInfo['redheart']) : 0;
  20. if (empty($userInfo)) {
  21. return false;
  22. }
  23. $siteInfo = cmf_get_site_info();
  24. $awardNum = isset($siteInfo['invite_award_redheart']) ? intval($siteInfo['invite_award_redheart']) : 0;
  25. if ($awardNum > 0) {
  26. // 奖励入账
  27. Member::where(['id' => $userId])->update(['redheart' => moneyFormat($redheart + $awardNum), 'updated_at' => date('Y-m-d H:i:s')]);
  28. // 账户明细
  29. $dateTime = date('Y-m-d H:i:s');
  30. $regNickname = isset($regUserInfo['user_nickname']) ? $regUserInfo['user_nickname'] : '';
  31. $regUserId = isset($regUserInfo['id']) ? $regUserInfo['id'] : '';
  32. $logData = [
  33. 'user_id' => $userId,
  34. 'type' => 4,
  35. 'account_type' => 1,
  36. 'change_type' => 1,
  37. 'money' => $awardNum,
  38. 'balance' => $redheart,
  39. 'remark' => "邀请用户[$regUserId],昵称[{$regNickname}]完成注册奖励",
  40. 'created_at' => $dateTime,
  41. ];
  42. db('account_log')->insertGetId($logData);
  43. // 推送消息
  44. $message = [];
  45. $pushInvite = isset($siteInfo['push_invite']) ? $siteInfo['push_invite'] : true;
  46. if ($inviteOpenid && $pushInvite) {
  47. $siteName = isset($siteInfo['site_name']) ? $siteInfo['site_name'] : '本公众号';
  48. $inviteMsg = isset($siteInfo['invite_msg']) ? $siteInfo['invite_msg'] : '';
  49. $match = ['{nickname}', '{inviteNickname}', '{awardNum}', '{datetime}', '{date}'];
  50. $data = [$regNickname, $inviteNickname, $awardNum, $dateTime, date('Y.m.d')];
  51. $inviteMsg = $inviteMsg ? str_replace($match, $data, $inviteMsg) : "尊敬的【{$inviteNickname}】,您在{$dateTime}成功邀请了用户{$regNickname}关注{$siteName},获得奖励{$awardNum}颗爱心!!!";
  52. $message = ['content'=> $inviteMsg];
  53. }
  54. return ['openid'=> $inviteOpenid, 'message'=> $message];
  55. }
  56. return false;
  57. }
  58. }