UserSign.php 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  8. // +----------------------------------------------------------------------
  9. // | Author: CRMEB Team <admin@crmeb.com>
  10. // +----------------------------------------------------------------------
  11. namespace app\wap\model\user;
  12. use service\SystemConfigService;
  13. use basic\ModelBasic;
  14. use traits\ModelTrait;
  15. /**用户签到表
  16. * Class UserSign
  17. * @package app\wap\model\user
  18. */
  19. class UserSign extends ModelBasic
  20. {
  21. use ModelTrait;
  22. public static function checkUserSigned($uid)
  23. {
  24. return UserBill::be(['uid' => $uid, 'add_time' => ['>', strtotime('today')], 'category' => 'gold_num', 'type' => 'sign']);
  25. }
  26. public static function userSignedCount($uid)
  27. {
  28. return self::userSignBillWhere($uid)->count();
  29. }
  30. /**
  31. * @param $uid
  32. * @return Model
  33. */
  34. public static function userSignBillWhere($uid)
  35. {
  36. return UserBill::where(['uid' => $uid, 'category' => 'gold_num', 'type' => 'sign']);
  37. }
  38. /**近期用户签到记录
  39. * @param $uid
  40. */
  41. public static function userSignInlist($uid, $page, $limit)
  42. {
  43. $list = self::userSignBillWhere($uid)->field('number,add_time')->order('add_time DESC')
  44. ->page((int)$page, (int)$limit)->select();
  45. $list = count($list) > 0 ? $list->toArray() : [];
  46. foreach ($list as &$value) {
  47. $value['add_time'] = date('Y-m-d H:i:s', $value['add_time']);
  48. }
  49. return $list;
  50. }
  51. public static function sign($userInfo, $gold_name)
  52. {
  53. $uid = $userInfo['uid'];
  54. $gold_coin = SystemConfigService::get('single_gold_coin') ?: 0;
  55. $balance = bcadd($gold_coin, $userInfo['gold_num'], 0);
  56. self::beginTrans();
  57. $res1 = UserBill::income('用户签到', $uid, 'gold_num', 'sign', $gold_coin, 0, $balance, '签到获得' . floatval($gold_coin) . $gold_name);
  58. $res2 = User::bcInc($uid, 'gold_num', $gold_coin, 'uid');
  59. $res3 = self::userSign($gold_coin, $uid, $balance);
  60. $res = $res1 && $res2 && $res3;
  61. self::checkTrans($res);
  62. if ($res)
  63. return $gold_coin;
  64. else
  65. return false;
  66. }
  67. public static function userSign($gold_coin, $uid, $balance)
  68. {
  69. $data = [
  70. 'uid' => $uid,
  71. 'title' => '签到奖励',
  72. 'number' => $gold_coin,
  73. 'balance' => $balance,
  74. 'add_time' => time()
  75. ];
  76. return self::set($data);
  77. }
  78. }