ActivityRewardService.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. <?php
  2. namespace App\Services;
  3. use App\Constants\HttpStatus;
  4. use App\Constants\Util;
  5. use App\Models\ActivityReward;
  6. use App\Models\Config;
  7. use App\Models\Role;
  8. use Exception;
  9. class ActivityRewardService extends BaseService
  10. {
  11. public static string $MODEL = ActivityReward::class;
  12. /**
  13. * @description: 查询单条数据
  14. * @param array $search
  15. * @return ActivityReward|null
  16. */
  17. public static function findOne(array $search): ActivityReward|null
  18. {
  19. return static::$MODEL::where(static::getWhere($search))->first();
  20. }
  21. public static function getWhere(array $search = []): array
  22. {
  23. $where = [];
  24. if (isset($search['id']) && !empty($search['id'])) {
  25. $where[] = ['id', '=', $search['id']];
  26. }
  27. if (isset($search['status']) && $search['status'] != '') {
  28. $where[] = ['status', '=', $search['status']];
  29. }
  30. if (isset($search['title']) && !empty($search['title'])) {
  31. $where[] = ['title', 'like', "%{$search['title']}%"];
  32. }
  33. if (isset($search['start_time']) && !empty($search['start_time'])) {
  34. if (is_array($search['start_time'])) {
  35. if (count($search['start_time']) == 2) {
  36. $where[] = ['start_time', $search['start_time'][0], $search['start_time'][1]];
  37. } else {
  38. $where[] = ['start_time', '=', $search['start_time'][0]];
  39. }
  40. } else {
  41. $where[] = ['start_time', '=', $search['start_time']];
  42. }
  43. }
  44. if (isset($search['end_time']) && !empty($search['end_time'])) {
  45. if (is_array($search['end_time'])) {
  46. if (count($search['end_time']) == 2) {
  47. $where[] = ['end_time', $search['end_time'][0], $search['end_time'][1]];
  48. } else {
  49. $where[] = ['end_time', '=', $search['end_time'][0]];
  50. }
  51. } else {
  52. $where[] = ['end_time', '=', $search['end_time']];
  53. }
  54. }
  55. return $where;
  56. }
  57. public static function deleteAll(array $search = []): bool
  58. {
  59. $count = static::$MODEL::where(static::getWhere($search))->delete();
  60. if ($count < 1) throw new Exception('删除失败', HttpStatus::CUSTOM_ERROR);
  61. return true;
  62. }
  63. /**
  64. * Update or create
  65. * @param array $params
  66. * @return bool
  67. * @throws Exception
  68. */
  69. public static function submit(array $params = []): bool
  70. {
  71. if (isset($params['start_time']))
  72. $params['start_time'] = strtotime($params['start_time'] . " 00:00:00");
  73. if (isset($params['end_time']))
  74. $params['end_time'] = strtotime($params['end_time'] . " 23:59:59");
  75. if (isset($params['detail_image']))
  76. $params['detail_image'] = Util::replacePartInUrl($params['detail_image']);
  77. if (!empty($params['id'])) {
  78. $info = static::findOne(['id' => $params['id']]);
  79. if (!$info) throw new Exception("操作失败", HttpStatus::CUSTOM_ERROR);
  80. $info->update($params);
  81. } else {
  82. static::$MODEL::create($params);
  83. }
  84. return true;
  85. }
  86. public static function promotionalActivity($chatId): array
  87. {
  88. $keyboard = [];
  89. $url = Config::where('field','activity_home_url ')->first()->val;
  90. $keyboard[] = [
  91. ['text'=>'活动首页','url'=>$url]
  92. ];
  93. $msg = [];
  94. $msg['chat_id'] = $chatId;
  95. $msg['text'] = "点击下方按钮进入活动首页";
  96. $msg['reply_markup'] = json_encode(['inline_keyboard' => $keyboard]);
  97. return $msg;
  98. }
  99. }