RegisterController.php 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. <?php
  2. /**
  3. * 重庆赤晓店信息科技有限公司
  4. * https://www.chixiaodian.com
  5. * Copyright (c) 2023 赤店商城 All rights reserved.
  6. */
  7. namespace app\modules\client\controllers\v1;
  8. use app\models\AccountLog;
  9. use app\models\IntegralSetting;
  10. use app\models\Option;
  11. use app\models\Register;
  12. use app\models\SaasUser;
  13. use app\models\User;
  14. use app\models\UserGrowthValueLog;
  15. use app\modules\client\controllers\BaseController;
  16. use app\utils\Tools;
  17. class RegisterController extends BaseController
  18. {
  19. /**
  20. * 签到
  21. * @return \yii\web\Response
  22. */
  23. public function actionDo() {
  24. $store_id = get_store_id();
  25. $user_id = get_user_id();
  26. $register = new Register();
  27. $first_day = Register::find()->where(['store_id' => $store_id, 'user_id' => $user_id])->orderBy('created_at DESC')->asArray()->one();
  28. $setting = IntegralSetting::find()->where(['store_id' => get_store_id()])->asArray()->one();
  29. if (!$setting) {
  30. return $this->asJson([
  31. 'code' => 1,
  32. 'msg' => '签到未设置'
  33. ]);
  34. }
  35. if (intval($setting['register_status']) === 0) {
  36. return $this->asJson([
  37. 'code' => 1,
  38. 'msg' => '签到未开启'
  39. ]);
  40. }
  41. $day1 = $first_day['continuation'];
  42. $first_day['register_time'] = strtotime(date('Y-m-d', strtotime($first_day['register_time'])));
  43. $date = strtotime(date('Y-m-d', time()));
  44. if ($date == $first_day['register_time']) {
  45. return $this->asJson([
  46. 'code' => 1,
  47. 'msg' => '已签到'
  48. ]);
  49. }
  50. $day = ($date - $first_day['register_time']) / 86400;
  51. if ($day >= 1 && $day < 2) {
  52. $day1++;
  53. } else {
  54. $day1 = 1;
  55. }
  56. $register_integral = rand($setting['register_integral'] ?? 1, $setting['register_integral_end'] ?? 5);
  57. $register_reward = rand($setting['register_reward'] ?? 1, $setting['register_reward'] ?? 5);
  58. if ($day1 >= $setting['register_continuation']) {
  59. $score = $register_reward + $register_integral;
  60. } else {
  61. $score = $register_integral;
  62. }
  63. $today_date = date('Y-m-d');
  64. $register->store_id = get_store_id();
  65. $register->user_id = get_user_id();
  66. $register->register_time = $today_date;
  67. $register->created_at = time();
  68. $register->continuation = $day1;
  69. $register->integral = $score;
  70. if ($register->save()) {
  71. // 每日签到送积分
  72. AccountLog::saveLog($user_id, $score, AccountLog::TYPE_INTEGRAL, AccountLog::LOG_TYPE_INCOME, AccountLog::TYPE_REGISTER_INTEGRAL, 0, $today_date . "签到赠送积分");
  73. // 签到获取成长值
  74. $setting = Option::get('growth_setting',$store_id,'level','');
  75. if(!empty($setting)){
  76. $setting['value'] = json_decode($setting['value'],true);
  77. }
  78. // 未设置 或者 设置消费成长值为0 的时候直接返回
  79. if($setting && $setting['value']['sign_give'] > 0){
  80. $amount = $setting['value']['sign_give'];
  81. UserGrowthValueLog::setLog($store_id,$user_id,UserGrowthValueLog::LOG_TYPE_ADD,$amount,UserGrowthValueLog::TYPE_SIGN,"签到获赠{$amount}成长值");
  82. }
  83. return $this->asJson([
  84. 'code' => 0,
  85. 'msg' => '签到成功',
  86. 'data' => [
  87. 'continuation' => $register->continuation
  88. ]
  89. ]);
  90. } else {
  91. return $this->asJson([
  92. 'code' => 1,
  93. 'msg' => '签到失败',
  94. ]);
  95. }
  96. }
  97. /**
  98. * 签到首页
  99. * @return \yii\web\Response
  100. */
  101. public function actionIndex() {
  102. $today_day = date('Y-m-d');
  103. $store_id = get_store_id();
  104. $user_id = get_user_id();
  105. $setting = IntegralSetting::find()->where(['store_id' => $store_id])->asArray()->one();
  106. $today = Register::find()->where(['register_time' => $today_day, 'store_id' => $store_id, 'user_id' => $user_id])->asArray()->one();
  107. $register = Register::find()->where(['store_id' => $store_id, 'user_id' => $user_id])->orderBy('created_at DESC')->asArray()->one();
  108. $date_arr = Tools::getDate();
  109. $registerTime = Register::find()->where(['store_id' => $store_id, 'user_id' => $user_id])->asArray()->all();
  110. $register_day = count($registerTime);
  111. $time = [];
  112. foreach ($date_arr['date'] as $key => $value) {
  113. $reg = Register::find()->where(['register_time' => $value, 'store_id' => $store_id, 'user_id' => $user_id])->asArray()->one();
  114. $time[] = [
  115. 'register_time' => $value,
  116. 'day' => $value === date('Y-m-d',time()) ? '今天' : date('n.j',strtotime($value)) ,
  117. 'is_register' => $reg ? 1 : 0
  118. ];
  119. }
  120. // 积分记录
  121. $account_log = AccountLog::find()->where(['store_id' => get_store_id(), 'order_type' => AccountLog::TYPE_REGISTER_INTEGRAL])->limit(10)->orderBy('id DESC')->select('user_id, amount')->asArray()->all();
  122. $log = [];
  123. if (!empty($account_log)) {
  124. foreach ($account_log as &$a_log) {
  125. $saas_user = SaasUser::findOne(['mobile' => User::findOne($a_log['user_id'])->binding]);
  126. $log[] = ($saas_user->name ? Tools::substr_cut($saas_user->name) : '某**') . '获得' . intval($a_log['amount']) . '积分奖励';
  127. }
  128. }
  129. $setting['register_integral_end'] = $setting['register_integral_end'] ?? '5';
  130. $setting['register_reward_end'] = $setting['register_reward_end'] ?? '5';
  131. return $this->asJson([
  132. 'code' => 0,
  133. 'data' => [
  134. 'setting' => $setting,
  135. 'today' => $today ? 1 : 0,
  136. 'total_register_day' => $register_day,
  137. 'register' => $register ? $register['continuation'] : 0,
  138. 'registerTime' => $time,
  139. 'account_log' => $log
  140. ],
  141. ]);
  142. }
  143. }