123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- <?php
- namespace app\common\service;
- use app\common\model\demand\group\Chat;
- use app\common\traits\ServiceTrait;
- use Exception;
- use GuzzleHttp\Exception\GuzzleException;
- class DemandGroupChatService
- {
- use ServiceTrait;
- /** @var Chat */
- public static $Model = Chat::class;
- // 竞标状态
- const STATUS_BIDDING_NO = 0; //无
- const STATUS_BIDDING_ONGOING = 1; //竞标中
- const STATUS_BIDDING_WIN = 2; //中标
- const STATUS_BIDDING_FAILED = 3; //未中标
- const BIDDING_STATUS_MAP = [
- self::STATUS_BIDDING_NO => '无',
- self::STATUS_BIDDING_ONGOING => '竞标中',
- self::STATUS_BIDDING_WIN => '中标',
- self::STATUS_BIDDING_FAILED => '未中标',
- ];
- // 竞标状态
- const STATUS_PROCESS_NO = 0; //未处理
- const STATUS_PROCESS_ONGOING = 1; //待确认
- const STATUS_PROCESS_CONFIRMED = 2; //已确认
- const STATUS_PROCESS_FAILED = 3; //已拒绝
- const STATUS_PROCESS_TIMEOUT = 4; //超时弃权
- const PROCESS_STATUS_MAP = [
- self::STATUS_PROCESS_NO => '未处理',
- self::STATUS_PROCESS_ONGOING => '待确认',
- self::STATUS_PROCESS_CONFIRMED => '已确认',
- self::STATUS_PROCESS_FAILED => '已拒绝',
- self::STATUS_PROCESS_TIMEOUT => '超时弃权',
- ];
- /**
- * 保存客户群列表
- * @return void
- * @throws GuzzleException
- */
- public static function createList()
- {
- $scene = 2;
- $state = '';
- $group_chat_list = WorkWeChatService::groupChatList();
- foreach ($group_chat_list as $chat) {
- $chat_id = $chat['chat_id'] ?? 0;
- $groupChatInfo = WorkWeChatService::groupChatInfo($chat_id);
- // $config_id = WorkWeChatService::groupChatAddJoinWay([$chat_id], $scene, $state);
- $dataList[] = [
- 'demand_id' => 0,
- 'chat_id' => $chat_id,
- 'name' => $groupChatInfo['name'] ?? '',
- 'config_id' => '',
- 'qr_code' => '',
- 'scene' => $scene,
- 'state' => $state,
- ];
- }
- usort($dataList, function($a, $b) {
- return (int)filter_var($a['name'], FILTER_SANITIZE_NUMBER_INT) <=> (int)filter_var($b['name'], FILTER_SANITIZE_NUMBER_INT);
- });
- $chatIdList = self::where('chat_id', '<>', '')->column('chat_id');
- $dataList = array_filter($dataList, function($value) use($chatIdList) {
- return !in_array($value['chat_id'], $chatIdList);
- });
- $res = (new self::$Model)->saveAll($dataList);
- }
- /**
- * 更新二维码
- * @param $demand_id
- * @param bool $refresh
- * @return mixed
- * @throws
- */
- public static function updateQrCode($demand_id, bool $refresh = false)
- {
- //分配一个未使用的群
- $info = self::getOne(['demand_id' => 0], [], ['id']);
- if (!$info) {
- return false;
- }
- $info->demand_id = $demand_id;
- if (!$info->qr_code || $refresh) {
- //更新config_id,防止设置群聊邀请确认后不生效
- $config_id = WorkWeChatService::groupChatAddJoinWay([$info['chat_id']]);
- $join_way = WorkWeChatService::groupChatGetJoinWay($config_id);
- $info->config_id = $config_id;
- $info->qr_code = $join_way['qr_code'] ?? '';
- }
- return $info->save();
- }
- }
|