| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306 | <?phpnamespace App\Modules\WechatMaterial\Services;use App\Modules\WechatMaterial\Models\BatchWechatMaterial;use App\Modules\WechatMaterial\Models\WechatMaterial;use App\Modules\WechatMaterial\Models\WechatMaterialSendMsg;class WechatMaterialService{        public static function get_zs_wechat_material_list($request,$extra_param=[]){        $channel_user_id = $extra_param['channel_user_id'];        \Log::info('get_zs_wechat_material_list channel_user_id:'.$channel_user_id);                return BatchWechatMaterial::get_zs_wechat_material_list($channel_user_id);    }        public static function del_zs_wechat_material($request,$extra_param=[]){        $batch_id = $request->has('batch_id')?$request->get('batch_id'):'';                $channel_user_id = $extra_param['channel_user_id'];        \Log::info('del_zs_wechat_material:'.$batch_id.' channel_user_id:'.$channel_user_id);                // 权限检测报错出来        if(!self::check_batch_wechat_user_priv($channel_user_id,$batch_id)){            return response()->error('BATCH_WECHAT_PRIV_ERROR');        }                $result = BatchWechatMaterial::del_zs_wechat_material($batch_id,$channel_user_id);                // TODO循环删除appid的素材                return $result;    }            public static function create_zs_wechat_material($request,$extra_param=[]){        $content = $request->has('content')?$request->get('content'):'';        $extend_html_content = $request->has('extend_html_content')?$request->get('extend_html_content'):'';        $name = $request->has('name')?$request->get('name'):'';        if(!is_array($content)){            $content_items = json_decode($content);        }else{            $content_items = $content;        }                $channel_user_id = $extra_param['channel_user_id'];        $distribution_channel_id = $extra_param['channel_id'];                // 批量         $batchWechatMaterial = [            'channel_user_id'=>$channel_user_id,            'distribution_channel_id'=>$distribution_channel_id,            'name'=>$name,            'content'=>json_encode($content_items),            'status'=>'init',            'del_flag'=>0,            'created_at'=>date('Y-m-d H:i:s'),            'updated_at'=>date('Y-m-d H:i:s'),        ];        \Log::info('$create_zs_wechat_material:'.$name);        \Log::info($batchWechatMaterial);                $new_batchWechatMaterial = BatchWechatMaterial::firstOrCreate($batchWechatMaterial);        $batch_id = isset($new_batchWechatMaterial->id)?$new_batchWechatMaterial->id:'';        \Log::info('$new_batchWechatMaterial_batch_id:'.$batch_id);        \Log::info($content_items);        //         单个映射素材表        if(!empty($content_items)){            foreach($content_items as $key=>$content_item){                $sort_no = $key+1;                $wechatMaterial = [                    'batch_id'=>$batch_id,                    'bid'=>isset($content_item[4]->bid)?$content_item[4]->bid:'',                    'book_name'=>isset($content_item[5]->book_name)?$content_item[5]->book_name:'',                    'title'=>isset($content_item[0]->title)?$content_item[0]->title:'',                    'cover_url'=>isset($content_item[3]->image)?$content_item[3]->image:'',                    'url'=>isset($content_item[2]->url)?$content_item[2]->url:'',                    'desc'=>isset($content_item[1]->description)?$content_item[1]->description:'',                    'content_mode'=>isset($content_item[6]->content_mode)?$content_item[6]->content_mode:'',                    'content'=>isset($content_item[7]->content)?$content_item[7]->content:'',                    'sort_no'=>$sort_no,                    'created_at'=>date('Y-m-d H:i:s'),                    'updated_at'=>date('Y-m-d H:i:s'),                ];                \Log::info('$wechatMaterial:');\Log::info($wechatMaterial);                    WechatMaterial::firstOrCreate($wechatMaterial);            }        }                return $new_batchWechatMaterial;            }        public static function get_zs_wechat_batch_distribution_infos($request,$extra_param=[]){        $batch_id = $request->has('batch_id')?$request->get('batch_id'):'';                return WechatMaterialSendMsg::get_zs_wechat_batch_distribution_infos($batch_id);    }            public static function update_zs_wechat_material($request,$extra_param=[]){        $batch_id = $id = $request->has('batch_id')?$request->get('batch_id'):'';        $channel_user_id = $extra_param['channel_user_id'];        \Log::info('update_zs_wechat_material:'.$id.' channel_user_id:'.$channel_user_id);                if(!self::check_batch_wechat_user_priv($channel_user_id,$batch_id)){            return response()->error('BATCH_WECHAT_PRIV_ERROR');        }                $content = $request->has('content')?$request->get('content'):'';        if(!is_array($content)){            $content_items = json_decode($content);        }else{            $content_items = $content;        }        $name = $request->has('name')?$request->get('name'):'';                $updated_at = date('Y-m-d H:i:s');        $content = json_encode($content_items);        $base_data = compact('id','channel_user_id');        $extra_data = compact('content','updated_at');        \Log::info('update_zs_wechat_material:'.$id);                BatchWechatMaterial::where($base_data)->update($extra_data);                // 单个映射素材表        if(!empty($content_items)){            foreach($content_items as $key=>$content_item){                $sort_no = $key+1;                                // 删除老的素材                WechatMaterial::delByBatchId($id);                                $wechatMaterial = [                    'batch_id'=>$batch_id,                    'bid'=>isset($content_item[4]->bid)?$content_item[4]->bid:'',                    'book_name'=>isset($content_item[5]->book_name)?$content_item[5]->book_name:'',                    'title'=>isset($content_item[0]->title)?$content_item[0]->title:'',                    'cover_url'=>isset($content_item[3]->image)?$content_item[3]->image:'',                    'url'=>isset($content_item[2]->url)?$content_item[2]->url:'',                    'desc'=>isset($content_item[1]->description)?$content_item[1]->description:'',                    'content_mode'=>isset($content_item[6]->content_mode)?$content_item[6]->content_mode:'',                    'content'=>isset($content_item[7]->content)?$content_item[7]->content:'',                    'sort_no'=>$sort_no,                    'created_at'=>date('Y-m-d H:i:s'),                    'updated_at'=>date('Y-m-d H:i:s'),                ];                \Log::info('$wechatMaterial:');\Log::info($wechatMaterial);                                WechatMaterial::firstOrCreate($wechatMaterial);            }        }                return true;            }        public static function set_wechat_material_batch_send_info($request,$extra_param=[]){        $id = $request->has('batch_id')?$request->get('batch_id'):'';        $send_time = $request->has('send_time')?$request->get('send_time'):'';        $subscribe_time = $request->has('subscribe_time')?$request->get('subscribe_time'):'';        $balance = $request->has('balance')?$request->get('balance'):'';        $sex = $request->has('sex')?$request->get('sex'):'';        $pay_type = $request->has('pay_type')?$request->get('pay_type'):'';        $interaction_time = $request->has('interaction_time')?$request->get('interaction_time'):'';//         $status = $request->has('status')?$request->get('status'):'';        $is_all_user = $request->has('is_all_user')?$request->get('is_all_user'):'';//         $del_flag = $request->has('del_flag')?$request->get('del_flag'):'';        $channel_user_id = $extra_param['channel_user_id'];        \Log::info('set_wechat_material_batch_send_info:'.$id.' channel_user_id:'.$channel_user_id);                // 权限检测报错出来        if(!self::check_batch_wechat_user_priv($channel_user_id,$batch_id)){            return response()->error('BATCH_WECHAT_PRIV_ERROR');        }                $updated_at = date('Y-m-d H:i:s');        \Log::info('set_wechat_material_batch_send_info:'.$id);                $base_data = compact('id');        $extra_data = compact('send_time', 'subscribe_time', 'balance', 'sex', 'pay_type', 'interaction_time', 'is_all_user','updated_at');        \Log::info('set_wechat_material_batch_send_info:'.$id);                return BatchWechatMaterial::where($base_data)->update($extra_data);    }        /**     * 同步素材到公众号     * @param unknown $request     * @param array $extra_param     */    public static function sync_zs_wechat_material($request,$extra_param=[]){        $batch_id = $id = $request->has('batch_id')?$request->get('batch_id'):'';        $distribution_appids = $request->has('distribution_appids')?$request->get('distribution_appids'):'';                $channel_user_id = $extra_param['channel_user_id'];        \Log::info('sync_zs_wechat_material:'.$id.' channel_user_id:'.$channel_user_id);                if(!self::check_batch_wechat_user_priv($channel_user_id,$batch_id)){            return response()->error('BATCH_WECHAT_PRIV_ERROR');        }                // 获取素材         $batch_wechat_material = BatchWechatMaterial::find($batch_id);        $batch_wechat_material_contents = WechatMaterialService::getWeChatMaterials($batch_id);        \Log::info('batch_wechat_material');\Log::info($batch_wechat_material);        \Log::info('batch_wechat_material_contents');\Log::info($batch_wechat_material_contents);        $distribution_appids = json_decode($distribution_appids);        foreach($distribution_appids as $distribution_channel_id=>$appids){            foreach($appids as $appid){                try{                    // 把任务扔队列处理                    \Log::info('sync_zs_wechat_material:'.$distribution_channel_id.' appid:'.$appid);                    $wechatMaterialSendMsg = [                        'batch_id'=>$batch_id,                        'appid'=>$appid,                        'distribution_channel_id'=>$distribution_channel_id,                        'created_at'=>date('Y-m-d H:i:s'),                        'updated_at'=>date('Y-m-d H:i:s')                    ];                    WechatMaterialSendMsg::firstOrCreate($wechatMaterialSendMsg);                                        $queue_param = [                        'action_type'=>'sync_zs_wechat_material',                        'batch_wechat_material'=>$batch_wechat_material,                        'batch_wechat_material_contents'=>$batch_wechat_material_contents,                    ];                    ActionService::PushActionToQueue($queue_param);                }catch(\exception $e){                    \Log::info('sync_zs_wechat_material_ept:'.$e->getMessage());                }                            }        }    }        /**     * 检查权限     * @param unknown $request     * @param array $extra_param     */    public static function check_batch_wechat_user_priv($channel_user_id,$batch_id){        $checkRes = BatchWechatMaterial::get_zs_wechat_material($batch_id,$channel_user_id);        if(empty($checkRes)){            return false;        }else{            return true;        }    }        /**     * 获取素材内容     * @param unknown $request     * @param array $extra_param     */    public static function getWeChatMaterials($batch_id){        return WechatMaterial::getWeChatMaterials($batch_id);    }    public static function delWechatMaterialById($id){        try{            $queue_param = [                'action_type'=>'del_wechat_material',                'wechat_material_id'=>$id,            ];            ActionService::PushActionToQueue($queue_param);        }catch(\exception $e){            \Log::info('delWechatMaterial:'.$e->getMessage());        }        return 1;//        return WechatMaterial::where('id',$id)->update(//            [//                'del_flag'=>1,//                'updated_at'=>date('Y-m-d H:i:s')//            ]//        );    }    public static function deleteBatchSendWechatMaterial($id){        try{            $queue_param = [                'action_type'=>'del_batch_send_wechat_material',                'batch_id'=>$id,            ];            ActionService::PushActionToQueue($queue_param);        }catch(\exception $e){            \Log::info('delWechatMaterial:'.$e->getMessage());        }        return 1;    }}
 |