ChannelQuestionNaire.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: tandunzhao
  5. * Date: 2018/3/22
  6. * Time: 下午5:58
  7. */
  8. namespace App\Modules\Channel\Models;
  9. use Illuminate\Database\Eloquent\Model;
  10. class ChannelQuestionNaire extends Model
  11. {
  12. protected $table = 'channel_question_naire';
  13. protected $fillable = ['id', 'channel_user_id', 'reply_grade', 'business_name', 'company_id', 'distribution_manages_id', 'created_at', 'updated_at'];
  14. /**
  15. * 添加问卷调查信息
  16. * @param $item
  17. * @return mixed
  18. */
  19. static function addQuestionNaire($item)
  20. {
  21. return self::create($item);
  22. }
  23. /**
  24. * 提交问卷调查
  25. * @param $id
  26. * @param $reply_grade
  27. */
  28. static function updateInfo($id, $reply_grade, $business_name)
  29. {
  30. return self::where('id', $id)->update(['reply_grade' => $reply_grade, 'business_name' => $business_name]);
  31. }
  32. /**
  33. * 获取问卷调查信息
  34. * @param $param 查询字段
  35. * @param bool $isAll 是否获取所有
  36. */
  37. static function getQuestionNaires($params, $isAll = false)
  38. {
  39. $search_obj = self::orderBy('reply_grade', 'desc')->groupBy('business_name');
  40. $search_obj->where('reply_grade', '<>', '')->where('business_name', '<>', '');
  41. if (isset($params['business_name'])) {
  42. $search_obj->where('business_name', $params['business_name']);
  43. }
  44. if ($isAll) {
  45. return $search_obj->get();
  46. } else {
  47. return $search_obj->paginate();
  48. }
  49. }
  50. /**
  51. * 查询是否已经显示 或者 提交
  52. * @param $channel_user_ids
  53. * @return mixed
  54. */
  55. static function checkQuestionNaire($company_id, $isReply = false)
  56. {
  57. $search_obj = self::where('company_id', $company_id);
  58. $start = date('Y-m-01');
  59. $end = date('Y-m-d H:i:s');
  60. if ($isReply) {
  61. $search_obj->where('reply_grade', '<>', '');
  62. }
  63. return $search_obj->whereBetween('updated_at', [$start, $end])->count();
  64. }
  65. /**
  66. * 查询本月这个公司是否已经显示
  67. * @param $channel_user_ids
  68. * @return mixed
  69. */
  70. static function geFirstQuestionNaire($company_id)
  71. {
  72. $search_obj = self::where('company_id', $company_id);
  73. $start = date('Y-m-01');
  74. $end = date('Y-m-d H:i:s');
  75. return $search_obj->whereBetween('updated_at', [$start, $end])->first();
  76. }
  77. /**
  78. * 获取商务名下已经参与的公司数
  79. * @param $distribution_manages_id
  80. * @return mixed
  81. */
  82. static function getNaireCompanyCount($distribution_manages_id, $isPreMonth = true)
  83. {
  84. $search_obj = self::select('company_id')->where('distribution_manages_id', $distribution_manages_id)->where('reply_grade', '<>', '');
  85. if ($isPreMonth) {
  86. $begin_time = date('Y-m-01 00:00:00', strtotime('-1 month'));
  87. $end_time = date("Y-m-d 23:59:59", strtotime(-date('d') . 'day'));
  88. $search_obj->whereBetween('updated_at', [$begin_time, $end_time]);
  89. }
  90. return $search_obj->distinct()->count();
  91. }
  92. /**
  93. * 商务名下的参与调查的公司获的总分数
  94. * @param $channel_user_ids
  95. * @return mixed
  96. */
  97. static function getTotalGrade($distribution_manages_id, $isPreMonth = true)
  98. {
  99. $search_obj = self::where('distribution_manages_id', $distribution_manages_id)->where('reply_grade', '<>', '');
  100. if ($isPreMonth) {
  101. $begin_time = date('Y-m-01 00:00:00', strtotime('-1 month'));
  102. $end_time = date("Y-m-d 23:59:59", strtotime(-date('d') . 'day'));
  103. $search_obj->whereBetween('updated_at', [$begin_time, $end_time]);
  104. }
  105. return $search_obj->sum('reply_grade');
  106. }
  107. }