| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 | <?phpnamespace App\Http\Controllers\Channel\Finance;use App\Http\Controllers\Channel\Finance\Transformers\OfficialAccountBillsTransformer;use App\Modules\Finance\Services\OfficialAccountBillsService;use DB;use Illuminate\Http\Request;use Illuminate\Support\Facades\Storage;class OfficialAccountBills extends BaseController{    /**     * @apiDefine Finance 结算提现模块     */    /**     * @apiVersion 1.0.0     * @apiDescription 服务号结算详情     * @api {GET} OfficialAccountBills/getList 服务号结算详情     * @apiGroup Finance     * @apiName OfficialAccountBills-getList     * @apiParam     {String}  start_time 开始时间.     * @apiParam     {String}  end_time 结束时间.     * @apiParam     {String}  export  导出(值给1就行export=1)     * @apiSuccess   {String}  data.list.recharge_amount 充值金额.     * @apiSuccess   {String}  data.list.date 日期.     * @apiSuccess   {String}  data.list.nickname  服务号     * @apiSuccess   {String}  data.meta.channel_recharge_amount total  渠道累计充值     * @apiSuccess   {String}  data.meta.recharge_amount_in_30_days 30日内充值     * @apiSuccess   {String}  data.meta.recharge_amount_in_60_days 60日内充值     * @apiSuccess   {String}  data.meta.recharge_amount_in_90_days 90日内充值     * @apiSuccess   {String}  data.meta.new_fans_num 新关粉丝数     * @apiSuccess   {String}  data.meta.per_page per_page     * @apiSuccess   {String}  data.meta.current_page current_page     * @apiSuccess   {String}  data.meta.last_page last_page     * @apiSuccess   {String}  data.meta.next_page_url next_page_url     * @apiSuccess   {String}  data.meta.prev_page_url prev_page_url     * @apiSuccessExample {json} Success-Response:     *     *     {     *         "code": 0,     *         "msg": "",     *         "data":{     *              list:[     *                  {     *                       recharge_amount: "3145.00",     *                       date: "2018-04-13",     *                       appid: "wx1d6855c00d8e6500",     *                       nickname: "南梦繁花",     *                       channel_recharge_amount: "27680.00",     *                       recharge_amount_in_30_days: 111,     *                       recharge_amount_in_60_days: 111,     *                       recharge_amount_in_90_days: 111,     *                       new_fans_num: 40     *                    },...     *                ]     *             meta:{}     *             }     *     */    public function getList(Request $request)    {        $start_time = $request->input('start_time', date('Y-m-d'));        $end_time = $request->input('end_time', date('Y-m-d', time() + 86400));        $distribution_channel_id = $this->getChannelId();        $official = $this->getOfficialAccount($distribution_channel_id);        if (!$official)            return response()->success();        if ($request->input('export')) {            $data = OfficialAccountBillsService::getBillsByOfficialAcount($distribution_channel_id, $start_time, $end_time, true);//            $data = OrderService::OfficialAccountOrderStat($distribution_channel_id,$start_time,$end_time,500);        } else {//            $data = OrderService::OfficialAccountOrderStat($distribution_channel_id,$start_time,$end_time);            $data = OfficialAccountBillsService::getBillsByOfficialAcount($distribution_channel_id, $start_time, $end_time, false);        }//        if ($data) {//            foreach ($data as &$v) {//                $v->nickname = isset($official[$v->appid]) ? $official[$v->appid] : '未知';//                $amount = OrderService::OfficialAccountOrderSum($distribution_channel_id, $start_time, $end_time, $v->appid);//                $v->total_amount = $amount;//            }//        }        if ($request->input('export')) {            $filename = date('YmdHis') . '.csv';            Storage::append($filename, mb_convert_encoding("日期,服务号,充值金额,总额,新关粉丝数,30天内充值,60天内充值,90天内充值", 'gbk'));            $str = '';            if ($data) {                foreach ($data as $val) {                    $val->new_fans_num = $val->new_fans_num ? $val->new_fans_num : 0;                    $val->recharge_amount_in_30_days = $val->recharge_amount_in_30_days ? $val->recharge_amount_in_30_days : 0;                    $val->recharge_amount_in_60_days = $val->recharge_amount_in_60_days ? $val->recharge_amount_in_60_days : 0;                    $val->recharge_amount_in_90_days = $val->recharge_amount_in_90_days ? $val->recharge_amount_in_90_days : 0;                    $str .= "{$val->date},{$val->nickname},{$val->recharge_amount},{$val->channel_recharge_amount},{$val->new_fans_num},{$val->recharge_amount_in_30_days},{$val->recharge_amount_in_60_days},{$val->recharge_amount_in_90_days}\r\n";                }            }            Storage::append($filename, mb_convert_encoding($str, 'gbk'));            return response()->download(storage_path('app/' . $filename))->deleteFileAfterSend(true);        }        return response()->pagination(new OfficialAccountBillsTransformer(), $data);    }    private function getOfficialAccount($distribution_channel_id)    {        if (empty($distribution_channel_id)) return [];        $res = DB::table('official_accounts')->select('nickname', 'appid')->where('distribution_channel_id', $distribution_channel_id)->get();        if ($res) {            $data = [];            foreach ($res as $v) {                $data[$v->appid] = $v->nickname;            }            return $data;        }        return [];    }}
 |