12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- <?php
- namespace Modules\Manage\Http\Controllers;
- use Catch\Base\CatchController;
- use Illuminate\Http\Request;
- use Modules\Channel\Models\UserHasMiniprograms;
- use Modules\Channel\Services\User\UserService;
- use Modules\Channel\Exceptions\ChannelBusinessException;
- use Modules\Common\Errors\Errors;
- use Modules\Manage\Models\Miniprogram;
- use Log;
- class UserMiniprogramController extends CatchController
- {
- const COMPANY_ROLE = 'company';
- public function __construct(
- protected readonly UserHasMiniprograms $userHasMiniprograms,
- protected readonly Miniprogram $miniprogram
- )
- {
-
- }
- public function allocationStore($miniprogram_id,Request $request)
- {
- $uids = $request->post('uids');
- $action = $request->post('action');
- if(empty($miniprogram_id) || empty($uids) || empty($action) || !in_array($action,['on','off'])){
- ChannelBusinessException::throwError(Errors::PARAM_EMPTY);
- }
- $miniprogram_info = $this->miniprogram->find($miniprogram_id);
- if(!$miniprogram_info || $miniprogram_info->status == 0){
- ChannelBusinessException::throwError(Errors::MINIPROGRAM_STATUS_ERROR);
- }
- collect(explode(',',$uids))->filter(function (int $value, int $key) use($miniprogram_id,$action){
- $user_simple = UserService::getUserInfo($value,['roles.identify']);
- if($user_simple && $user_simple->identify == self::COMPANY_ROLE){
- $result = $this->userHasMiniprograms->where('uid',$value)->where('miniprogram_id',$miniprogram_id)->first();
- if($action == 'off'){
- if($result){
- $result->is_enabled = 0;
- $result->save();
- }
- return true;
- }
- if($result){
- if($result->is_enabled == 0){
- $result->is_enabled = 1;
- $result->save();
- }
- return true;
- }
- $this->userHasMiniprograms->create([
- 'uid'=>$value,'miniprogram_id'=>$miniprogram_id,'is_enabled'=>1
- ]);
- return true;
- }
- return false;
- });
- return [];
- }
- public function getAllocationInfo($miniprogram_id){
- $all_company_account = UserService::listByRole(self::COMPANY_ROLE,['users.username','users.id']);
- $result = $all_company_account->map(function ($item,$key) use($miniprogram_id) {
- $info = $this->userHasMiniprograms->where('uid',$item->id)->where('miniprogram_id',$miniprogram_id)->where('is_enabled',1)->count();
- if($info){
- $item->user_has_miniprogram = 1;
- $item->user_has_miniprogram_flag = 'on';
- }else{
- $item->user_has_miniprogram = 0;
- $item->user_has_miniprogram_flag = 'off';
- }
- return $item;
- });
- $group = $result->groupBy('user_has_miniprogram_flag')->toArray();
- if(!isset($group['on'])){
- $group['on'] = [];
- }
- if(!isset($group['off'])){
- $group['off'] = [];
- }
- $group['all'] = $result->toArray();
- return $group;
- }
- }
|