|
@@ -7,6 +7,9 @@ use Catch\Base\CatchController;
|
|
use Illuminate\Foundation\Validation\ValidatesRequests;
|
|
use Illuminate\Foundation\Validation\ValidatesRequests;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
+use Modules\Common\Errors\Errors;
|
|
|
|
+use Modules\Common\Exceptions\CommonBusinessException;
|
|
|
|
+use Modules\WechatPlatform\Models\WechatKfMessageModel;
|
|
use Modules\WechatPlatform\Services\WechatPlatformConstService;
|
|
use Modules\WechatPlatform\Services\WechatPlatformConstService;
|
|
|
|
|
|
class KFMessageController extends CatchController
|
|
class KFMessageController extends CatchController
|
|
@@ -18,7 +21,7 @@ class KFMessageController extends CatchController
|
|
*/
|
|
*/
|
|
public function list(Request $request) {
|
|
public function list(Request $request) {
|
|
$name = $request->input('name');
|
|
$name = $request->input('name');
|
|
- $messageType = $request->input('messageType');
|
|
|
|
|
|
+ $messageType = $request->input('message_type');
|
|
$status = $request->input('status');
|
|
$status = $request->input('status');
|
|
$sendAtStart = $request->input('send_at_start');
|
|
$sendAtStart = $request->input('send_at_start');
|
|
$sendAtEnd = $request->input('send_at_end');
|
|
$sendAtEnd = $request->input('send_at_end');
|
|
@@ -41,7 +44,7 @@ class KFMessageController extends CatchController
|
|
return $query->where('gzh_ids', 'like', '%#'. $gzhid . '#%');
|
|
return $query->where('gzh_ids', 'like', '%#'. $gzhid . '#%');
|
|
})->orderBy('id', 'desc')
|
|
})->orderBy('id', 'desc')
|
|
->paginate($request->input('limit', 20));
|
|
->paginate($request->input('limit', 20));
|
|
- $gzhIds = $gzhs = collect();
|
|
|
|
|
|
+ $gzhIds = $gzhs = $ugs = collect();
|
|
$result->pluck('gzh_ids')->every(function ($item) use ($gzhIds){
|
|
$result->pluck('gzh_ids')->every(function ($item) use ($gzhIds){
|
|
$gzhIds->merge(explode('#', trim($item, '#')));
|
|
$gzhIds->merge(explode('#', trim($item, '#')));
|
|
});
|
|
});
|
|
@@ -53,13 +56,18 @@ class KFMessageController extends CatchController
|
|
->get()->keyBy('id');
|
|
->get()->keyBy('id');
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ $ugIds = $result->pluck('ug_id')->diff([0]);
|
|
|
|
+ if($ugIds->isNotEmpty()) {
|
|
|
|
+ $ugs = DB::table('user_groups')->whereIn('id', $ugIds)
|
|
|
|
+ ->select('id', 'name')->get()->keyBy('id');
|
|
|
|
+ }
|
|
|
|
+
|
|
foreach ($result as $item) {
|
|
foreach ($result as $item) {
|
|
$item->gzh_names = $this->strGzhId($item->gzh_ids, $gzhs);
|
|
$item->gzh_names = $this->strGzhId($item->gzh_ids, $gzhs);
|
|
$item->status_str = WechatPlatformConstService::KF_MESSAGE_STATUS_MAPPER[$item->status] ?? '';
|
|
$item->status_str = WechatPlatformConstService::KF_MESSAGE_STATUS_MAPPER[$item->status] ?? '';
|
|
$item->message_content_arr = \json_decode($item->message_content, true);
|
|
$item->message_content_arr = \json_decode($item->message_content, true);
|
|
$item->message_type = WechatPlatformConstService::KF_MESSAGE_TYPE_MAPPER[$item->message_type] ?? '';
|
|
$item->message_type = WechatPlatformConstService::KF_MESSAGE_TYPE_MAPPER[$item->message_type] ?? '';
|
|
- // todo:完善
|
|
|
|
- $item->uc_str = '';
|
|
|
|
|
|
+ $item->ug_str = $ugs->get($item->ug_id)->name ?? '';
|
|
}
|
|
}
|
|
|
|
|
|
return $result;
|
|
return $result;
|
|
@@ -84,7 +92,7 @@ class KFMessageController extends CatchController
|
|
public function add(Request $request) {
|
|
public function add(Request $request) {
|
|
$this->validate($request, [
|
|
$this->validate($request, [
|
|
'name' => 'required', 'message_type' => 'required|in:1', 'message_content' => 'required|array',
|
|
'name' => 'required', 'message_type' => 'required|in:1', 'message_content' => 'required|array',
|
|
- 'u_type' => 'required|in:1,2', 'uc_unique_key' => 'required_if:u_type,2', 'send_at' => 'required|date_format:Y-m-d H:i:s',
|
|
|
|
|
|
+ 'u_type' => 'required|in:1,2', 'ug_id' => 'required_if:u_type,2', 'send_at' => 'required|date_format:Y-m-d H:i:s',
|
|
]);
|
|
]);
|
|
$now = date('Y-m-d H:i:s');
|
|
$now = date('Y-m-d H:i:s');
|
|
DB::table('wechat_kf_messages')
|
|
DB::table('wechat_kf_messages')
|
|
@@ -93,7 +101,7 @@ class KFMessageController extends CatchController
|
|
'message_type' => $request->input('message_type'),
|
|
'message_type' => $request->input('message_type'),
|
|
'message_content' => \json_encode($request->input('message_content'), JSON_UNESCAPED_UNICODE),
|
|
'message_content' => \json_encode($request->input('message_content'), JSON_UNESCAPED_UNICODE),
|
|
'u_type' => $request->input('u_type', 1),
|
|
'u_type' => $request->input('u_type', 1),
|
|
- 'uc_unique_key' => $request->input('uc_unique_key', ''),
|
|
|
|
|
|
+ 'ug_id' => $request->input('ug_id', 0),
|
|
'send_at' => $request->input('send_at'),
|
|
'send_at' => $request->input('send_at'),
|
|
'status' => WechatPlatformConstService::KF_MESSAGE_STATUS_PRE_SEND,
|
|
'status' => WechatPlatformConstService::KF_MESSAGE_STATUS_PRE_SEND,
|
|
'user_id' => $this->getLoginUserId(),
|
|
'user_id' => $this->getLoginUserId(),
|
|
@@ -112,7 +120,7 @@ class KFMessageController extends CatchController
|
|
$this->validate($request, [
|
|
$this->validate($request, [
|
|
'id' => 'required',
|
|
'id' => 'required',
|
|
'name' => 'required', 'message_type' => 'required|in:1', 'message_content' => 'required|array',
|
|
'name' => 'required', 'message_type' => 'required|in:1', 'message_content' => 'required|array',
|
|
- 'u_type' => 'required|in:1,2', 'uc_unique_key' => 'required_if:u_type,2', 'send_at' => 'required|date_format:Y-m-d H:i:s',
|
|
|
|
|
|
+ 'u_type' => 'required|in:1,2', 'ug_id' => 'required_if:u_type,2', 'send_at' => 'required|date_format:Y-m-d H:i:s',
|
|
]);
|
|
]);
|
|
$now = date('Y-m-d H:i:s');
|
|
$now = date('Y-m-d H:i:s');
|
|
DB::table('wechat_kf_messages')
|
|
DB::table('wechat_kf_messages')
|
|
@@ -126,7 +134,7 @@ class KFMessageController extends CatchController
|
|
'message_type' => $request->input('message_type'),
|
|
'message_type' => $request->input('message_type'),
|
|
'message_content' => \json_encode($request->input('message_content'), JSON_UNESCAPED_UNICODE),
|
|
'message_content' => \json_encode($request->input('message_content'), JSON_UNESCAPED_UNICODE),
|
|
'u_type' => $request->input('u_type', '1'),
|
|
'u_type' => $request->input('u_type', '1'),
|
|
- 'uc_unique_key' => $request->input('uc_unique_key', ''),
|
|
|
|
|
|
+ 'ug_id' => $request->input('ug_id', 0),
|
|
'send_at' => $request->input('send_at'),
|
|
'send_at' => $request->input('send_at'),
|
|
'updated_at' => $now,
|
|
'updated_at' => $now,
|
|
]);
|
|
]);
|
|
@@ -143,17 +151,35 @@ class KFMessageController extends CatchController
|
|
'id' => 'required',
|
|
'id' => 'required',
|
|
'gzh_ids' => 'required|array'
|
|
'gzh_ids' => 'required|array'
|
|
]);
|
|
]);
|
|
- $now = date('Y-m-d H:i:s');
|
|
|
|
- DB::table('wechat_kf_messages')
|
|
|
|
- ->where([
|
|
|
|
- ['id', '=', $request->input('id')],
|
|
|
|
- ['user_id', '=', $this->getLoginUserId()],
|
|
|
|
- ['status', '=', WechatPlatformConstService::KF_MESSAGE_STATUS_PRE_SEND],
|
|
|
|
- ['is_enabled', '=', 1],
|
|
|
|
- ])->update([
|
|
|
|
- 'gzh_ids' => sprintf('#%s#', join('#', array_unique($request->input('gzh_ids')))),
|
|
|
|
- 'updated_at' => $now,
|
|
|
|
- ]);
|
|
|
|
|
|
+
|
|
|
|
+ $message = WechatKfMessageModel::where([
|
|
|
|
+ ['id', '=', $request->input('id')],
|
|
|
|
+ ['user_id', '=', $this->getLoginUserId()],
|
|
|
|
+ ['status', '=', WechatPlatformConstService::KF_MESSAGE_STATUS_PRE_SEND],
|
|
|
|
+ ['is_enabled', '=', 1],
|
|
|
|
+ ])->first();
|
|
|
|
+ if(!$message) {
|
|
|
|
+ $allGzhIds = $request->input('gzh_ids');
|
|
|
|
+ if(2 == $message->u_type) {
|
|
|
|
+ $configGzhIds = DB::table('gzh_ug_maps')
|
|
|
|
+ ->where([
|
|
|
|
+ ['is_enabled', '=', 1],
|
|
|
|
+ ['ug_id', '=', $message->id]
|
|
|
|
+ ])->select('gzh_id')->get()->pluck('gzh_id');
|
|
|
|
+
|
|
|
|
+ if(collect($allGzhIds)->diff($configGzhIds)->isNotEmpty()) {
|
|
|
|
+ $gzhNames = DB::table('wechat_authorization_infos')
|
|
|
|
+ ->whereIn('id', collect($allGzhIds)->diff($configGzhIds)->unique())
|
|
|
|
+ ->select( 'nick_name')
|
|
|
|
+ ->get()->pluck('nick_name')->join(', ');
|
|
|
|
+ CommonBusinessException::throwError([
|
|
|
|
+ Errors::OPENPLATFORM_UG_MAP_GZH_NOT_EXIST[0], $gzhNames. ' 等公众号没有配置对应用户分群'
|
|
|
|
+ ]);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ $message->gzh_ids = sprintf('#%s#', join('#', array_unique($request->input('gzh_ids'))));
|
|
|
|
+ $message->save();
|
|
|
|
+ }
|
|
|
|
|
|
return 'ok';
|
|
return 'ok';
|
|
}
|
|
}
|