signinlogic.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. <?php
  2. /*
  3. * @Author: wang jun
  4. * @Date: 2021-10-29 16:16:29
  5. * @Last Modified by: wang jun
  6. * @Last Modified time: 2021-11-09 16:21:40
  7. */
  8. namespace app\index\logic;
  9. use app\index\logic\businesslogic;
  10. use app\index\model\signinmodel;
  11. use app\index\model\userinfomodel;
  12. use think\Log;
  13. class signinlogic
  14. {
  15. /**
  16. * 用户签到
  17. * 20220105
  18. * wj
  19. */
  20. public function usersignin($info)
  21. {
  22. if (!isset($info['userid']) && !isset($info['openid'])) {
  23. return backarr(0, "请求数据错误");
  24. }
  25. if (isset($info['userid'])) {
  26. if (!is_numeric($info['userid']) || empty($info['userid'])) {
  27. return backarr(0, "用户id错误");
  28. }
  29. }
  30. if (isset($info['openid'])) {
  31. if (!is_string($info['openid']) || empty($info['openid'])) {
  32. return backarr(0, "openid错误");
  33. }
  34. }
  35. $uinfo = $this->getuserinfo($info);
  36. $userid = $uinfo['id'];
  37. $issign = $this->issign($info);
  38. if ($issign) {
  39. return backarr(0, "已签到");
  40. }
  41. $signid = $this->newsignin($info);
  42. if (!$signid) {
  43. return backarr(0, "签到失败");
  44. }
  45. //积分处理
  46. $data = [
  47. 'userid' => $uinfo['id'],
  48. 'type' => 'signin',
  49. 'typeid' => 1,
  50. 'checkuserinfo' => false,
  51. ];
  52. $l_bl = new businesslogic();
  53. $result = $l_bl->handlescorebusinessforuserid($data);
  54. log::info($result);
  55. if (1 != $result['status']) {
  56. return backarr(0, $result['msg']);
  57. }
  58. return backarr(1, "签到成功", ['id' => $signid]);
  59. }
  60. /**
  61. * 是否签到
  62. * 20220105
  63. * wj
  64. */
  65. private function issign($param)
  66. {
  67. $m_s = new signinmodel();
  68. $where = [
  69. 'userid' => $param['userid'],
  70. 'signdate' => date('Y-m-d'),
  71. ];
  72. $info = $m_s->getinfo($where, 'id');
  73. return empty($info) ? false : true;
  74. }
  75. /**
  76. * 签到数据入库
  77. * 20220105
  78. * wj
  79. */
  80. private function newsignin($param)
  81. {
  82. $m_s = new signinmodel();
  83. $signdata = [
  84. 'signdate' => date("Y-m-d"),
  85. 'signtime' => date("Y-m-d H:i:s"),
  86. ];
  87. $signdata = array_merge($signdata, $param);
  88. $id = $m_s->insertData($signdata);
  89. return empty($id) ? false : $id;
  90. }
  91. /**
  92. * 获取分享详情
  93. * 20220104
  94. * wj
  95. */
  96. private function getuserinfo($param)
  97. {
  98. $m_u = new userinfomodel();
  99. $where = [];
  100. if (isset($param['userid'])) {
  101. $where['id'] = $param['userid'];
  102. }
  103. if (isset($param['openid'])) {
  104. $where['openid'] = $param['openid'];
  105. }
  106. $info = $m_u->getInfo($where);
  107. if (empty($info)) {
  108. throw new Exception("无用户信息");
  109. }
  110. return $info;
  111. }
  112. }