| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286 | <?php/** * @copyright   Copyright (c) 2017 https://www.sapixx.com All rights reserved. * @license     Licensed (http://www.apache.org/licenses/LICENSE-2.0). * @author      pillar<ltmn@qq.com> * 支付有礼 */namespace app\allwin\controller\Manage;use app\allwin\controller\Common;use app\allwin\model\AllwinStore;use app\allwin\model\AllwinGift;use app\allwin\model\AllwinGiftData;use app\allwin\model\AllwinGiftStore;use think\facade\Request;use think\helper\Time;class Gift extends Common{    public function initialize()    {        parent::initialize();        $this->assign('pathMaps', [['name'=>'支付有礼','url' => url('manage.gift/index')]]);    }    /**     * 列表     */    public function index(){        $condition = [];        $condition['member_miniapp_id'] = $this->member_miniapp_id;        $view['lists'] = AllwinGift::where($condition)->order('id desc')->paginate(20);         return view()->assign($view);    }    /**     * 活动预览     */    public function review(int $id){        $condition = [];        $view['info'] = AllwinGift::where($this->mini_program)->where(['id' => $id])->where($condition)->find();        if(!$view['info']){            $this->error("404 NOT FOUND");        }        $view['pay_num']    = AllwinGiftData::where(['gift_id' => $id])->where($condition)->sum('pay_num');         $view['pay_amount'] = AllwinGiftData::where(['gift_id' => $id])->where($condition)->sum('pay_amount');         $view['gite_num']   = AllwinGiftData::where(['gift_id' => $id])->where($condition)->count();         $view['coupon_num'] = AllwinGiftData::where(['gift_id' => $id])->where($condition)->where('coupon_id','>',0)->count();         $view['take_num']   = AllwinGiftData::where(['gift_id' => $id])->where($condition)->where(['is_take' => 1])->count();         $time      = Request::param('time/d',0);        $starttime = Request::param('starttime/s');        $endtime   = Request::param('endtime/s');        if($time){            switch ($time) {                case 2:                    list($start, $end) = Time::yesterday();                    break;                case 30:                    list($start, $end) = Time::month();                    break;                case 60:                    list($start, $end) = Time::lastMonth();                    break;                default:                    list($start, $end) = Time::today();                    break;            }            $condition[] = ['update_time','>=',$start];            $condition[] = ['update_time','<=',$end];        }else{            if($starttime){                $condition[] = ['update_time','>=',strtotime($starttime)];            }            if($endtime){                $condition[] = ['update_time','<=',strtotime($endtime)];            }        }        $types =Request::param('types/d',2);        switch ($types) {            case 1:                $condition[] = ['coupon_id','=',0];                break;            case 2:                $condition[] = ['coupon_id','>',0];                break;            case 3:                $condition[] = ['coupon_id','>',0];                $condition[] = ['is_take','=',0];                break;            case 4:                $condition[] = ['coupon_id','>',0];                $condition[] = ['is_take','=',1];                break;        }        $view['list']       = AllwinGiftData::where(['gift_id' => $id])->where($condition)->order('id desc')->paginate(20);         $view['types']      = $types;        $view['time']       = $time;        $view['starttime']  = $starttime;        $view['endtime']    = $endtime;        $view['id']         = $id;        return view()->assign($view);    }    /**     * 添加     */    public function add(){        if(request()->isAjax()){            $data = [                'member_miniapp_id' => $this->member_miniapp_id,                'types'             => Request::param('types/d',0),                'pay_num'           => Request::param('pay_num/d',0),                'pay_amount'        => Request::param('pay_amount/f',0),                'coupon_id'         => Request::param('coupon_id/d',0),                'title'             => Request::param('title/s'),                'share_img'         => Request::param('share_img/s'),                'share_title'       => Request::param('share_title/s'),                'share_text'        => Request::param('share_text/s'),                'note'              => Request::param('note/s'),                'start_time'        => Request::param('start_time/s'),                'end_time'          => Request::param('end_time/s'),            ];            $validate = $this->validate($data,'Gift.add');            if(true !== $validate){                return json(['code'=>0,'msg'=>$validate]);            }            $result = AllwinGift::edit($data);            if($result){                return json(['code'=>200,'url'=>url('manage.gift/index'),'msg'=>'操作成功']);            }else{                return json(['code'=>0,'msg'=>'操作失败']);            }        }else{            return view();        }    }    //编辑    public function edit(){        if(request()->isAjax()){            $data = [                'id'                => Request::param('id/d'),                'member_miniapp_id' => $this->member_miniapp_id,                'types'             => Request::param('types/d',0),                'pay_num'           => Request::param('pay_num/d',0),                'pay_amount'        => Request::param('pay_amount/f',0),                'coupon_id'         => Request::param('coupon_id/d',0),                'title'             => Request::param('title/s'),                'share_img'         => Request::param('share_img/s'),                'share_title'       => Request::param('share_title/s'),                'share_text'        => Request::param('share_text/s'),                'note'              => Request::param('note/s'),                'start_time'        => Request::param('start_time/s'),                'end_time'          => Request::param('end_time/s'),            ];            $validate = $this->validate($data,'Gift.edit');            if(true !== $validate){                return json(['code'=>0,'msg'=>$validate]);            }            $result = AllwinGift::edit($data);            if($result){                return json(['code'=>200,'url'=>url('manage.gift/index'),'msg'=>'操作成功']);            }else{                return json(['code'=>0,'msg'=>'操作失败']);            }        }else{            $condition = [];            $condition['id']                = Request::param('id');            $condition['member_miniapp_id'] = $this->member_miniapp_id;            $view['info'] = AllwinGift::where($condition)->find();            if(!$view['info']){                $this->error("404 NOT FOUND");            }            return view()->assign($view);        }    }    //删除    public function delete(int $id){        $condition = [];        $result = AllwinGiftAllwinStore::where($this->mini_program)->where($condition)->where(['store_id' => $id])->find();        if($result){            return json(['code'=>0,'msg'=>'禁止删除,请先删除关联商家']);        }else{            AllwinGift::where($this->mini_program)->where($condition)->where(['id' => $id])->delete();            return json(['code'=>200,'msg'=>'操作成功']);        }     }    /**     * 是否锁定和解锁活动     * @param integer $id     * @return json     */    public function isLock(int $id){        $info = AllwinGift::where($this->mini_program)->where(['id' => $id])->find();        if(!$info){            return json(['code'=>0,'msg'=>'未找到活动']);        }        if($info->is_lock){            $store_id = AllwinGiftAllwinStore::where($this->mini_program)->where(['gift_id' => $id,'is_lock' => 1])->column('store_id');            $is_store = AllwinGiftAllwinStore::where($this->mini_program)->where(['is_lock' => 0,'store_id' => $store_id])->count();            if($is_store){                return json(['code'=>0,'msg'=>'禁止启用,请先删除其它活动中相同的好店']);            }        }        $is_lock = $info->is_lock ? 0 : 1;        $result = AllwinGift::where($this->mini_program)->where(['id' => $id])->update(['is_lock' => $is_lock]);        if($result){            AllwinGiftAllwinStore::where($this->mini_program)->where(['gift_id' => $id])->update(['is_lock' => $is_lock]);            return json(['code'=>200,'msg'=>'操作成功']);        }else{            return json(['code'=>0,'msg'=>'操作失败']);        }    }        /**     * 好店列表     */    public function store(int $id){        $condition = [];        $condition['id']                = $id;        $condition['member_miniapp_id'] = $this->member_miniapp_id;        $info = AllwinGift::where($condition)->find();        if(!$info){            $this->error("404 NOT FOUND");        }        $view['info']  = $info;        $view['store'] = AllwinGiftAllwinStore::where(['gift_id' => $info->id])->order('id desc')->paginate(20,false,['query' => ['id' => $id]]);         return view()->assign($view);    }        /**     * 选择并添加活动好店     */    public function selectStore(int $id){        if(request()->isAjax()){            $ids = input('post.ids/s');            if(empty($ids)){                return json(['code'=>0,'msg'=>'请选择要关联的商家']);            }            $gift = AllwinGift::where($this->mini_program)->where(['id' => $id])->find();            if(empty($gift)){                return json(['code'=>0,'msg'=>'未找到活动']);            }            $ids = (array)ids($ids,true);            $condition = [];            $condition['is_lock']  = 0;            $condition['store_id'] = $ids;            $store_id = AllwinGiftAllwinStore::where($this->mini_program)->where($condition)->column('store_id');            if(!empty($store_id)){                return json(['code'=>0,'msg'=>'同一个好店禁止在多个活动中']);            }            $data = [];            foreach ($ids as $key => $value) {                $data[$key]['member_miniapp_id'] = $gift->member_miniapp_id;                $data[$key]['gift_id']           = $gift->id;                $data[$key]['store_id']          = $value;            }            AllwinGiftAllwinStore::insertAll($data);            return json(['code'=>200,'msg'=>'操作成功','data' =>[]]);        }else{            $condition = [];            $condition[] = ['is_lock','=',0];            $store_id = AllwinGiftAllwinStore::where($this->mini_program)->where($condition)->column('store_id');            $keyword  = Request::param('keyword','');            if(!empty($keyword)){                $condition[] = ['name','like','%'.$keyword.'%'];            }            $view['lists']     = AllwinStore::where($this->mini_program)->where($condition)->whereNotIn('id',$store_id)->order('is_top desc,sort desc,id desc')->paginate(20);            $view['keyword']   = $keyword;            $view['id']        = $id;            return view()->assign($view);           }    }        //删除好店    public function storeDelete(int $id){        $result = AllwinGiftAllwinStore::where($this->mini_program)->where(['id' => $id])->delete();        if($result){            return json(['code'=>200,'msg'=>'操作成功']);        }else{            return json(['code'=>0,'msg'=>'删除失败']);        }     }    }
 |