User.php 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: hp
  5. * Date: 2017/11/21
  6. * Time: 10:42
  7. */
  8. namespace App\Modules\User\Models;
  9. use Illuminate\Database\Eloquent\Model;
  10. use DB;
  11. class User extends Model
  12. {
  13. protected $connection = 'api_mysql';
  14. protected $table = 'users';
  15. protected $fillable =
  16. ['id', 'openid', 'unionid', 'distribution_channel_id', 'head_img',
  17. 'register_ip', 'send_order_id', 'balance', 'sex', 'country', 'city',
  18. 'province', 'nickname', 'charge_balance', 'reward_balance', 'is_new','nickname'
  19. ];
  20. /**
  21. * 获取用户信息列表
  22. * @param $pageSize 每页显示的条数
  23. */
  24. static function getUserList($limit = 10000, $offset = 0)
  25. {
  26. return self::orderBy('id', 'asc')->limit($limit)->offset($offset)->get();
  27. }
  28. /**
  29. * 获取用户信息列表
  30. * @param $pageSize 每页显示的条数
  31. */
  32. static function getPaginationList($pageSize = 20, $careStatus = 0)
  33. {
  34. if (0 == $careStatus) {
  35. return self::orderBy('id', 'desc')->paginate($pageSize);
  36. } elseif (1 == $careStatus) {
  37. return self::where('head_img', '!=', '')->orderBy('id', 'desc')->paginate($pageSize);
  38. } elseif (2 == $careStatus) {
  39. return self::where('head_img', '=', '')->orderBy('id', 'desc')->paginate($pageSize);
  40. }
  41. }
  42. /**
  43. * 根据id获取用户信息
  44. */
  45. static function getById($id)
  46. {
  47. return self::find($id);
  48. }
  49. /**
  50. * 根据id获取用户信息
  51. */
  52. static function getUserByNickAndChannelId($distribution_channel_id,$nickname)
  53. {
  54. return self::where(['distribution_channel_id'=>$distribution_channel_id,'nickname'=>$nickname])->first();
  55. }
  56. /**
  57. * 根据id获取用户信息
  58. */
  59. static function getUserDataById($id)
  60. {
  61. return self::where('id', $id)->get();
  62. }
  63. /**
  64. * 创建用户
  65. */
  66. static function addUser($params)
  67. {
  68. $openid = isset($params['openid']) ? $params['openid'] : '';
  69. $unionid = isset($params['unionid']) ? $params['unionid'] : '';
  70. $distribution_channel_id = isset($params['distribution_channel_id']) ? $params['distribution_channel_id'] : '';
  71. if ($openid && $unionid && $distribution_channel_id) {
  72. $province = isset($params['province']) ? $params['province'] : '';
  73. $city = isset($params['city']) ? $params['city'] : '';
  74. $country = isset($params['country']) ? $params['country'] : '';
  75. $head_img = isset($params['headimgurl']) ? $params['headimgurl'] : '';
  76. $send_order_id = isset($params['send_order_id']) ? $params['send_order_id'] : 0;
  77. $sex = isset($params['sex']) ? $params['sex'] : 0;
  78. $register_ip = isset($params['register_ip']) ? $params['register_ip'] : '';
  79. $is_new = isset($params['is_new']) ? $params['is_new'] : 0;
  80. $nickname = isset($params['nickname']) ? $params['nickname'] : '';
  81. $base_data = compact('unionid', 'distribution_channel_id');
  82. $extra_data = compact('openid', 'province', 'city', 'country', 'head_img', 'send_order_id', 'sex', 'register_ip', 'is_new','nickname');
  83. return self::firstOrCreate($base_data, $extra_data);
  84. }
  85. }
  86. /**
  87. * 更新用户
  88. */
  89. static function updateInfo($id, $params = [])
  90. {
  91. return self::where('id', $id)->update($params);
  92. }
  93. static function getUser($uid)
  94. {
  95. return self::where('id', $uid)->first();
  96. }
  97. /**
  98. * 用户余额添加
  99. * @param $uid
  100. * @param $fee
  101. * @return mixed
  102. */
  103. static function addBalance($uid, $fee, $charge, $given)
  104. {
  105. $res1 = User::where('id', $uid)->increment('balance', $fee);
  106. $res2 = User::where('id', $uid)->increment('charge_balance', $charge);
  107. if ($given) User::where('id', $uid)->increment('reward_balance', $given);
  108. return $res1 && $res2;
  109. }
  110. //获取推广用户总数
  111. static function getPromotionTotal($send_order_id)
  112. {
  113. return self::where('send_order_id', $send_order_id)->count();
  114. }
  115. /**
  116. * 查询渠道某天注册用户总数
  117. * @param $channel_id
  118. * @param $date
  119. * @return mixed
  120. */
  121. static function getChannelDayTotal($channel_id, $date)
  122. {
  123. $end_date = date('Y-m-d',strtotime($date)+86400);
  124. return self::where('distribution_channel_id', $channel_id)->where('created_at','>=',$date)->where('created_at', '<',$end_date)->count();
  125. }
  126. /**
  127. * 查询渠道注册用户总数
  128. * @param $channel_id
  129. * @return mixed
  130. */
  131. static function getChannelTotal($channel_id)
  132. {
  133. return self::where('distribution_channel_id', $channel_id)->count();
  134. }
  135. /**
  136. * 查询渠道某段时间注册用户总数
  137. * @param $channel_id
  138. * @param $startDate
  139. * @param $endDate
  140. * @return mixed
  141. */
  142. static function getChannelDayToDayTotal($channel_id, $startDate = '', $endDate = '')
  143. {
  144. $searchObj = self::whereIn('distribution_channel_id', $channel_id);
  145. if ($startDate) {
  146. $searchObj->where('created_at', '>=', $startDate);
  147. }
  148. if ($endDate) {
  149. $searchObj->where('created_at', '<', $endDate);
  150. }
  151. return $searchObj->count();
  152. }
  153. /**
  154. * 查询渠道某段时间注册用户总数
  155. * @param array $channelIds
  156. * @param $startDate
  157. * @param $endDate
  158. * @return mixed
  159. */
  160. static function getChannelsDayToDayTotal($channelIds, $startDate = '', $endDate = '')
  161. {
  162. $searchObj = DB::table(DB::raw('users use index(distribution_channel_created)'))->whereIn('distribution_channel_id', $channelIds);
  163. //$searchObj = self::whereIn('distribution_channel_id', $channelIds);
  164. if ($startDate) {
  165. $searchObj->where('created_at', '>=', $startDate);
  166. }
  167. if ($endDate) {
  168. $searchObj->where('created_at', '<', $endDate);
  169. }
  170. //\Log::info($searchObj->toSql());
  171. return $searchObj->count();
  172. }
  173. /**
  174. * 查询注册用户总数
  175. * @param $params
  176. */
  177. static function getTotalCount($params)
  178. {
  179. $searchObj = self::orderBy('id','desc');
  180. if(isset($params['begin_time'])) $searchObj->where('created_at', '>=', $params['begin_time']);
  181. if(isset($params['end_time'])) $searchObj->where('created_at', '<=', $params['end_time']);
  182. return $searchObj->count();
  183. }
  184. static function getUserDataDetailById($id)
  185. {
  186. return self::where('users.id', $id)
  187. ->select(DB::raw("users.*,year_orders.begin_time,year_orders.end_time"))
  188. ->leftjoin('year_orders','year_orders.uid','=','users.id')
  189. ->get();
  190. }
  191. }