Initial commit
This commit is contained in:
@@ -0,0 +1,104 @@
|
||||
<?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();
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user