DemandGroupChatService.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. <?php
  2. namespace app\common\service;
  3. use app\common\model\demand\group\Chat;
  4. use app\common\traits\ServiceTrait;
  5. use Exception;
  6. use GuzzleHttp\Exception\GuzzleException;
  7. class DemandGroupChatService
  8. {
  9. use ServiceTrait;
  10. /** @var Chat */
  11. public static $Model = Chat::class;
  12. // 竞标状态
  13. const STATUS_BIDDING_NO = 0; //无
  14. const STATUS_BIDDING_ONGOING = 1; //竞标中
  15. const STATUS_BIDDING_WIN = 2; //中标
  16. const STATUS_BIDDING_FAILED = 3; //未中标
  17. const BIDDING_STATUS_MAP = [
  18. self::STATUS_BIDDING_NO => '无',
  19. self::STATUS_BIDDING_ONGOING => '竞标中',
  20. self::STATUS_BIDDING_WIN => '中标',
  21. self::STATUS_BIDDING_FAILED => '未中标',
  22. ];
  23. // 竞标状态
  24. const STATUS_PROCESS_NO = 0; //未处理
  25. const STATUS_PROCESS_ONGOING = 1; //待确认
  26. const STATUS_PROCESS_CONFIRMED = 2; //已确认
  27. const STATUS_PROCESS_FAILED = 3; //已拒绝
  28. const STATUS_PROCESS_TIMEOUT = 4; //超时弃权
  29. const PROCESS_STATUS_MAP = [
  30. self::STATUS_PROCESS_NO => '未处理',
  31. self::STATUS_PROCESS_ONGOING => '待确认',
  32. self::STATUS_PROCESS_CONFIRMED => '已确认',
  33. self::STATUS_PROCESS_FAILED => '已拒绝',
  34. self::STATUS_PROCESS_TIMEOUT => '超时弃权',
  35. ];
  36. /**
  37. * 保存客户群列表
  38. * @return void
  39. * @throws GuzzleException
  40. */
  41. public static function createList()
  42. {
  43. $scene = 2;
  44. $state = '';
  45. $group_chat_list = WorkWeChatService::groupChatList();
  46. foreach ($group_chat_list as $chat) {
  47. $chat_id = $chat['chat_id'] ?? 0;
  48. $groupChatInfo = WorkWeChatService::groupChatInfo($chat_id);
  49. // $config_id = WorkWeChatService::groupChatAddJoinWay([$chat_id], $scene, $state);
  50. $dataList[] = [
  51. 'demand_id' => 0,
  52. 'chat_id' => $chat_id,
  53. 'name' => $groupChatInfo['name'] ?? '',
  54. 'config_id' => '',
  55. 'qr_code' => '',
  56. 'scene' => $scene,
  57. 'state' => $state,
  58. ];
  59. }
  60. usort($dataList, function($a, $b) {
  61. return (int)filter_var($a['name'], FILTER_SANITIZE_NUMBER_INT) <=> (int)filter_var($b['name'], FILTER_SANITIZE_NUMBER_INT);
  62. });
  63. $chatIdList = self::where('chat_id', '<>', '')->column('chat_id');
  64. $dataList = array_filter($dataList, function($value) use($chatIdList) {
  65. return !in_array($value['chat_id'], $chatIdList);
  66. });
  67. $res = (new self::$Model)->saveAll($dataList);
  68. }
  69. /**
  70. * 更新二维码
  71. * @param $demand_id
  72. * @param bool $refresh
  73. * @return mixed
  74. * @throws
  75. */
  76. public static function updateQrCode($demand_id, bool $refresh = false)
  77. {
  78. //分配一个未使用的群
  79. $info = self::getOne(['demand_id' => 0], [], ['id']);
  80. if (!$info) {
  81. return false;
  82. }
  83. $info->demand_id = $demand_id;
  84. if (!$info->qr_code || $refresh) {
  85. //更新config_id,防止设置群聊邀请确认后不生效
  86. $config_id = WorkWeChatService::groupChatAddJoinWay([$info['chat_id']]);
  87. $join_way = WorkWeChatService::groupChatGetJoinWay($config_id);
  88. $info->config_id = $config_id;
  89. $info->qr_code = $join_way['qr_code'] ?? '';
  90. }
  91. return $info->save();
  92. }
  93. }