| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 | <?phpnamespace App\Modules\WechatMaterial\Services;use App\Http\Controllers\WechatController;use App\Modules\WechatMaterial\Models\BatchWechatMaterial;use App\Modules\WechatMaterial\Models\WechatMaterial;use App\Modules\WechatMaterial\Models\WechatMaterialSendMsg;use App\Modules\WechatMaterial\Models\WechatOfficialAccountMaterialSendStatistics;use DB;class WechatMaterialSendMsgService{    public static function get_batch_send_wechat_material_list($params, $orderBy = [])    {        $res = WechatMaterial::leftJoin('batch_wechat_materials', 'batch_wechat_materials.id', 'wechat_materials.batch_id')            ->leftJoin('wechat_material_send_msgs', 'batch_wechat_materials.id', 'wechat_material_send_msgs.batch_id')            ->select(                'wechat_material_send_msgs.distribution_channel_id',                'wechat_material_send_msgs.appid',                'wechat_material_send_msgs.name',                'wechat_material_send_msgs.status',                'wechat_material_send_msgs.send_user_num',                'wechat_material_send_msgs.receive_user_num',                'wechat_material_send_msgs.first_day_material_uv',                'wechat_material_send_msgs.first_day_url_uv',                'wechat_material_send_msgs.batch_id',                'wechat_material_send_msgs.id',                'wechat_material_send_msgs.created_at as msg_created_at',                'wechat_material_send_msgs.updated_at as msg_updated_at',                'batch_wechat_materials.subscribe_time',                'batch_wechat_materials.balance',                'batch_wechat_materials.content',                'batch_wechat_materials.sex',                'batch_wechat_materials.send_time',                'batch_wechat_materials.pay_type',                'batch_wechat_materials.interaction_time',                'batch_wechat_materials.is_all_user',                'batch_wechat_materials.created_at as batch_created_at',                'batch_wechat_materials.updated_at as batch_updated_at',                'wechat_materials.title',                'wechat_materials.book_name'            )            ->where('wechat_material_send_msgs.del_flag', 0);        if (isset($params['name']) && $params['name']) {            $res->where('wechat_material_send_msgs.name', $params['name']);        }        if (isset($params['distribution_channel_id']) && $params['distribution_channel_id']) {            $res->where('wechat_material_send_msgs.distribution_channel_id', $params['distribution_channel_id']);        }        if (isset($params['status']) && $params['status']) {            $res->where('wechat_material_send_msgs.status', $params['status']);        }        if (isset($params['begin_time']) && $params['begin_time']) {        }        if (isset($params['end_time']) && $params['end_time']) {        }        if ($orderBy) {            $res->orderBy($orderBy['field'], $orderBy['rule']);        } else {            $res->orderBy('batch_wechat_materials.send_time', 'desc');        }        return $res->paginate();    }    public static function preview_wechat_material($batch_id, $user_id)    {        try {            $queue_param = [                'batch_id' => $batch_id,                'user_id'  => $user_id,            ];            ActionService::PushActionToQueue($queue_param);        } catch (\exception $e) {            \Log::info('preview_wechat_material:' . $e->getMessage());        }        return 1;    }    /**     * @return mixed     */    public static function update_wechat_material_send_msg_info($param)    {        try {            if(isset($param->MsgID) && !empty($param->MsgID)){                \Log::info('update_wechat_material_send_msg_info:'.$param->MsgID.' incre:'.$param->SentCount);                DB::connection('api_mysql')                ->table('wechat_material_send_msgs')->where('wechat_msg_id',$param->MsgID)->increment('receive_user_num',$param->SentCount);            }        } catch (\exception $e) {            \Log::info('update_wechat_material_send_msg_info_ept:' . $e->getMessage());        }        return true;    }        /**     * @return mixed     */    public static function getUnCollectedList()    {        try {            $result = WechatMaterialSendMsg::getUnCollectedList();        } catch (\exception $e) {            \Log::info('preview_wechat_material:' . $e->getMessage());        }        return $result;    }    /**     * 更新首日图文阅读 跨度为1天     * @param $queryDay 查询起始时间 2014-12-08     */    public static function updateFirstDayMaterialUV($queryDay)    {        $list = WechatMaterialSendMsgService::getUnCollectedList();        myLog('SyncWechatMaterialStatistics')->notice('需要更新的记录:' . json_encode($list));        foreach ($list as $wechatMaterialItem) {            $WechatController = new WechatController($wechatMaterialItem->appid);            $stats            = $WechatController->app->stats;            $r                = $stats->articleTotal($queryDay, $queryDay);            if ($r && isset($r['list'])) {                //获取消息内记录明细                $materialList = WechatMaterialSendMsg::get_infos_by_batch_id($wechatMaterialItem->batch_id);                $list = $r['list'];                foreach ($list as $item) {                    if (preg_match('/' . $wechatMaterialItem->msg_data_id . '_(\d+)/', $item['msgid'], $match)) {                        $sequence = (int)$match[1];                        foreach ($item['details'] as $k => $detail) {                            $send_count         = $detail['target_user'];                            $int_page_read_user = $detail['int_page_read_user'];                            $ori_page_read_user = $detail['ori_page_read_user'];                            //首日                            if ($queryDay == $detail['stat_date']) {                                $messageItem = $materialList->where('sort_no', $sequence)->first();                                if (isset($messageItem)) {                                    WechatOfficialAccountMaterialSendStatistics::updateOrCreate([                                                                                                    'batch_id'              => $wechatMaterialItem->batch_id,                                                                                                    'appid'                 => $wechatMaterialItem->appid,                                                                                                    'wechat_material_id'    => $messageItem->id,                                                                                                    'first_day_material_uv' => $int_page_read_user,                                                                                                ]);                                }                            }                        }                    }                }            }        }    }}
 |