| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231 | <?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\home;use app\common\facade\Inform;use think\facade\Request;use app\common\controller\Official;use app\common\event\User;use app\common\facade\WechatMp;use app\allwin\model\AllwinUnmarket;use app\allwin\model\AllwinUnmarketOrder;use app\allwin\model\AllwinUnmarketStore;use app\allwin\model\AllwinUnmarketBooking;use app\allwin\model\AllwinUnmarketReward;use app\allwin\model\AllwinUnmarketVerif;use app\allwin\model\MchId;use app\common\facade\WechatPay;use app\allwin\model\AllwinStore;class Unmarket extends Official{    /**     * 分享赚钱营销     */    public function index($id){        if(request()->isAjax()){            $data = [                'id'                => input('post.id/d'),                'member_miniapp_id' => $this->member_miniapp_id,                'telphone'          => input('post.telphone/s','','htmlspecialchars'),                'telname'           => input('post.telname/s','','htmlspecialchars'),                'uid'               => $this->user->id,            ];            $validate = $this->validate($data,'Unmarket.order');            if(true !== $validate){                return json(['code'=>0,'msg'=>$validate]);            }            //判断是否已购买过            $order = AllwinUnmarketOrder::where(['member_miniapp_id' => $this->member_miniapp_id,'share_id' => $data['id'],'uid' => $this->user->id,'state' => 1])->count();            if($order > 0){                return json(['code'=>0,'msg'=>'您已下单,不允许重复下单']);            }            //判断是否邀请用户            $ucode = model('SystemUser')->isInvite(User::getUcode());            $data['share_uid'] = 0;            if($ucode){                if($this->user['id'] != $ucode){                    $data['share_uid'] = $ucode;                }            }            $order_no = $this->user->invite_code.order_no();            $data['order_no'] = $order_no;            $result =  AllwinUnmarketOrder::createOrder($data);            if($result){                $unorder['miniapp_id'] = $this->member_miniapp_id;                $unorder['name']       = $result->title;                $unorder['order_no']   = $order_no;                $unorder['total_fee']  = $result->price*100;                $unorder['notify_url'] = Request::root(true).'/api-'.$this->member_miniapp_id.'/4/allwin-unmarket-notify.html';                $setting = model('AllwinConfig')->getConfig($this->member_miniapp_id);                if ($setting->is_psp == 1) {                    $mid = MchId::getMch(0,$this->member_miniapp_id);                    $unorder['mchid']  = $mid->mchid;                }                $unorder['openid']     = $this->user->official_uid;                $ispay = WechatPay::orderPay($unorder,true);                if ($ispay['code'] == 0) {                    return json(['code'=>0,'return_code'=>'FAIL','msg' => $ispay['msg']]);                }                return json(['code'=>200,'msg'=>'操作成功','data'=>$ispay['data']]);            }else{                return json(['code'=>0,'msg'=>'活动不存在']);            }        }else{            $condition['id'] = $id;            $info = AllwinUnmarket::where($condition)->find();            if(empty($info)){                $this->error("404 NOT FOUND");            }            $imgs = json_decode($info['imgs'],true);            $info['imgs']        = array_values_unset($info->img,$imgs);            $view['info']        = $info;            $view['order']       = AllwinUnmarketOrder::where(['share_id' => $info->id,'state' => 1])->order('id desc')->select(); //订单            $view['order_num']   = count($view['order']);            $view['store']       = AllwinUnmarketStore::where(['union_id' => $info->id])->order('id desc')->select();  //好店            $view['award_amout'] = AllwinUnmarketReward::where(['union_id' => $info->id])->sum('money');   //计算福利总金额            $view['award']       = AllwinUnmarketReward::where(['union_id' => $info->id])->order('money desc')->limit(50)->select();  //福利排行榜            $view['weconfig']    = WechatMp::jsApiList($this->member_miniapp_id);            $view['post_url']    = urls('Allwin/unmarket/index',$this->member_miniapp_id,['id' =>$id,'ucode' => $this->ucode]);            $view['share_url']   = urls('Allwin/unmarket/index',$this->member_miniapp_id,['id' =>$id,'ucode' => $this->user->invite_code]);            $view['share_rcode'] = action("common/library/qrcode/create",['url' => $view['share_url'],'qrname'=>'unmarket_qrcode_'.$id.'_'.$this->user['invite_code']],'facade');            AllwinUnmarket::where($condition)->setInc('views',rand(1,5));            $this->view->engine->layout(false);            return view()->assign($view);        }    }    /**     * 联盟商家     */    public function store(int $id,int $unid){        $info = AllwinUnmarket::where(['id' => $unid])->field(['title,share_img,share_title,share_text'])->find();        if(empty($info)){            $this->error("404 NOT FOUND");        }        $store = AllwinUnmarketStore::where(['id' => $id,'union_id' => $unid])->find();        if(empty($store)){            $this->error("404 NOT FOUND");        }        $store->imgs         = array_values_unset($store->img,json_decode($store->imgs,true));        $view['store']       = $store;        $view['info']        = $info;        $view['weconfig']    = WechatMp::jsApiList($this->member_miniapp_id);        $view['share_url']   = urls('Allwin/unmarket/index',$this->member_miniapp_id,['id' =>$unid,'ucode' => $this->user->invite_code]);        $this->view->engine->layout(false);        return view()->assign($view);    }   /**     * 我的订单     */    public function order(int $id){        if (request()->isAjax()) {            $data = [                'id'                => $id,                'store_id'          => input('post.store_id/d'),                'member_miniapp_id' => $this->member_miniapp_id,                'uid'               => $this->user->id,            ];            $validate = $this->validate($data,'Unmarket.okpass');            if(true !== $validate){                return json(['code'=>0,'msg'=>$validate]);            }            //判断是否付款            $order = AllwinUnmarketOrder::where(['uid' => $this->user->id,'share_id' => $id,'state' => 1])->count();            if($order <= 0){                return json(['code'=>0,'msg'=>'你没有下单,禁止核销']);            }            //判断是否联盟            $store = AllwinUnmarketStore::where(['member_miniapp_id' => $this->member_miniapp_id,'union_id' => $id,'id' => $data['store_id']])->find();            if(empty($store)){                return json(['code'=>0,'msg'=>'未找到核销商家,禁止核销']);            }            //判断是否重复核销            $verif = AllwinUnmarketVerif::where(['uid' => $this->user->id,'union_id' => $id,'store_id' => $data['store_id']])->count();            if($verif > 0){                return json(['code'=>0,'msg'=>'统一店铺,禁止重复核销']);            }            $verif_data['member_miniapp_id'] = $this->member_miniapp_id;            $verif_data['uid']               = $this->user->id;            $verif_data['union_id']          = $id;            $verif_data['store_id']          = $data['store_id'];            $verif_data['times']             = time();            $rel = AllwinUnmarketVerif::insert($verif_data);            if(empty($rel)){                return json(['code'=>0,'msg'=>'核销失败']);            }else{                $modelStore = AllwinStore::where(['id' => $store->store_id])->find();                if($modelStore){                    //通知店主到微信                    Inform::sms($modelStore->manage_uid,$this->member_miniapp_id,['title' =>'业务进展通知','type' => '订单核销','content' =>'您有新订单已经成功核销','state' => '成功']);                }                //通知申请者到微信                Inform::sms($this->user->id,$this->member_miniapp_id,['title' =>'业务进展通知','type' => '订单核销','content' =>'您的订单已经成功核销','state' => '成功']);                return json(['code'=>200,'msg'=>'您已成功核销']);            }        }else{            $view['info'] = AllwinUnmarket::where(['id' => $id])->field(['id,telphone,mycode,tips,title,share_img,share_title,share_text,start_time,end_time'])->find();            if(empty($view['info'])){                $this->error("404 NOT FOUND");            }            $is_order = AllwinUnmarketOrder::where(['uid' => $this->user->id,'share_id' => $id,'state' => 1])->find();            $order = [];            if(empty($is_order)){                $view['store'] = [];            }else{                $view['store'] = AllwinUnmarketStore::where(['member_miniapp_id' => $this->member_miniapp_id,'union_id' => $id])->select();                $verif = AllwinUnmarketVerif::where(['uid' => $this->user->id,'union_id' => $id])->field('store_id')->select()->toArray();                $order = array_column($verif,'store_id');            }            $view['order'] = $order;            $this->view->engine->layout(false);            return view()->assign($view);        }     }    /**     * 联系客服     */    public function service(){        if (request()->isAjax()) {            $data = [                'member_miniapp_id' => $this->member_miniapp_id,                'union_id'          => input('post.union_id/d', '', 'htmlspecialchars'),                'name'              => input('post.storename/s', '', 'htmlspecialchars'),                'telphone'          => input('post.telphone/s', '', 'htmlspecialchars'),                'telname'           => input('post.telname/s', '', 'htmlspecialchars'),            ];            $validate = $this->validate($data, 'Unmarket.service');            if (true !== $validate) {                return json(['code'=>0,'msg'=>$validate]);            }            //读取所属活动            $info = AllwinUnmarket::where(['id' => $data['union_id'],'member_miniapp_id' => $this->member_miniapp_id])->field('id')->find();            if (empty($info)) {                return json(['code'=>0,'msg'=>'活动不存在']);            }            $param = [                'member_miniapp_id' => $this->member_miniapp_id,                'union_id'          => $info->id,                'store_name'        => $data['name'],                'name'              => $data['telname'],                'telphone'          => $data['telphone'],            ];            $result =  AllwinUnmarketBooking::edit($param);            if ($result) {                return json(['code'=>200,'msg'=>'我们客服会在8小时内与你联系']);            } else {                return json(['code'=>0,'msg'=>'提交错误,请重试']);            }        } else {            $this->error('404 Not Found');        }    }}
 |