zhaojs
2023-07-20 8c00bd0245ca4756ca04483a4980ad202714e43e
Merge branch 'release/v1.1.4发布'
已添加6个文件
已修改27个文件
3493 ■■■■■ 文件已修改
application/admin/lang/zh-cn/banner.php 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
application/admin/lang/zh-cn/homemenu.php 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
application/admin/model/Banner.php 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
application/admin/model/Homemenu.php 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
application/api/controller/Activity.php 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
application/api/controller/Taoke.php 212 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
application/api/controller/User.php 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
application/api/logic/ActivityInfo.php 257 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
application/api/logic/UserBrowse.php 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
application/api/logic/commission/Dy.php 161 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
application/api/logic/commission/Jd.php 154 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
application/api/logic/order/DyOrder.php 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
application/api/logic/order/JdOrder.php 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
application/api/logic/taoke/Parser.php 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
application/api/logic/taoke/Search.php 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
application/api/logic/taoke/device/Dataoke.php 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
application/api/logic/taoke/device/Haodanku.php 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
application/api/logic/taoke/device/Jd.php 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
application/api/logic/taoke/device/Pdd.php 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
application/behavior/User.php 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
application/common/library/Auth.php 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
application/common/model/UserExtend.php 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/assets/js/fast.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/html/activity/invite2308.html 595 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/html/bottom_price.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/html/compareprice.html 672 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/html/fengqiangbang.html 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/html/freebuy.html 351 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/html/js/uni-webview-js.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/html/mttran.html 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/html/signin.html 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/html/tb_minishop.html 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/html/zsz_act.html 261 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
application/admin/lang/zh-cn/banner.php
@@ -32,6 +32,7 @@
    'Url_type 12'    => '指定小程序',
    'Url_type 13'    => '聚推客活动转链-小程序',
    'Url_type 14'    => '单页转链接',
    'Url_type 15'    => '淘宝页面',
    'Parameter_json' => '携带参数',
    'Sort'           => '排序',
    'Start_time'     => '开始时间',
application/admin/lang/zh-cn/homemenu.php
@@ -20,6 +20,7 @@
    'Url_type 11'    => '聚推客活动转链-外链',
    'Url_type 12'    => '指定小程序',
    'Url_type 13'    => '聚推客活动转链-小程序',
    'Url_type 15'    => '淘宝页面',
    'Status'         => '状态',
    'Status 0'       => '隐藏',
    'Status 1'       => '正常',
application/admin/model/Banner.php
@@ -54,7 +54,7 @@
    public function getUrlTypeList()
    {
        return ['0' => __('Url_type 0'), '1' => __('Url_type 1'), '2' => __('Url_type 2'), '3' => __('Url_type 3'), '7' => __('Url_type 7'), '11' => __('Url_type 11'), '12' => __('Url_type 12'), '13' => __('Url_type 13'),'14' => __('Url_type 14'),'999' => '不跳转'];
        return ['0' => __('Url_type 0'), '1' => __('Url_type 1'), '2' => __('Url_type 2'), '3' => __('Url_type 3'), '7' => __('Url_type 7'), '11' => __('Url_type 11'), '12' => __('Url_type 12'), '13' => __('Url_type 13'),'14' => __('Url_type 14'),'15' => __('Url_type 15'),'999' => '不跳转'];
    }
    public function getParameterJsonAttr($value, $data)
application/admin/model/Homemenu.php
@@ -57,7 +57,7 @@
    public function getUrlTypeList()
    {
        return ['0' => __('Url_type 0'), '1' => __('Url_type 1'), '2' => __('Url_type 2'), '3' => __('Url_type 3'), '7' => __('Url_type 7'), '11' => __('Url_type 11'), '12' => __('Url_type 12'), '13' => __('Url_type 13'),'14'=>'单页转链接','999'=>'不跳转'];
        return ['0' => __('Url_type 0'), '1' => __('Url_type 1'), '2' => __('Url_type 2'), '3' => __('Url_type 3'), '7' => __('Url_type 7'), '11' => __('Url_type 11'), '12' => __('Url_type 12'), '13' => __('Url_type 13'),'14'=>'单页转链接','15' => __('Url_type 15'),'999'=>'不跳转'];
    }
    public function getStatusList()
application/api/controller/Activity.php
@@ -7,10 +7,12 @@
use app\common\model\FqbCate;
use app\api\logic\taoke\device\Jd as LogicJd;
use app\api\logic\ActivityInfo as ActInfo;
header("Access-Control-Allow-Origin:*");
class Activity extends Api
{
    protected $noNeedLogin = ['fqb_plat_cate'];
    protected $noNeedLogin = ['fqb_plat_cate','run_countRecruitAct','test'];
    protected $noNeedRight = '*';
    /**
     * èŽ·å–ç–¯æŠ¢æ¦œ
@@ -173,4 +175,84 @@
        $this->success('获取成功',$list);
    }
    /**
     * èŽ·å–æ´»åŠ¨ä¿¡æ¯
     *
     */
    public function getActInfo()
    {
        $actid=request()->param('actid');
        if(empty($actid)) $this->error('参数错误');
        $actInfo=new ActInfo();
        $user = $this->auth->getUser();
        $res=$actInfo->getActInfo($actid,$user->id);
        $this->success('获取成功',$res);
    }
    /**
     * å‚加活动
     */
    public function attendAct()
    {
        $actid=request()->param('actid');
        if(empty($actid)) $this->error('参数错误');
        $actInfo=new ActInfo();
        $user = $this->auth->getUser();
        $res=$actInfo->attendAct($actid,$user->id);
        $res?$this->success('成功',$res):  $this->error('活动异常');;
    }
    /**
     * èŽ·å–æ´»åŠ¨å·²é‚€è¯·äººæ•°
     *
     */
    public function getActRecruitCount()
    {
        $actid=request()->param('actid');
        if(empty($actid)) $this->error('参数错误');
        $actInfo=new ActInfo();
        $user = $this->auth->getUser();
        $res=$actInfo->getActRecruitCount($actid,$user->id);
        $this->success('获取成功',$res);
    }
    /**
     * èŽ·å–æŽ’å
     */
    public function getRankingList()
    {
        $actid=request()->param('actid');
        if(empty($actid)) $this->error('参数错误');
        $actInfo=new ActInfo();
        $user = $this->auth->getUser();
        $res=$actInfo->getRankingList($actid,$user->id);
        $this->success('获取成功',$res);
    }
    public function test()
    {
        $actInfo=new ActInfo();
        $res=$actInfo->updateRecruitCount(2);
    }
    /**
     * æ‹›å‹Ÿæ´»åŠ¨è®¡ç®—
     */
    public function run_countRecruitAct()
    {
        $actInfo=new ActInfo();
        $res=$actInfo->run_countRecruitAct();
        $this->success('执行完成',$res);
    }
    /**
     * èŽ·å–é‚€è¯·ç 
     */
    public function getInviteUrl()
    {
        $user = $this->auth->getUser();
        $this->success('获取成功',$user->invitation_code);
    }
}
application/api/controller/Taoke.php
@@ -398,8 +398,9 @@
        if(empty($goods_sign)) $this->error('商品sign不能为空');
        $LogicPdd = new LogicPdd();
        $info = $LogicPdd->getGoodsDetail($goods_sign);
        $ModelUser = new ModelUser();
        $user = $ModelUser->get(USERID);
        $info = $LogicPdd->getGoodsDetail($goods_sign,true,$user['common_relation_id']);
        if($info === false) $this->error($LogicPdd->getError());
@@ -678,12 +679,24 @@
        $page_size = request()->param('pageSize',10);
        if(empty($nineCid)) $this->error('类目id不能为空');
        $plat=request()->param('plat','tb');
        if($plat=='tb'&&empty($nineCid)) $this->error('类目id不能为空');
        $LogicDataoke = new LogicDataoke();
        $list = $LogicDataoke->getOpGoodsList($nineCid,$page,$page_size);
        $list=null;
        switch($plat)
        {
            case 'tb':
                $list = $LogicDataoke->getOpGoodsList($nineCid,$page,$page_size);
                break;
            case 'jd':
                $list = $LogicDataoke->jdNine($page,$page_size);
                break;
            default:
                $list = $LogicDataoke->getOpGoodsList($nineCid,$page,$page_size);
                break;
        }
        if($list === false) $this->error($LogicDataoke->getError());
        $this->success('获取成功',['list'=>$list]);
@@ -1361,10 +1374,10 @@
        $page_size = request()->param('pageSize',100);
        $LogicDataoke = new LogicDataoke();
        $list = $LogicDataoke->getOpGoodsList(1,$page,100,['6','7','11','12','13']);
        $list = $LogicDataoke->getOpGoodsList(1,$page,$page_size,['6','7','11','12','13']);
        //如果不满足40个,则再取一页
        if(count($list)<40){
            $list2 = $LogicDataoke->getOpGoodsList(1,$page+1,100,['6','7','11','12','13']);
            $list2 = $LogicDataoke->getOpGoodsList(1,$page+1,$page_size,['6','7','11','12','13']);
            $list = array_merge($list,$list2);
        }
@@ -1378,4 +1391,187 @@
        $this->success('获取成功',['list'=>$list]);
    }
    /**
     * æŠ–音0元购商品列表
     *
     * @return void
     */
    public function get_first_free_dy_goods(){
        $page = request()->param('page',1);
        $page_size = request()->param('pageSize',40);
        $LogicHaodanku = new LogicHaodanku();
        $list = $LogicHaodanku->getDyOnebyGood($page,$page_size);
        if($list === false) $this->error($LogicHaodanku->getError());
        $this->success('获取成功',['list'=>$list]);
    }
      /**
     * äº¬ä¸œ0元购商品列表
     *
     * @return void
     */
    public function get_first_free_jd_goods()
    {
        $page = request()->param('page',1);
        $page_size = request()->param('pageSize',40);
        $LogicJd = new LogicJd();
        $list = $LogicJd->getNineSift($page,$page_size);
        $this->success('获取成功',['list'=>$list]);
    }
    /**
     * çŒœä½ å–œæ¬¢
     *
     * @return void
     */
    public function gussess_like_goods()
    {
        $platefrom = request()->param('platefrom','');
        $page = request()->param('pageId',1);
        $page_size = request()->param('pageSize',10);
        $cids= request()->param('cids','');
        $user = $this->auth->getUser();
        $common_relation_id = $user['common_relation_id'];
        $list = [];
        if($page<3&&!empty($cids)){
            switch($platefrom){
                case 'tb': //淘宝联盟
                    $LogicDataoke = new LogicDataoke();
                    $list = $LogicDataoke->getGoodsList($cids,'',0,$page,$page_size,1,0);
                    break;
                case 'jd': //京东
                    $LogicJd = new LogicJd();
                    //将以逗号分隔cids字符串转成数组
                    $cids = explode(',',$cids);
                    $new_page=1;
                    while(count($list)<20){
                        foreach($cids as $key=>$value){
                            $jd_id_list = $LogicJd->search_cid_Goods('','desc','','','inOrderCount30Days',$new_page,5,$cids[$key]);
                            //将多个jd_id_list数组合并成一个数组
                            $list = array_merge($list,$jd_id_list);
                        }
                        $new_page=$new_page+1;
                    }
                    //如果page=1,则取$list数组的前10个
                    if($page==1){
                        $list= array_slice($list, 0, 10);
                    }
                    log::write('猜你喜欢日志调试:'.count($list));
                    //如果page=2,则取$list数组的第11个到第20个
                    if($page==2){
                        $list= array_slice($list, 10, 10);
                    }
                    break;
                case 'pdd': //拼多多
                    $LogicPdd = new LogicPdd();
                    //将以逗号分隔cids字符串转成数组
                    $cids = explode(',',$cids);
                    $new_page=1;
                    while(count($list)<20){
                        foreach($cids as $key=>$value){
                            $jd_id_list = $LogicPdd->searchGoods('','',$common_relation_id,'',1,10,0,$cids[$key]);
                            //将多个jd_id_list数组合并成一个数组
                            $list = array_merge($list,array_slice($jd_id_list, 0, 5));
                        }
                        $new_page=$new_page+1;
                    }
                    //如果page=1,则取$list数组的前10个
                    if($page==1){
                        $list= array_slice($list, 0, 10);
                    }
                    //如果page=2,则取$list数组的第11个到第20个
                    if($page==2){
                        $list= array_slice($list, 10, 10);
                    }
                    break;
                case'dy'://抖音
                    $LogicHaodanku = new LogicHaodanku();
                     //将以逗号分隔cids字符串转成数组
                     $cids = explode(',',$cids);
                     $new_page=1;
                     while(count($list)<20){
                         foreach($cids as $key=>$value){
                             $jd_id_list = $LogicHaodanku->getDygoodsList($cids[$key],'',0,1,5);
                             //将多个jd_id_list数组合并成一个数组
                             $list = array_merge($list,$jd_id_list);
                         }
                         $new_page=$new_page+1;
                     }
                     //如果page=1,则取$list数组的前10个
                     if($page==1){
                         $list= array_slice($list, 0, 10);
                     }
                     //如果page=2,则取$list数组的第11个到第20个
                     if($page==2){
                         $list= array_slice($list, 10, 10);
                     }
                     break;
            }
        }
        else{
            if(empty($platefrom)){
                $platefrom='tb';
            }
            else{
                $page=$page-2;
            }
            switch($platefrom){
                case "tb": //淘宝联盟
                    $LogicTaobaolianmeng = new LogicTaobaolianmeng();
                    $list = $LogicTaobaolianmeng->material('6708','','',$page,$page_size);
                break;
                case "jd": //京东
                    $LogicJd = new LogicJd();
                    $list = $LogicJd->getTodayTop('discountReal',$page,$page_size);
                break;
                case "pdd": //拼多多
                    $LogicPdd = new LogicPdd();
                    $list = $LogicPdd->dailyExplosion('','[7,10851]',4,$page,$page_size);
                    $list = isset($list['list']) ? $list['list'] : [];
                break;
                case "wph": //唯品会
                    $LogicDingdanxia = new LogicDingdanxia();
                    $list = $LogicDingdanxia->wphGoodsList('',1,$page,$page_size,0);
                break;
                 case "dy": //抖音
                     $LogicHaodanku = new LogicHaodanku();
                    $list = $LogicHaodanku->getDygoodsList('','','',$page,$page_size);
                break;
            }
        }
        $this->success('获取成功',['list'=>$list]);
    }
      /**
     * å•†å“æ¯”ä»·
     *
     * @return void
     */
    public function compare_good(){
        $content = request()->param('content','');
        if (empty($content)) $this->error('内容不能为空');
        $exclude_tb = request()->param('exclude_tb',0);
        $exclude_jd = request()->param('exclude_jd',0);
        $exclude_pdd = request()->param('exclude_pdd',0);
        $exclude_dy = request()->param('exclude_dy',0);
        $content = request()->param('content','');
        $content = request()->param('content','');
        $LogicSearch = new LogicSearch();
        $user = $this->auth->getUser();
        $common_relation_id = $user['common_relation_id'];
        $info = $LogicSearch->compare_good($content,$common_relation_id,$exclude_tb,$exclude_jd,$exclude_pdd,$exclude_dy);
        $this->success('获取成功',['list'=>$info]);
    }
}
application/api/controller/User.php
@@ -19,6 +19,9 @@
use app\api\logic\SettlementRecord as LogicSettlementRecord;
use app\api\logic\UserMoneyLog as LogicUserMoneyLog;
use think\log;
use app\api\logic\ActivityInfo as InfoActivityInfo;
use app\common\model\UserExtend as ModelUserExtend;
use think\Db;
/**
 * ä¼šå‘˜æŽ¥å£
@@ -49,6 +52,20 @@
        $userInfo['token'] = $this->auth->getToken();
        $data = ['userinfo' => $userInfo];
        $this->success('获取成功', $data);
    }
    /**
     * æ›´æ–°appclientid
     */
    public function UpdateClientId()
    {
        $pushCid=$this->request->post('pushcid');
        $ModelUser = new ModelUser();
        $userInfo = $ModelUser->where(['id'=>USERID]);
        if(empty($userInfo)) $this->success('成功',true);
        $userInfo->update(['push_cid'=>$pushCid]);
        $this->success('成功', true);
    }
    /**
@@ -86,7 +103,7 @@
        $mobile = $this->request->post('mobile');
        $captcha = $this->request->post('captcha');
        $ismobouth=$this->request->post('ismobouth',false);
        $push_cid=$this->request->post('push_cid',false);
        $pushCid=$this->request->post('pushCid',false);
        if (!$mobile || !$captcha) {
            $this->error(__('Invalid parameters'));
        }
@@ -104,7 +121,7 @@
            //如果已经有账号则直接登录
            $ret = $this->auth->direct($user->id);
        } else {
            $ret = $this->auth->register($mobile, Random::alnum(), '', $mobile, []);
            $ret = $this->auth->register($mobile, Random::alnum(), '', $mobile, [],'',[],$pushCid);
        }
        if ($ret) {
            Sms::flush($mobile, 'login');
@@ -282,6 +299,7 @@
    public function bind_mobile_login()
    {
        $wxUser = request()->param('wxUser','','urldecode');
        $pushCid= request()->param('pushCid','');
        $wxUser = json_decode($wxUser,true);
        if(empty($wxUser)) $this->error('微信授权信息获取失败');
        $mobile = $this->request->post('mobile');
@@ -308,11 +326,11 @@
        $is_phone_bind = $ModelUser->where(['mobile'=> $mobile])->find();
        if(!empty($is_phone_bind)){
            $LogicUser->bindWechat($is_phone_bind['id'],$wxUser['headimgurl'],$wxUser['sex'],$wxUser['nickname'],$wxUser['openid']);
            $ret = $this->auth->direct($is_phone_bind['id']);
            $ret = $this->auth->direct($is_phone_bind['id'],$pushCid);
        }else{ //判断微信是否已经绑定
            $find_third = $ModelThird->where(['openid'=>$wxUser['openid']])->find();
            if(!empty($find_third)) $this->error('当前微信号已绑定其他账号');
            $ret = $this->auth->register('', Random::alnum(), '', $mobile, [],'wechat',$wxUser);
            $ret = $this->auth->register('', Random::alnum(), '', $mobile, [],'wechat',$wxUser,$pushCid);
        }
        Sms::flush($mobile, 'changemobile');
        if ($ret) {
@@ -451,9 +469,11 @@
        $new_goodsId = request()->param('new_goodsId','');
        $plateform= request()->param('plateform','');
        $LogicUserBrowse = new LogicUserBrowse();
        $res = $LogicUserBrowse->updatefirstfreelog(USERID,$ids,$new_goodsId);
        $res = $LogicUserBrowse->updatefirstfreelog(USERID,$ids,$new_goodsId,$plateform);
        if($res === false) $this->error($LogicUserBrowse->getError());
@@ -674,6 +694,7 @@
    public function bind_invitation()
    {
        $invite_code = request()->param('invite_code','');
        $deviceid=request()->param('deviceid','');
        if(empty($invite_code)) $this->error('邀请码不能为空');
        $is_official = false;
        $isOpenOfficialCode = config('site.isOpenOfficialCode');
@@ -694,6 +715,13 @@
            if($f_user['status'] != 'normal')$this->error('邀请人帐号已被锁定,暂时无法邀请');
            if($user['invitation_id'] != 0)$this->error('当前已绑定上级用户');
            $save_data['invitation_id'] = $f_user['id'];
            if(!empty($deviceid))
            {//设备id
                $save_data['login_deviceid'] = $deviceid;
            }
            else{
                $save_data['login_deviceid'] = 'cus'.self::guid();
            }
            if($f_user['invitation_id'] != 0)$save_data['f_invitation_id'] = $f_user['invitation_id'];
            $res2 = $ModelUser->where(['id'=>$f_user['id']])->setInc('fans',1);
            if(!$res2){
@@ -707,7 +735,31 @@
            $this->error('绑定失败');
        } 
        $ModelUser->commit();
        //更新招募活动信息
        $activityInfo=new InfoActivityInfo();
        $activityInfo->updateRecruitCount($save_data['invitation_id'] );
        $this->success('绑定成功',[]);    
    }
   public function guid()
    {
        if (function_exists('com_create_guid')) {
            return com_create_guid();
        } else {
            mt_srand((double)microtime() * 10000);
            $charid = strtoupper(md5(uniqid(rand(), true)));
            $uuid = substr($charid, 0, 8)
                . substr($charid, 8, 4)
                . substr($charid, 12, 4)
                . substr($charid, 16, 4)
                . substr($charid, 20, 12);
            return $uuid;
        }
    }
    /**
@@ -1029,4 +1081,20 @@
        $this->success('获取成功',$user);     
    }
    /**
     * æ£€æµ‹æ˜¯å¦æœ‰åå¥½å•†å“
     *
     * @return void
     */
    public function check_preference_goods()
    {
        //获取当前登录人用户信息
        $user = $this->auth->getUser();
        $ModelUserExtend=new ModelUserExtend();
        $preference_goods=$ModelUserExtend->where(['id'=>$user['id']])->field('p_cids,p_platefrom')->find();
        if(empty($preference_goods)||empty($preference_goods['p_cids'])) $this->error('暂无偏好商品');
        $this->success('获取成功',$preference_goods);
    }
}
application/api/logic/ActivityInfo.php
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,257 @@
<?php
namespace app\api\logic;
use app\common\logic\Basic as BasicLogic;
use think\console\output\descriptor\Console;
use think\Db;
use app\common\model\User as ModelUser;
use app\api\logic\SettlementRecord as LogicSettlementRecord;
class ActivityInfo extends BasicLogic
{
    /**
     * èŽ·å–æ´»åŠ¨ä¿¡æ¯
     */
    public function getActInfo($actid,$userid)
    {
        $res=Db::query('SELECT * FROM t_activity_manage WHERE id=?',[$actid]);
        $response=[
                'actstatus'=>1,
                'joinstatus'=>0
            ];
        if(empty($res)){
            $response['actstatus']=0;//不存在
            return $response;
        }
        if($res[0]['act_status']==0)
        {
            $response['actstatus']=-1;//已结束
            return $response;
        }
        if(time()<strtotime($res[0]['start_time']))
        {
            $response['actstatus']= -2;//未开始
            return $response;
        }
        if(time()>strtotime($res[0]['end_time']))
        {
            $response['actstatus']= -3;//已结束
            return $response;
        }
        //是否已参加活动
        $recruitid=$actid.'u'.$userid;
        $canjia=Db::query('select id from t_recruit_act where id=?',[$recruitid]);
        if(empty($canjia))
        {
            $response['joinstatus']=0;//未参加
        }
        else{
            $response['joinstatus']=1;//已参加
        }
        return $response;
    }
    /**
     * å‚加活动
     *
     */
    public function attendAct($actid,$userid)
    {
        //查询活动是否存在
        $res=Db::query('SELECT * FROM t_activity_manage WHERE id=?',[$actid]);
        if(empty($res)){
           return false;
        }
        if($res[0]['act_status']==0||time()>strtotime($res[0]['end_time'])||time()<strtotime($res[0]['start_time']))
        {
            return false;
        }
        //插入活动表
        $recruitid=$actid.'u'.$userid;
        $inser=Db::execute('insert ignore into t_recruit_act (id,user_id,act_id,create_time) values(?,?,?,?)',[$recruitid,$userid,$actid,time()]);
        return true;
    }
    /**
     * æ›´æ–°èŽ·å–å·²é‚€è¯·äººæ•°
     */
    public function updateRecruitCount($userid)
    {
        try{
             //查询进行中的招募活动
            $nowTime= date("Y-m-d H:i:s",  time());
            $actList=Db::query('select id,end_time from t_activity_manage where act_status=1 and start_time<=? and end_time>=? and act_type=0 limit 1',[$nowTime,$nowTime]);
            if(empty($actList))
            {//没有进行中的活动,不用处理
                return true;
            }
            //查询是否参加了招募活动
            $recruitid=$actList[0]['id'].'u'.$userid;
            $actReinfo=Db::query('select id,create_time from t_recruit_act where id=? and user_t=0 and settlement_status=0',[$recruitid]);
            if(empty($actReinfo))
            {//没有参加活动,不用处理
                return true;
            }
            //获取已邀请人数
            $actEndTime=strtotime($actList[0]['end_time']);//活动结束时间
            $yqCount=Db::query('select count(DISTINCT(login_deviceid)) as count from t_user where invitation_id=? and status=? and invite_bind_time>=? and invite_bind_time<=?',[$userid,'normal',$actReinfo[0]['create_time'],$actEndTime]);
           $count=0;
           if(!empty($yqCount))
           {
            $count=$yqCount[0]['count'];
           }
            //增加count
            $countres=Db::execute('update t_recruit_act set recruit_count=? where id=?',[$count,$recruitid]);
            return $countres==1;
        }
        catch(\Exception $e)
        {
        }
    }
    /**
     * èŽ·å–å·²é‚€è¯·äººæ•°
     */
    public function getActRecruitCount($actid,$userid)
    {
        $recruitid=$actid.'u'.$userid;
        $count=Db::query('select recruit_count from t_recruit_act where id=?',[$recruitid]);
        if(empty($count))
        {
            return [
                'membercount'=>0,
                'award'=>0
            ];
        }
        //获取金额信息
        $actList=Db::query('select * from t_activity_manage where id=? and count_status=0 and act_type=0 and act_status=1',[$actid]);
        $rewardRule=json_decode($actList[0]['act_json']);
        $award=$this->stepAllRule($rewardRule->rule,$count[0]['recruit_count']);
        return [
            'membercount'=>$count[0]['recruit_count'],
            'award'=>$award
        ];
    }
    /**
     * èŽ·å–æŽ’å
     */
    public function getRankingList($actid,$userid)
    {
        $rList=Db::query('SELECT a.id,a.nickname,a.avatar,b.recruit_count from t_recruit_act b left join t_user a on a.id =b.user_id where b.act_id=? and b.recruit_count>0 order by b.recruit_count desc limit 7',[$actid]);
        if(empty($rList))
        {
            return [];
        }
        return $rList;
    }
    /**
     * è®¡ç®—招募活动金额
     *
     */
    public function run_countRecruitAct()
    {
        //先查询招募活动
        $actList=Db::query('select * from t_activity_manage where count_status=0 and act_type=0 and act_status=1');
        if(empty($actList))
        {
            return '没有符合的活动';
        }
        foreach($actList as $act)
        {//循环活动,计算金额
            //修改活动计算状态
           $this->run_UpdateActCount($act['id'],1);
            $actEndTime=strtotime($act['end_time']);//活动结束时间
            //查询所有参与活动的会员
            $cusList=Db::query('select * from t_recruit_act where act_id=? and settlement_status=0 and user_t=0',[$act['id']]);
            if(empty($cusList))
            {
                $this->run_UpdateActCount($act['id'],2);
                continue;
            }
            //活动规则
            $rewardRule=json_decode($act['act_json']);
            foreach($cusList as $cus)
            {//循环参与活动的会员
                $tradeId=$act['id'].'u'.$cus['user_id'];
                $yqCount=Db::query('select count(DISTINCT(login_deviceid)) as count from t_user where invitation_id=? and status=? and invite_bind_time>=? and invite_bind_time<=?',[$cus['user_id'],'normal',$cus['create_time'],$actEndTime]);
                if(empty($yqCount))
                {
                    Db::execute('update t_recruit_act set settlement_status=?,settlement_time=?,act_count=0,act_award=0 where id=?',[1, date("Y-m-d H:i:s",  time()),$tradeId]);
                    continue;
                }
                //计算应得金额
                $price=0;
                switch($rewardRule->act_type)
                {
                    case 'step_all'://阶梯完成后赠送
                        $price=$this->stepAllRule($rewardRule->rule,$yqCount[0]['count']);
                        break;
                    default:
                        break;
                }
                if($price<=0)
                {
                    Db::execute('update t_recruit_act set settlement_status=?,settlement_time=?,act_count=?,act_award=0 where id=?',[1, date("Y-m-d H:i:s",  time()),$yqCount[0]['count'],$tradeId]);
                    continue;
                }
                //插入聚推客的订单
                $tradeHas=Db::query('select id from t_jtk_union_order_commission where trade_parent_id=?',[$tradeId]);
                if(!empty($tradeHas))
                {//已经有订单
                    continue;
                }
                //计算订单收益
                $title = $act['act_name'].'-活动奖励结算';
                ModelUser::money('inc',$price,$cus['user_id'],$title);
                LogicSettlementRecord::writeLog('jtk',$price,$cus['user_id'],$title);
                $tradeRes=Db::execute('insert into t_jtk_union_order_commission (trade_parent_id,trade_id,member_id,buy_member_id,is_own,alipay_total_price,pub_share_pre_fee,item_title,item_id,is_settle,tb_paid_time,create_time,update_time,tk_status,tk_earning_time,pub_share_fee)values(?,?,?,?,1,?,?,?,?,?,?,?,?,?,?,?)',[$tradeId,$tradeId,$cus['user_id'],$cus['user_id'],$price,$price,$act['act_name'].'-活动奖励',$act['id'],1,date("Y-m-d H:i:s",  time()),time(),time(),3,time(),$price]);
                if($tradeRes==1)
                {//修改计算状态
                    Db::execute('update t_recruit_act set settlement_status=?,settlement_time=?,act_count=?,act_award=? where id=?',[1, date("Y-m-d H:i:s",  time()),$yqCount[0]['count'],$price,$tradeId]);
                }
            }
            $this->run_UpdateActCount($act['id'],2);
        }
        return '执行-success';
    }
    public function run_UpdateActCount($actid,$countStatus)
    {
        if($countStatus==1)
        {
            Db::execute('update t_activity_manage set count_status=? where id=?',[$countStatus,$actid]);
        }
        else{
            Db::execute('update t_activity_manage set count_status=?,count_time=? where id=?',[$countStatus,time(),$actid]);
        }
    }
    /**
     * step_all规则
     *
     */
    public function stepAllRule($rule,$yqCount)
    {
        $maxReward=0;
        foreach($rule as $r_item)
        {
            if($r_item->c_count>$yqCount)
            {
                continue;
            }
            if($maxReward<$r_item->reward)
            {
                $maxReward=$r_item->reward;
            }
        }
        return $maxReward;
    }
}
application/api/logic/UserBrowse.php
@@ -80,7 +80,7 @@
     * @param [type] $ids
     * @return void
     */
    public function updatefirstfreelog($user_id,$ids,$new_goodsId)
    public function updatefirstfreelog($user_id,$ids,$new_goodsId,$plateform)
    {
        if(empty($ids)||empty($new_goodsId)){
            fault('宝贝ID不能为空');
@@ -91,7 +91,7 @@
        if(!empty($res)){
             return true;
        }
        $res=Db::execute('INSERT INTO t_user_first_free_browse(user_id,goodsId,new_goodsId) VALUES (?,?,?)',[$user_id,$ids,$new_goodsId]);
        $res=Db::execute('INSERT INTO t_user_first_free_browse(user_id,goodsId,new_goodsId,plateform) VALUES (?,?,?,?)',[$user_id,$ids,$new_goodsId,$plateform]);
        return true;
application/api/logic/commission/Dy.php
@@ -62,6 +62,69 @@
    }
    /**
     * è¿”利入库和更新(新),加上首单逻辑
     *
     * @return void
     */
    public function fanliCommissionNew($order)
    {
        $trade_id = isset($order['trade_id']) ? $order['trade_id'] : '';
        if(empty($trade_id)) return ['status'=>false,'info'=>'订单号为空'];
        //判断是实付金额是否大于4元,大于4元直接普通返利
        if(floatval($order['pay_price'])>4){
            $res=self::fanliCommission($order);
            return $res;
        }
        //根据淘宝绑定渠道id查询用户信息
        $ModelUser = new ModelUser();
        $user = $ModelUser->where(['common_relation_id'=>$order['channel_code']])->find();
        if(!empty($user))
        {
            $browse=DB::name('user_first_free_browse')->where(['user_id'=>$user['id'],'is_order'=>1])->find();
            if(!empty($browse)){
                //查询是否是首单商品
            $first_browse=DB::name('user_first_free_browse')->where(['user_id'=>$user['id'],'tid'=>$order['trade_id']])->find();
            if(!empty('first_browse')){
                //计算首单返利
                $res=self::fanliCommissionForFree($order);
                return $res;
            }
            else{
                $res=self::fanliCommission($order);
                return $res;
            }
            }
            else{
                $itemid=$order['product_id'];
                $first_good=DB::name('user_first_free_browse')->where(['user_id'=>$user['id'],'is_order'=>0,'new_goodsId'=>$itemid])->find();
                if(empty($first_good)){
                    dump('没进入首单返利');
                    $res=self::fanliCommission($order);
                    return $res;
                }
                else{
                    //计算首单返利
                    dump('进入首单返利');
                    $res=self::fanliCommissionForFree($order);
                    return $res;
                }
            }
        }
        else{
            //标记订单为无需分销
            $ModelOrder = new ModelTaobaoOrder();
            $ModelOrder->where(['id'=>$order['id']])->update(['is_distribution'=>2,'update_time'=>time()]);
            Db::commit();
            return ['status'=>true,'info'=>'无需分销'];
        }
    }
    /**
     * è¿”利入库和更新
@@ -250,5 +313,103 @@
        return ['status'=>true,'info'=>'拆分成功'];
    }
     /**
     * é¦–单返利入库和更新
     *
     * @return void
     */
    public function fanliCommissionForFree($order)
    {
        $trade_id = isset($order['trade_id']) ? $order['trade_id'] : '';
        if(empty($trade_id)) return ['status'=>false,'info'=>'订单号为空'];
        Db::startTrans();
        $ModelUser = new ModelUser();
        $user = $ModelUser->where(['common_relation_id'=>$order['channel_code']])->find();
        $ModelOrder = new ModelDyOrder();
        if(empty($user)){
            //标记订单为无需分销
            $ModelOrder->where(['id'=>$order['id']])->update(['is_distribution'=>2,'tk_z_status'=>1,'change_time'=>time()]);
            Db::commit();
            return ['status'=>true,'info'=>'无需分销'];
        }
        $userLevelInfo = $this->getLevelInfo($user['level']); //用户等级信息
        $find_commission = $this->model->where(['trade_id'=>$trade_id])->select();
        $push_data = [];
        if(empty($find_commission)){ //开始反佣入库
            //自购反佣
            $tmp_1 = [
                'trade_parent_id' => $order['trade_parent_id'],
                'trade_id' => $trade_id,
                'member_id' => $user['id'],
                'buy_member_id' => $user['id'],
                'is_own' => 1,
                'alipay_total_price' => $order['pay_price'],
                'pub_share_pre_fee' => empty($order['pay_price']) ? "" : $order['pay_price'],
                'refund_tag' => 0,
                'item_img' => $order['item_img'],
                'item_title' => $order['item_title'],
                'tk_status' => $order['order_status'],
                'item_id' => $order['product_id'],
                'member_commission_rate' => $userLevelInfo['own_commission_rate'],
                'is_settle' => 0,
                'tb_paid_time' => empty($order['paid_time']) ? "" : (date("Y-m-d H:i:s",$order['paid_time'])),
                'tk_earning_time' =>empty($order['earning_time']) ? "" : $order['earning_time'],
                'create_time' => time()
            ];
            if($order['settled_status'] == '1'){
                $tmp_1['pub_share_fee'] = $order['pay_price'];
                $tmp_1['pay_price'] = $order['pay_price'];
                // $push_data[] = [
                //     'user' => $user,
                //     'title' => '恭喜,您有一笔新的订单收益',
                //     'body' => "您有一笔新的自购订单收益,佣金" + $tmp_1['pub_share_fee'] + "元,继续加油哦",
                // ];
            }
            $save_data[] = $tmp_1;
            $result = $this->model->saveAll($save_data);
            if(!$result){
                Db::rollback();
                return ['status'=>false,'info'=>'反佣入库失败'];
            }
            if($order['is_distribution'] == 0){
                $res_order = $ModelOrder->where(['id'=>$order['id']])->update(['is_distribution'=>1,'change_time'=>time()]);
                if(!$res_order){
                    Db::rollback();
                    return ['status'=>false,'info'=>'订单状态修改失败'];
                }
            }
            // if(!empty($push_data)){
            //     $this->userPush($push_data);
            // }
        }else{ //已经拆分订单,进行更新
            foreach($find_commission as $item){
                $item_data = [
                    'alipay_total_price' => $order['pay_price'],
                    'pub_share_pre_fee' => empty($order['pay_price']) ? "" : $order['pay_price'],
                    'pub_share_fee' => $order['settled_status'] == '1' ? $order['pay_price'] : "",
                    'refund_tag' => 0,
                    'tk_status' => $order['order_status'],
                    'pay_price' => $order['settled_status'] == '1' ? $order['pay_price'] : $item['pay_price'],
                    'tk_earning_time' => empty($order['earning_time']) ? "" : $order['earning_time'],
                    'update_time' => time()
                ];
                $update_commission = $this->model->where(['id'=>$item['id']])->update($item_data);
                if(!$update_commission){
                    Db::rollback();
                    return ['status'=>false,'info'=>'更新拆分记录错误,ID为:'.$item['id']];
                }
            }
            //更新订单
            $update_order = $ModelOrder->where(['id'=>$order['id']])->update(['tk_z_status'=>1,'update_time'=>time()]);
            if(!$update_order){
                Db::rollback();
                return ['status'=>false,'info'=>'更新订单tk_z_status错误,订单ID为:'.$order['id']];
            }
        }
        Db::name('user_first_free_browse')->where(['user_id'=>$user['id'],'new_goodsId'=>$order['product_id']])->update(['tid'=>$trade_id,'is_order'=>1]);
        Db::commit();
        return ['status'=>true,'info'=>'拆分成功'];
    }
application/api/logic/commission/Jd.php
@@ -61,6 +61,67 @@
    }
     /**
     * è¿”利入库和更新(新),加上首单逻辑
     *
     * @return void
     */
    public function fanliCommissionNew($order)
    {
        $trade_id = isset($order['order_row_id']) ? $order['order_row_id'] : '';
        if(empty($trade_id)) return ['status'=>false,'info'=>'订单号为空'];
        //判断是实付金额是否大于4元,大于4元直接普通返利
        if(floatval($order['estimate_cos_price'])>5){
            $res=self::fanliCommission($order);
            return $res;
        }
        //根据淘宝绑定渠道id查询用户信息
        $ModelUser = new ModelUser();
        $user = $ModelUser->where(['common_relation_id'=>$order['position_id']])->find();
        if(!empty($user))
        {
            $browse=DB::name('user_first_free_browse')->where(['user_id'=>$user['id'],'is_order'=>1])->find();
            if(!empty($browse)){
                //查询是否是首单商品
            $first_browse=DB::name('user_first_free_browse')->where(['user_id'=>$user['id'],'tid'=>$order['order_row_id']])->find();
            if(!empty('first_browse')){
                //计算首单返利
                $res=self::fanliCommissionForFree($order);
                return $res;
            }
            else{
                $res=self::fanliCommission($order);
                return $res;
            }
            }
            else{
                $itemid=$order['sku_id'];
                $first_good=DB::name('user_first_free_browse')->where(['user_id'=>$user['id'],'is_order'=>0,'new_goodsId'=>$itemid])->find();
                if(empty($first_good)){
                    $res=self::fanliCommission($order);
                    return $res;
                }
                else{
                    //计算首单返利
                    $res=self::fanliCommissionForFree($order);
                    return $res;
                }
            }
        }
        else{
            //标记订单为无需分销
            $ModelOrder = new ModelTaobaoOrder();
            $ModelOrder->where(['id'=>$order['id']])->update(['is_distribution'=>2,'update_time'=>time()]);
            Db::commit();
            return ['status'=>true,'info'=>'无需分销'];
        }
    }
    /**
     * è¿”利入库和更新
@@ -249,5 +310,98 @@
        return ['status'=>true,'info'=>'拆分成功'];
    }
    /**
     * é¦–单返利入库和更新
     *
     * @return void
     */
    public function fanliCommissionForFree($order)
    {
        $trade_id = isset($order['order_row_id']) ? $order['order_row_id'] : '';
        if(empty($trade_id)) return ['status'=>false,'info'=>'订单号为空'];
        Db::startTrans();
        $ModelUser = new ModelUser();
        $user = $ModelUser->where(['common_relation_id'=>$order['position_id']])->find();
        $ModelOrder = new ModelJdOrder();
        if(empty($user)){
            //标记订单为无需分销
            $ModelOrder->where(['id'=>$order['id']])->update(['is_distribution'=>2,'update_time'=>time()]);
            Db::commit();
            return ['status'=>true,'info'=>'无需分销'];
        }
        $userLevelInfo = $this->getLevelInfo($user['level']); //用户等级信息
        $find_commission = $this->model->where(['trade_id'=>$trade_id])->select();
        $push_data = [];
        if(empty($find_commission)){ //开始反佣入库
            //自购反佣
            $tmp_1 = [
                'trade_parent_id' => $order['order_id'],
                'trade_id' => $trade_id,
                'member_id' => $user['id'],
                'buy_member_id' => $user['id'],
                'is_own' => 1,
                'alipay_total_price' => $order['estimate_cos_price'],
                'pub_share_pre_fee' => $order['estimate_cos_price'],
                'pub_share_fee' => $order['valid_code'] == 17 ? $order['estimate_cos_price']: "",
                'refund_tag' => 0,
                'item_img' => $order['image_url'],
                'item_title' => $order['sku_name'],
                'tk_status' => $order['valid_code'],
                'item_id' => $order['sku_id'],
                'member_commission_rate' => 100,
                'is_settle' => 0,
                'tb_paid_time' => $order['order_time'],
                'pay_price' => $order['actual_cos_price'],
                'tk_earning_time' =>!empty($order['finish_time']) ? strtotime($order['finish_time']) : 0,
                'pay_month' => $order['pay_month'],
                'create_time' => time()
            ];
            $save_data[] = $tmp_1;
            $result = $this->model->saveAll($save_data);
            if(!$result){
                Db::rollback();
                return ['status'=>false,'info'=>'反佣入库失败'];
            }
            if($order['is_distribution'] == 0){
                $res_order = $ModelOrder->where(['id'=>$order['id']])->update(['is_distribution'=>1,'update_time'=>time()]);
                if(!$res_order){
                    Db::rollback();
                    return ['status'=>false,'info'=>'订单状态修改失败'];
                }
            }
            // if(!empty($push_data)){
            //     $this->userPush($push_data);
            // }
        }else{ //已经拆分订单,进行更新
            foreach($find_commission as $item){
                $item_data = [
                    'alipay_total_price' => $order['estimate_cos_price'],
                    'pub_share_pre_fee' => $order['estimate_cos_price'],
                    'pub_share_fee' => $order['valid_code'] == 17 ? $order['estimate_cos_price']: $item['pub_share_fee'],
                    'refund_tag' => 0,
                    'tk_status' => $order['valid_code'],
                    'pay_price' => $order['actual_cos_price'],
                    'tk_earning_time' =>!empty($order['finish_time']) ? strtotime($order['finish_time']) : 0,
                    'pay_month' => $order['pay_month'],
                    'update_time' => time()
                ];
                $update_commission = $this->model->where(['id'=>$item['id']])->update($item_data);
                if(!$update_commission){
                    Db::rollback();
                    return ['status'=>false,'info'=>'更新拆分记录错误,ID为:'.$item['id']];
                }
            }
            //更新订单
            $update_order = $ModelOrder->where(['id'=>$order['id']])->update(['tk_z_status'=>1,'update_time'=>time()]);
            if(!$update_order){
                Db::rollback();
                return ['status'=>false,'info'=>'更新订单tk_z_status错误,订单ID为:'.$order['id']];
            }
        }
        Db::name('user_first_free_browse')->where(['user_id'=>$user['id'],'new_goodsId'=>$order['sku_id']])->update(['tid'=>$trade_id,'is_order'=>1]);
        Db::commit();
        return ['status'=>true,'info'=>'拆分成功'];
    }
application/api/logic/order/DyOrder.php
@@ -87,8 +87,9 @@
        $list = $this->model->where(['is_distribution'=>0,'channel_code'=>['neq',''],'channel_code'=>['neq',0]])->whereOr("is_distribution = 1 And tk_z_status = 2 And channel_code !=''")->limit(20)->order('id desc')->select();
        if(!empty($list)){
            $LogicDyCommission = new LogicDyCommission();
            foreach($list as $order){
                $result = $LogicDyCommission->fanliCommission($order);
            foreach($list as $order){
                $result = $LogicDyCommission->fanliCommissionNew($order);
               // $result = $LogicDyCommission->fanliCommission($order);
                if(!$result){
                    mylog('订单拆分错误',$result['info'],"errorInfo");
                }
application/api/logic/order/JdOrder.php
@@ -114,7 +114,8 @@
        if(!empty($list)){
            $LogicJdCommission = new LogicJdCommission();
            foreach($list as $order){
                $result = $LogicJdCommission->fanliCommission($order);
               // $result = $LogicJdCommission->fanliCommission($order);
               $result = $LogicJdCommission->fanliCommissionNew($order);
                if(!$result){
                    mylog('订单拆分错误',$result['info'],"errorInfo");
                }
application/api/logic/taoke/Parser.php
@@ -7,7 +7,7 @@
use app\api\logic\UserCollect;
use app\api\logic\User as LogicUser;
use app\common\model\UserLevel as ModelUserLevel;
use \app\common\model\UserExtend as ModelUserExtend;
class Parser extends BasicLogic
{
    //TODO æ£€æŸ¥æ‰€æœ‰æŽ¥å£æ˜¯ä¸æ˜¯æœ‰è°ƒæ•´çš„,需要传代理的相应字段
@@ -26,6 +26,10 @@
    protected static $topLevelName = ""; //顶级等级名称
    protected static $buyCount=-1;//购买次数
    protected static $returnLimit=1;//佣金全返的购买次数限制
    public function __construct(){
        $level = 1;
@@ -42,6 +46,17 @@
        self::$userRate = $leveInfo['own_commission_rate'] * 0.01;
        $topLevelInfo = $ModelUserLevel->where(['level'=>3])->find();
        if(empty($topLevelInfo)) fault('代理配置失败');
        //获取购买次数
       /*  $ModelUserExtend=new ModelUserExtend();
        $userBuy= $ModelUserExtend->where(['id'=>USERID])->find();
        if(!empty($userBuy))
        {
            self::$buyCount=$userBuy['tradecount'];
        }
        if(self::$buyCount>=0&&self::$buyCount<self::$returnLimit)
        {//符合全返规则
            self::$userRate =1;
        } */
        self::$topFanliRate = $topLevelInfo['own_commission_rate'] * 0.01;
        self::$topLevelName = $topLevelInfo['level_name'];
    }
@@ -80,6 +95,7 @@
            'url_type' => "3",          //商品详情,
            'isCollect' => 0,            //是否收藏
            'topLevelName' => self::$topLevelName,  //顶级等级名称
            'predictPromotionRate'=>0,//比价行为预判定佣金,需要用户备案-拼多多专用
        ];
    }
@@ -183,8 +199,8 @@
    /**
     * è®¡ç®—商品展示返利金额
     *
     * @param [type] $price
     * @param [type] $commissionRate
     * @param [type] $price åˆ¸åŽä»·
     * @param [type] $commissionRate åˆ†ä½£æ¯”例
     * @return void
     */
    public static function rebate($price,$commissionRate,$otherRate = "")
application/api/logic/taoke/Search.php
@@ -123,7 +123,7 @@
                    $user = $ModelUser->get(USERID);
                    $info = $LogicPdd->universal($user['common_relation_id'],$uri);
                    if($info){
                        $goods = $LogicPdd->searchGoods($info,'',$user['common_relation_id'],true,1,1);
                        $goods = $LogicPdd->searchGoods($info,'',$user['common_relation_id'],true,1,10);
                        if($goods !== false && isset($goods[0]))$goods = $goods[0];
                    }
                }  
@@ -138,5 +138,137 @@
        }
        return $goods;
    }
    public function compare_good($content,$common_relation_id,$exclude_tb=0,$exclude_jd=0,$exclude_pdd=0,$exclude_dy=0){
        //根据传入的内容调用ast方法
        $goods = $this->ast($content);
        $title = '';
        $ogoods=[];
        $newGoods = [];
        //判断goods是否为空
        if(empty($goods)){
            $title = $content;
        }
        else{
            $title = $goods['title'];
            $ogoods=array_merge($ogoods,$goods);
        }
        //根据$title搜索各大平台的商品天猫,淘宝,京东自营,京东POP,拼多多,唯品会,抖音
        $LogicDingdanxia = new LogicDingdanxia();
        $LogicJd = new LogicJd();
        $LogicPdd = new LogicPdd();
        $LogicHaodanku = new LogicHaodanku();
        $LogicDataoke=new LogicDataoke();
        // $c=$exclude_tb+$exclude_jd+$exclude_pdd+$exclude_dy;
        // $pagesize=bcdiv(40,(4-$c)==0?1:(4-$c),0)+1;
        $pagesize=10;
        //根据标题查询天猫商品
        $taobaoGoods = $LogicDataoke->superSearch($title,1,40,0,1);
        //去除销量为0的商品并按照价格排序
        $tmGoods = array_filter($taobaoGoods,function($v){
            return $v['monthSales'] > 0&&strstr($v['shopName'],'旗舰店');
            unset($v);
        });
        $tmcsGoods=array_filter($taobaoGoods,function($v){
            return $v['monthSales'] > 0&&strstr($v['shopName'],'天猫超市');
            unset($v);
        });
        //根据标题查询京东自营商品
        $jdGoods=$LogicJd->searchGoods($title,'desc','g',0,'match',1,40);
        //去除销量为0的商品并按照价格排序
        $jdGoods = array_filter($jdGoods,function($v){
            return $v['monthSales'] > 0;
        });
        $ppdGoodes=[];
        $common_relation_id='168369887871568';
        //根据标题查询拼多多商品
        if(!empty($common_relation_id)){
            $ppdGoodes=$LogicPdd->searchGoods($title,'',$common_relation_id,'',1,40,0,'');
            //去除销量为0的商品并按照价格排序
            $ppdGoodes = array_filter($ppdGoodes,function($v){
                return $v['monthSales'] > 0&&strstr($v['shopName'],'旗舰店');
            });
        }
        //根据标题查询抖音商品
        $dyGoods =$LogicHaodanku->getDygoodsList('',$title,0,1,40);
        //去除销量为0的商品并按照价格排序
        $dyGoods = array_filter($dyGoods,function($v){
            return $v['monthSales'] > 0;
        });
        $goodsList=[];
        $goodscount=count(array_slice($tmGoods,0,$pagesize))+count(array_slice($jdGoods,0,$pagesize))+count(array_slice($ppdGoodes,0,$pagesize))+count(array_slice($dyGoods,0,$pagesize))+count(array_slice($tmcsGoods,0,$pagesize));
        if($goodscount<40){
            //如果goodscount不满足20则从天猫商品里补足20
            $needcount=40-$goodscount+10;
            if($exclude_tb==0){
                $goodsList =array_merge($goodsList,array_slice($tmGoods,0,$pagesize));
                $goodsList =array_merge($goodsList,array_slice($tmcsGoods,0,$pagesize));
            }
            if($exclude_jd==0){
                $goodsList =array_merge($goodsList,array_slice($jdGoods,0,$pagesize));
            }
            //按照价格排序
            if(count($goodsList)>0){
               $sort1 = array_column($goodsList, 'actualPrice');
               array_multisort($sort1, SORT_ASC, $goodsList);
            }
            if($exclude_pdd==0){
                $goodsList =array_merge($goodsList,array_slice($ppdGoodes,0,$pagesize));
            }
            if($exclude_tb==0){
                $goodsList =array_merge($goodsList,array_slice($taobaoGoods,0,$needcount));
            }
            if($exclude_dy==0){
                $goodsList =array_merge($goodsList,array_slice($dyGoods,0,$pagesize));
            }
        }
        else{
            if($exclude_tb==0){
                $goodsList =array_merge($goodsList,array_slice($tmGoods,0,$pagesize));
                $goodsList =array_merge($goodsList,array_slice($tmcsGoods,0,$pagesize));
            }
            if($exclude_jd==0){
                $goodsList =array_merge($goodsList,array_slice($jdGoods,0,$pagesize));
            }
            //按照价格排序
            if(count($goodsList)>0){
                $sort1 = array_column($goodsList, 'actualPrice');
                array_multisort($sort1, SORT_ASC, $goodsList);
            }
            if($exclude_pdd==0){
                $goodsList =array_merge($goodsList,array_slice($ppdGoodes,0,$pagesize));
            }
            if($exclude_dy==0){
                $goodsList =array_merge($goodsList,array_slice($dyGoods,0,$pagesize));
            }
        }
        //如果还是不满足20则从淘宝商品里补足20
        if(count($goodsList)<40){
            if($exclude_tb==0){
                $tbGoods = $LogicDataoke->superSearch($title,1,20,0,0);
                //去除销量为0的商品并按照价格排序
                $tbGoods = array_filter($tbGoods,function($v){
                    return $v['monthSales'] > 0&&$v['shopType']=='淘宝';
                });
                //按照价格排序
                $sort1 = array_column($tbGoods, 'actualPrice');
                array_multisort($sort1, SORT_ASC, $tbGoods);
                $goodsList =array_merge($goodsList,array_slice($tbGoods,0,20));
            }
        }
        //将$ogoods插入到$goodsList第一行
        if(!empty($ogoods)){
            array_unshift($goodsList,$ogoods);
        }
        //取出前20个商品
        $goodsList = array_slice($goodsList,0,40);
        return $goodsList;
    }
    
}
application/api/logic/taoke/device/Dataoke.php
@@ -3,6 +3,7 @@
use app\api\logic\taoke\Parser;
use app\api\logic\taoke\device\Haodanku as LogicHaodanku;
use think\log;
class Dataoke extends Parser
{
@@ -37,6 +38,7 @@
        'similer_url'=>'https://openapi.dataoke.com/api/goods/list-similer-goods-by-open',
        'gift_money_url'=>'https://openapi.dataoke.com/api/goods/first-order-gift-money',
        'bottom_price_url'=>'https://openapi.dataoke.com/api/goods/get-history-low-price-list',
        'jdnines_url'=>'https://openapi.dataoke.com/api/dels/jd/column/list-nines'
    ];
    const shop_type = ["0"=>"淘宝","1"=>"天猫","2"=>"天猫超市","3"=>"天猫国际"];
@@ -101,6 +103,27 @@
        return $data;
        
    }
    /**
     * äº¬ä¸œ9.9包邮 https://www.dataoke.com/pmc/api-d.html?id=66
     *
     */
    public function jdNine($pageId,$pageSize)
    {
        $params = $this->setParams(['pageId'=>$pageId,'pageSize' => $pageSize]);
        $result = send_get(self::request_url['jdnines_url'],$params);
        if(empty($result) || $result['code'] != 0) return [];
        $list = $result['data']['list'];
        $list_new=[];
        if(!empty($list)){
            foreach($list as &$goods){
                $goods = self::initJdGoods($goods);
                array_push($list_new,$goods);
            }
        }
         return $list_new;
    }
    
      /**
@@ -404,9 +427,9 @@
     *
     * @return void
     */
    public function superSearch($keyWords,$page = 1,$page_size,$sort)
    public function superSearch($keyWords,$page = 1,$page_size,$sort,$tmall=0)
    {
        $params = $this->setParams(['type'=>"0",'keyWords'=>$keyWords,'type'=>0,'pageId'=>$page,'pageSize'=>$page_size,'sort'=>$sort]);
        $params = $this->setParams(['type'=>"0",'keyWords'=>$keyWords,'type'=>0,'pageId'=>$page,'pageSize'=>$page_size,'sort'=>$sort,'tmall'=>$tmall]);
        $result = send_get(self::request_url['super_search_url'],$params);
        if(empty($result) || $result['code'] != 0) return [];
        $list = $result['data']['list'];
@@ -803,6 +826,84 @@
        return $list;
    }
    /**
     * äº¬ä¸œæ•°æ®
     */
    private static function initJdGoods($goods)
    {
        if(empty($goods)) return [];
        $init_goods = self::goodsField();
        $init_goods['id'] = isset($goods['skuId']) ? $goods['skuId'] : '';
        $init_goods['goodsId'] =(isset($goods['skuId']) && !empty($goods['skuId']) ? $goods['skuId'] : (isset($goods['skuId']) ? $goods['skuId'] : ''));   //商品id
        $init_goods['itemLink'] = isset($goods['materialUrl']) ? $goods['materialUrl'] : '';        //商品链接
        $init_goods['title'] = isset($goods['skuName']) ? $goods['skuName'] : '';               //商品标题
        $init_goods["dtitle"] = isset($goods['skuName']) ? $goods['skuName'] : '';               //短标题
        if(empty($init_goods['dtitle'])) $init_goods['skuName'] = $init_goods['skuName'];
        $init_goods["actualPrice"] = isset($goods['actualPrice']) ? $goods['actualPrice'] : '';        //券后价
        $init_goods["originalPrice"] = isset($goods['originPrice']) ? $goods['originPrice'] : '';        //商品原价
        if(isset($goods['originPrice']))$init_goods["originPrice"] = $goods['originPrice'];
        $init_goods["sellerId"] = isset($goods['shopId']) ? $goods['shopId'] : '';           //店铺Id
        $init_goods["shopName"] = isset($goods['shopName']) ? $goods['shopName'] : '';           //店铺名称
        //$init_goods['shopLogo'] = isset($goods['shopLogo']) ? $goods['shopLogo'] : '';
        //$init_goods['shopLevel'] = isset($goods['shopLevel']) ? $goods['shopLevel'] : '';           //店铺等级
        $init_goods['descScore'] = isset($goods['goodsCommentShare']) ? $goods['goodsCommentShare'] : '';           //描述分
        //$init_goods['dsrScore'] = isset($goods['dsrScore']) ? $goods['dsrScore'] : '';           //描述相符
        //$init_goods['dsrPercent'] = isset($goods['dsrPercent']) ? $goods['dsrPercent'] : '';           //描述同行比
        //$init_goods['shipScore'] = isset($goods['shipScore']) ? $goods['shipScore'] : '';           //物流服务
        //$init_goods['serviceScore'] = isset($goods['serviceScore']) ? $goods['serviceScore'] : '';           //服务态度
        $init_goods["couponPrice"] = isset($goods['couponAmount']) ? $goods['couponAmount'] : '';       //优惠券金额
        $init_goods["monthSales"] = isset($goods['inOrderCount30Days']) ? format_number($goods['inOrderCount30Days']) : 0;        //30天销量
        $init_goods['twoHoursSales'] = isset($goods['inOrderCount30Days']) ? format_number($goods['inOrderCount30Days']) : 0; //
        //$init_goods['specialText'] = isset($goods['specialText']) ? $goods['specialText'] : [];
        $init_goods["mainPic"] = isset($goods['picMain']) ? $goods['picMain'] : '';      //商品主图
        //$init_goods["video"] = isset($goods['video']) ? $goods['video'] : '';              //商品视频
        $init_goods['couponLink'] = isset($goods['couponLink']) ? $goods['couponLink'] : '';          //优惠券链接
        $init_goods['couponEndTime'] = isset($goods['couponEndTime']) && !empty($goods['couponEndTime']) ? date('Y-m-d',strtotime($goods['couponEndTime'])) : '';      //优惠券结束时间
        $init_goods['couponStartTime'] = isset($goods['couponStartTime']) && !empty($goods['couponStartTime']) ? date('Y-m-d',strtotime($goods['couponStartTime'])) : '';      //优惠券开始时间
        //if(isset($goods['tchaoshi']) && $goods['tchaoshi'] == 1)$goods['shopType'] = 2; //天猫超市
        $init_goods['sourceType'] = "jd";
      /*   if(isset($goods['shopType'])){
            $init_goods['shopType'] = isset(self::shop_type[$goods['shopType']]) ? self::shop_type[$goods['shopType']] : "未知";            //店铺类型
            switch($goods['shopType']){
                case 1 :
                    $init_goods['sourceType'] = "tm";
                    break;
                case 2 :
                    $init_goods['sourceType'] = "tmshop";
                    break;
                case 3 :
                    $init_goods['sourceType'] = "tminte";
                    break;
            }
        } */
        $init_goods['desc'] = isset($goods['extensionContent']) ? $goods['extensionContent'] : '';  //推广文案
        $init_goods['imgs'] = isset($goods['smallImages']) ? $goods['smallImages'] : [];
        empty($goods['smallImages'])&& $init_goods['smallImages'] =explode(",",$goods['smallImages']);
        //!empty($goods['reimgs']) && $init_goods['reimgs'] = explode(",",$goods['reimgs']);
        if(!empty($goods['detailPics'])){
            $detailPics = json_decode($goods['detailPics'],true);
            if($detailPics){
                $tmp = [];
                foreach($detailPics as $key => $img){
                    array_push($tmp,$img['img']);
                }
                $init_goods['detailPics'] = $tmp;
            }
        }else{
            $init_goods['detailPics'] = $init_goods['imgs'];
        }
        $init_goods['faction']='j';
       /*  $init_goods['isSubdivision'] = isset($goods['isSubdivision']) ? $goods['isSubdivision'] : 0;  //     è¯¥å•†å“æ˜¯å¦æœ‰ç»†åˆ†ç±»ç›®
        $init_goods['subdivisionId'] = isset($goods['subdivisionId']) ? $goods['subdivisionId'] : ''; //该商品所属细分类目id
        $init_goods['subdivisionName'] = isset($goods['subdivisionName']) ? $goods['subdivisionName'] : ''; //该商品所属细分类目名称
        $init_goods['subdivisionRank'] = isset($goods['subdivisionRank']) ? $goods['subdivisionRank'] : ''; //该商品所属细分类目排名 */
        $init_goods['labelImg'] = self::initSourse($init_goods['sourceType']);
        //计算返利金额
        $init_goods['fanli'] = self::rebate($goods['actualPrice'],$goods['commissionShare']/100);
        $init_goods['topFanli'] = self::rebate($goods['actualPrice'],$goods['commissionShare']/100,self::$topFanliRate);
        $init_goods['isCollect'] = self::isCollect($init_goods);
        return $init_goods;
    }
    /**
     * æ ¼å¼åŒ–商品信息
@@ -882,6 +983,8 @@
        $init_goods['fanli'] = self::rebate($goods['actualPrice'],$goods['commissionRate']/100);
        $init_goods['topFanli'] = self::rebate($goods['actualPrice'],$goods['commissionRate']/100,self::$topFanliRate);
        $init_goods['isCollect'] = self::isCollect($init_goods);
        //补充返回值商品类目
        $init_goods['cid'] = isset($goods['cid']) ? $goods['cid'] : '';
        return $init_goods;
    }
    
application/api/logic/taoke/device/Haodanku.php
@@ -40,6 +40,7 @@
        'dy_hot_rank_url'=>'https://v3.api.haodanku.com/dy_rankitem_list',
        'pdd_hot_rank_url'=>'http://v2.api.haodanku.com/pdd_hot_rank',
        'sign_red_url'=>'http://v2.api.haodanku.com/sign_red_pack_goods',
        'dy_onebuy_url'=>'https://v3.api.haodanku.com/dy_onebuy'
    ];
    /**
@@ -900,12 +901,58 @@
            'id' => $id
        ];
        $result = send_get(self::request_url['talent_article_url'],$send_data);
        if(empty($result) || $result['code'] != 1) fault('数据获取失败');
        $info = $result['data'];
       
        return $info;
    }
      /**
     * æŠ–音1.9元/3.9元低价包邮商品
     */
    public function getDyOnebyGood($page,$pageSize){
        $send_data = [
            'apikey' => $this->apikey,
            'min_id' => $page,
            'back' => $pageSize
        ];
        $result = send_get(self::request_url['dy_onebuy_url'],$send_data);
        if(empty($result) || $result['code'] != 200) fault('数据获取失败');
        $list = $result['data'];
        $list_new=[];
        $title_list=[];
        if(!empty($list)){
            foreach($list as &$goods){
                $itemtitle=$goods['itemtitle'];
                if(empty($title_list)){
                    array_push($title_list,$itemtitle);
                }
                else{
                    //判断商品标题是否相似
                    $is_same=false;
                    foreach($title_list as &$title){
                        similar_text($title,$itemtitle,$percent);
                        log::write($title.'----------'.$itemtitle.'--------------'.$percent);
                        if($percent>60){
                            $is_same=true;
                            break;
                        }
                    }
                    if($is_same){
                        continue;
                    }
                    array_push($title_list,$itemtitle);
                }
                $goods['shoptype']='';
               // $goods = self::initDyOneByGoods($goods);
               array_push($list_new,self::initDyOneByGoods($goods));
            }
        }
        return $list_new;
    }
@@ -1010,7 +1057,8 @@
        $init_goods['isCollect'] = self::isCollect($init_goods);
        $init_goods['fanli'] = self::rebate($init_goods["actualPrice"],$goods['dyrates']/100);
        $init_goods['topFanli'] = self::rebate($init_goods['actualPrice'],$goods['dyrates']/100,self::$topFanliRate);
        //新增商品类目ID--byhyt
        $init_goods['cid'] = isset($goods['cate_id']) ? $goods['cate_id'] : '';
        return $init_goods;
    }
@@ -1043,7 +1091,8 @@
        $init_goods['isCollect'] = self::isCollect($init_goods);
        $init_goods['fanli'] = self::rebate($init_goods["actualPrice"],$goods['dyrates']/100);
        $init_goods['topFanli'] = self::rebate($init_goods['actualPrice'],$goods['dyrates']/100,self::$topFanliRate);
        //新增商品类目ID--byhyt
        $init_goods['cid'] = isset($goods['cate_id']) ? $goods['cate_id'] : '';
        return $init_goods;
    }
@@ -1081,6 +1130,39 @@
        return $init_goods;
    }
    /**
     * æ ¼å¼åŒ–抖音1.9元/3.9元低价包邮商品
     *
     * @param [type] $goods
     * @return void
     */
    private static function initDyOneByGoods($goods)
    {
        if(empty($goods)) return [];
        $init_goods = self::goodsField();
        $init_goods['id'] = isset($goods['product_id']) ? $goods['product_id'] : '';
        $init_goods['goodsId'] = isset($goods['product_id']) ? $goods['product_id'] : '';   //商品id
        $init_goods['itemLink'] = isset($goods['detail_url']) ? $goods['detail_url'] : '';            //商品链接
        $init_goods['dtitle'] = isset($goods['itemshorttitle']) ? $goods['itemshorttitle'] : '';               //商品标题
        $init_goods['title'] = $init_goods['dtitle'];
        $init_goods["actualPrice"] = isset($goods['itemendprice']) ? $goods['itemendprice'] : '';        //券后价
        $init_goods["originalPrice"] = isset($goods['itemprice']) ? $goods['itemprice'] : '';        //商品原价
        $init_goods["shopName"] = isset($goods['shop_name']) ? $goods['shop_name'] : '';          //店铺名称
        $init_goods["monthSales"] = isset($goods['itemsale']) ? format_number($goods['itemsale']) : 0;        //30天销量
        $init_goods["mainPic"] = isset($goods['itempic']) ? $goods['itempic'] : '';      //商品主图
        $init_goods['shopType'] = '抖音';            //店铺类型
        $init_goods['sourceType'] = "dy";
        $init_goods['desc'] = "";
        $init_goods['faction'] = 'd';
        $init_goods['labelImg'] = self::initSourse($init_goods['sourceType']);
        $init_goods['isCollect'] = self::isCollect($init_goods);
        $init_goods['fanli'] =isset($goods['itemendprice']) ? $goods['itemendprice'] : 0;
        $init_goods['topFanli'] =0;
        //新增商品类目ID--byhyt
        $init_goods['cid'] = isset($goods['cate_id']) ? $goods['cate_id'] : '';
        return $init_goods;
    }
    
}
application/api/logic/taoke/device/Jd.php
@@ -113,7 +113,7 @@
   /**
    * å„大榜单 http://jingtuitui.com/api_item?id=9
    *
    * @param [type] $eliteId é¢‘道ID discountReal实时爆单榜;inOrderCount30Days 30天销量榜;inOrderComm30Days 30天收益榜;discountCount总领券
    * @param [type] $eliteId é¢‘道ID discountReal实时爆单榜;inOrderCount30Days 30天销量榜;inOrderComm30Days 30天收益榜;discountCount总领券;
    * @param integer $page
    * @param [type] $page_size
    * @return void
@@ -299,6 +299,47 @@
            'pageSize' => $pageSize,
            'keyword' => $keyword
        ];
        if($isCoupon == 1)$send_data['isCoupon'] = $isCoupon;
        $result = send_get(self::request_url['search_url'],$send_data);
        if(empty($result) || $result['return'] != 0) return [];
        $list = $result['result']['goods'];
        if(!empty($list)){
            foreach($list as &$goods){
                $goods = self::initSearchGoods($goods);
            }
        }
         return $list;
    }
     /**
     * æœç´¢å•†å“ï¼ˆå¢žåŠ ç±»ç›®id--hyt) http://jingtuitui.com/api_item?id=3
     *
     * @param [type] $keyword   å…³é”®è¯
     * @param [type] $sort      asc=升降序;desc=默认降序
     * @param [type] $owner     å•†å“ç±»åž‹ ï¼šï¼ˆg:自营;p:POP)
     * @param [type] $isCoupon  æ˜¯å¦æ˜¯ä¼˜æƒ åˆ¸å•†å“ 1=有优惠券
     * @param [type] $sortName  æŽ’序字段 price单价; commissionShare佣金比例; commission佣金;inOrderCount30Days 30天引单量;inOrderComm30Days 30天支出佣金
     * @param [type] $page
     * @param [type] $pageSize
     * @param [type] $cid1  ç±»ç›®id
     * @return void
     */
    public function search_cid_Goods($keyword,$sort,$owner,$isCoupon,$sortName,$page,$pageSize,$cid1)
    {
        $send_data = [
            'appkey' => $this->appkey,
            'appid' => $this->appid,
            'v' => $this->search_version,
            'sort' => $sort,
            'owner' => $owner,
            'sortName' => $sortName,
            'pageIndex' => $page,
            'pageSize' => $pageSize,
            'keyword' => $keyword,
            'cid1' => $cid1
        ];
        if($isCoupon == 1)$send_data['isCoupon'] = $isCoupon;
        $result = send_get(self::request_url['search_url'],$send_data);
        if(empty($result) || $result['return'] != 0) return [];
@@ -341,6 +382,38 @@
        }else{
            return [];
        }
    }
    /**
     * äº¬ä¸œ0元购商品列表 http://jingtuitui.com/api_item?id=1
     *
     * @param [type] $page
     * @param [type] $pageSize
     * @return void
     */
    public function getNineSift($page,$pageSize)
    {
        $send_data = [
            'appkey' => $this->appkey,
            'appid' => $this->appid,
            'v' => $this->goods_version,
            'pageIndex' => $page,
            'pageSize' => $pageSize,
            'sortName'=>' OrderCount30Days ',
            'sort'=>'desc',
            'price_start'=>1,
            'price_end'=>5
        ];
        $result = send_get(self::request_url['goods_list_url'],$send_data);
        if(empty($result) || $result['return'] != 0) fault('数据获取失败');
        $list = $result['result']['data'];
        if(!empty($list)){
            foreach($list as &$goods){
                $goods = self::initGoods($goods);
            }
        }
         return $list;
    }
@@ -390,6 +463,8 @@
        if($init_goods["originalPrice"])$init_goods["originalPrice"] = (string)$init_goods["originalPrice"];
        $init_goods['fanli'] = self::rebate($goods['final_price'],$goods['commissionShare']/100);
        $init_goods['topFanli'] = self::rebate($goods['final_price'],$goods['commissionShare']/100,self::$topFanliRate);
        //新增商品类目ID--byhyt
        $init_goods['cid'] = isset($goods['categoryInfo']['cid1']) ? $goods['categoryInfo']['cid1'] : '';
        return $init_goods;
    }
@@ -438,6 +513,8 @@
        $init_goods['isCollect'] = self::isCollect($init_goods);
        $init_goods['fanli'] = self::rebate($init_goods["actualPrice"],$goods['commissionInfo']['commissionShare']/100); 
        $init_goods['topFanli'] = self::rebate($init_goods['actualPrice'],$goods['commissionInfo']['commissionShare']/100,self::$topFanliRate);
        //新增商品类目ID--byhyt
        $init_goods['cid'] = isset($goods['categoryInfo']['cid1']) ? $goods['categoryInfo']['cid1'] : '';
        return $init_goods;
    }
    
application/api/logic/taoke/device/Pdd.php
@@ -137,15 +137,25 @@
     * @param [type] $goods_sign     å•†å“sign
     * @return void
     */
    public function getGoodsDetail($goods_sign,$is_browse = true)
    public function getGoodsDetail($goods_sign,$is_browse = true,$relationid='')
    {
        $params = [
            'goods_sign' => $goods_sign
        ];
        if(!empty($relationid))
        {
            $params['custom_parameters']='{"uid":"'.$relationid.'"}';
            if(!empty(MOBILE_INFO)){
                $params['pid'] = MOBILE_INFO == "IOS" ? $this->config['ios_pid'] : $this->config['android_pid'];
            }else{
                return [];
            }
        }
        $send_data = $this->makeSign($params,self::request_url['goods_detail_url']);
        $result = send_get(self::base_url,$send_data);
        if(empty($result)) fault('数据获取失败');
        if(isset($result['error_response']) && !empty($result['error_response'])) fault('数据获取失败(-1)');
        //if(isset($result['error_response']) && !empty($result['error_response'])) fault('数据获取失败(-1)');
        if(isset($result['error_response']) && !empty($result['error_response'])) return [];
        $goods = isset($result['goods_detail_response']['goods_details'][0]) ? $result['goods_detail_response']['goods_details'][0] : [];
        $goods = $this->initGoods($goods);
        if($is_browse)self::browseLog($goods);
@@ -330,16 +340,17 @@
     * @param mixed $sort_type æŽ’序方式:0-综合排序;1-按佣金比率升序;2-按佣金比例降序;3-按价格升序;4-按价格降序;5-按销量升序;6-按销量降序;7-优惠券金额排序升序;8-优惠券金额排序降序;9-券后价升序排序;10-券后价降序排序;11-按照加入多多进宝时间升序;12-按照加入多多进宝时间降序;13-按佣金金额升序排序;14-按佣金金额降序排序;15-店铺描述评分升序;16-店铺描述评分降序;17-店铺物流评分升序;18-店铺物流评分降序;19-店铺服务评分升序;20-店铺服务评分降序;27-描述评分击败同类店铺百分比升序,28-描述评分击败同类店铺百分比降序,29-物流评分击败同类店铺百分比升序,30-物流评分击败同类店铺百分比降序,31-服务评分击败同类店铺百分比升序,32-服务评分击败同类店铺百分比降序
     * @return void
     */
    public function searchGoods($keyword='',$opt_id='',$common_relation_id,$with_coupon = '',$page,$pageSize,$sort_type = 0)
    public function searchGoods($keyword='',$opt_id='',$common_relation_id,$with_coupon = '',$page,$pageSize,$sort_type = 0,$cat_id='')
    {
        $params = [
            'keyword' => $keyword,
            'opt_id' => $opt_id,
            'limit' => $pageSize,
            'page_size' => $pageSize,
            'custom_parameters' => '{"uid":"'.$common_relation_id.'"}',
            'with_coupon' => empty($with_coupon) ? '' : ($with_coupon == 1 ? "true" : "false"),
            'page' => $page,
            'sort_type' => $sort_type,
            'cat_id' => $cat_id
            
        ];
        if(!empty(MOBILE_INFO)){
@@ -349,7 +360,7 @@
        }
        $send_data = $this->makeSign($params,self::request_url['search_goods_url']);
        $result = send_get(self::base_url,$send_data);
        if(empty($result) || isset($result['error_response'])) fault('数据获取失败');
        if(empty($result) || isset($result['error_response'])) return []; //fault('数据获取失败');
        $list = $result['goods_search_response']['goods_list'];
        if(!empty($list)){
            $tmp = [];
@@ -357,7 +368,13 @@
                if(isset($goods['goods_id']) && isset($goods['goods_name'])){
                    $goods = self::initGoods($goods);
                    array_push($tmp,$goods);
                }else{
                }
                else if (isset($goods['goods_id']) && isset($goods['goods_sign']))
                {
                    $goods=  self::getGoodsDetail($goods['goods_sign'],false);
                    //array_push($tmp,$goods);
                }
                else{
                    $list = [];
                    break;
            }
@@ -421,6 +438,7 @@
        $init_goods['shopLogo'] = isset($goods['mall_img_url']) ? $goods['mall_img_url'] : '';
        $init_goods['sourceType'] = "pdd";
        $init_goods['faction'] = "p";
        $init_goods['predictPromotionRate']= isset($goods['predict_promotion_rate']) ? $goods['predict_promotion_rate'] : 1;
        $init_goods['desc'] = isset($goods['goods_desc']) ? $goods['goods_desc'] : '';  //推广文案
        $init_goods['imgs'] = $init_goods['detailPics'] = isset($goods['goods_gallery_urls']) ? $goods['goods_gallery_urls'] : ''; //轮播图
        $init_goods['video'] = isset($goods['video_url']) ? $goods['video_url'] : ''; //视频
@@ -435,6 +453,8 @@
        $init_goods['isCollect'] = self::isCollect($init_goods);
        $init_goods['fanli'] = self::rebate($init_goods["actualPrice"],$goods['promotion_rate']/1000);
        $init_goods['topFanli'] = self::rebate($init_goods['actualPrice'],$goods['promotion_rate']/1000,self::$topFanliRate);
        //新增商品类目ID--byhyt
        $init_goods['cid'] = isset($goods['cat_ids'][0]) ? $goods['cat_ids'][0] : '';
        return $init_goods;
    }
    
application/behavior/User.php
@@ -20,6 +20,7 @@
            'user_id' => $event['user_id'],
            'goodsId' => $event['goodsId'],
            'goods_sign' => isset($event['goods_sign']) ? $event['goods_sign'] : '',
            'cid'=>isset($event['cid']) ? $event['cid'] : '',
            'sourceType' => isset($event['sourceType']) ? $event['sourceType'] : '',
            'faction' => isset($event['faction']) ? $event['faction'] : '',
            'title' => isset($event['title']) ? $event['title'] : '',
application/common/library/Auth.php
@@ -134,7 +134,7 @@
     * @param string $third_info ä¸‰æ–¹ç”¨æˆ·ä¿¡æ¯ æ³¨:需保持统一结构
     * @return boolean
     */
    public function register($username = '', $password, $email = '', $mobile = '', $extend = [],$third_platform="",$third_info=[])
    public function register($username = '', $password, $email = '', $mobile = '', $extend = [],$third_platform="",$third_info=[],$pushCid="")
    {
        // æ£€æµ‹ç”¨æˆ·åã€æ˜µç§°ã€é‚®ç®±ã€æ‰‹æœºå·æ˜¯å¦å­˜åœ¨
        if(!empty($third_platform) && !empty($third_info)){
@@ -184,7 +184,8 @@
            'logintime' => $time,
            'loginip'   => $ip,
            'prevtime'  => $time,
            'status'    => 'normal'
            'status'    => 'normal',
            'push_cid'=>$pushCid
        ]);
        //$params['password'] = $this->getEncryptPassword($password, $params['salt']);
        $params = array_merge($params, $extend);
@@ -340,7 +341,7 @@
     * @param int $user_id
     * @return boolean
     */
    public function direct($user_id)
    public function direct($user_id,$pushCid='')
    {
        $user = User::get($user_id);
        if ($user) {
@@ -363,6 +364,10 @@
                //!empty(PUSH_CID) && $user->push_cid = PUSH_CID;
                //重置登录失败次数
                $user->loginfailure = 0;
                if(!empty($pushCid))
                {
                    $user->push_cid=$pushCid;
                }
                $user->save();
                $this->_user = $user;
                $this->_token = Random::uuid();
application/common/model/UserExtend.php
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
<?php
namespace app\common\model;
use think\Model;
class UserExtend extends Model
{
    // è¡¨å
    protected $name = 'user_extend';
}
public/assets/js/fast.js
@@ -353,6 +353,7 @@
            switch(type){
                case '0':
                case '1':
                case '15':
                    $(".link").css('display', 'block');
                    break;
                case '2':
public/html/activity/invite2308.html
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,595 @@
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="App-Config" content="fullscreen=yes,useHistoryState=yes,transition=yes">
    <meta content="yes" name="apple-mobile-web-app-capable"><meta content="yes" name="apple-touch-fullscreen">
    <meta content="telephone=no,email=no" name="format-detection">
    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover">
    <script type="text/javascript" src="../js/vue.js"></script>
    <script type="text/javascript" src="https://public.ffquan.cn/lib/jquery-1.12.4.min.js"></script>
    <script type="text/javascript" src="https://public.ffquan.cn/lib/vue-lazyload.js"></script>
    <script type="text/javascript" src="https://public.ffquan.cn/lib/swiper/js/swiper.min.js"></script>
    <script type="text/javascript" src="https://public.ffquan.cn/lib/taobaoCode/taobaoCode.js?v=1.2.1"></script>
    <script type="text/javascript" src="https://public.ffquan.cn/lib/clipboard.min.js"></script>
    <script type="text/javascript" src="https://p1static.dataoke.com/web/js/layer/layer.js?t=202104191256"></script>
    <script type="text/javascript" src="https://img.ushopvip.com/js/uni-webview-js.js"></script>
    <title>邀粉领现金</title>
    <style>
   .com_img{
        width:100%;
     }
     .act_po
     {
        position: relative;
     }
     .top_time
     {
        position: absolute;
        color: #91261E;
        width: 100%;
        height: 20px;
        font-size: 0.1rem;
        text-align: center;
        bottom: 0.1rem;
     }
     .mid_count
     {
        position: absolute;
        color: #91261E;
        width: 100%;
        height: 20px;
        font-size: 0.3rem;
        text-align: center;
        bottom: 0.8rem;
        font-weight: 600;
     }
     .top_txt{
        position: absolute;
        color: #91261E;
        width: 100%;
        height: 20px;
        font-size: 0.3rem;
        text-align: center;
        font-weight: 600;
     }
     .ph_cont
     {
        position: absolute;
        display: flex;
        flex-direction: column;
        width: 100%;
        top: 1.4rem;
        justify-content: center;
        font-size: 12px;
        align-items: center;
     }
     .tbl {
        height: 0.7rem;
        display: flex;
        }
        .cell {
            color: #4D2F08;
    font-weight: 700;
            width: 1%;
            height: 100%;
            flex-grow: 1;
            display: flex;
            /*水平居中、垂直居中*/
            justify-content: center;
            align-items: center;
            /*换行*/
            word-break: break-all;
            word-wrap: break-word;
            white-space: normal;
        }
        .tbl div:last-child {
            border-right: 0;
        }
        .gz_txt
        {
            position: absolute;
            font-size: 12px;
            top: 4.3rem;
            width: 73%;
            font-size: 0.2rem;
            font-weight: 500;
        }
        .shadow {
                position: fixed;
                top: 0;
                height: 100vh;
                width: 100%;
                display: flex;
                justify-content: center;
                align-items: center;
                background-color: rgba(0, 0, 255, 0.3)
            }
            .popup {
                margin: 0 auto;
                height: 6rem;
                width: 6rem;
                background: #FFFF;
                border-radius: .3rem;
                overflow: overlay;
            }
            .popupCongratulate {
                text-align: center;
                font-size: .30rem;
                font-weight: bold;
            }
            .popupSon {
                margin: 0 auto;
                font-size: .2rem;
                text-align: center;
                padding: 0.1rem;
                text-align: left;
            }
            .popclose
            {
                width: 5.7rem;
                text-align: right;
                font-size: 12px;
                padding-top: 0.1rem;
                font-size: 0.3rem;
                font-weight: 800;
                position: fixed;
            }
            .gzbtn
            {
                position: absolute;
                font-size: 0.25rem;
                border-radius: 0.2rem;
                top: 0.65rem;
                right: 0.4rem;
                width: 1.3rem;
                text-align: center;
                font-weight: 600;
                background: #664b4ba6;
                color: #fff;
                padding: 0.04rem;
            }
    .btngo
    {
        position: fixed;
        width: 100%;
        bottom: 1px;
        text-align: center;
    }
    .loading{
        display: flex;
        position: fixed;
        width: 100vw;
        height: 100vh;
        background: rgb(0 0 0 / 67%);
        top: 0;
        left: 0;
        z-index: 10;
        justify-content: center;
        align-items: center;
        font-size: .35rem;
        color: #fff;
        }
        .appback-img
{
    position: absolute;
    top: 0.6rem;
    z-index: 999;
    width: 0.6rem;
    left: 0.3rem;
}
.box
        {
            position:absolute;
            width: 100%;
            height: 100%;
            background: url(https://yanfeiobpub.obs.cn-east-3.myhuaweicloud.com/dfg/h5loading.gif) no-repeat fixed top;
            background-size: 70px 70px;
        }
        .list{
            position: relative;
            top: 0;
            width: 100%;
        }
    </style>
</head>
<body style="background: #f5f5f9; margin: 0px;font-size: 0;">
    <div class="box">
        <div class="list">
    <div id="inviteact">
        <div v-if="loading" class="loading">{{loadingTxt}}</div>
        <image v-on:click="topBack()" class="appback-img" src="https://yanfeiobpub.obs.cn-east-3.myhuaweicloud.com/dfg/h5return_backIcon.png"></image>
        <div class="act_po">
            <div class="gzbtn" v-on:click="showgz()">活动规则</div>
            <image class="com_img" src="https://yanfeiobpub.obs.cn-east-3.myhuaweicloud.com/dfg/act_invite_230717_01.png"></image>
            <div class="top_time">
                2023å¹´8月1日9:00-2023å¹´8月31日23:59:59
            </div>
        </div>
        <div class="act_po">
            <div class="top_txt">已邀请的人数{{joinInfo.membercount}}</div>
            <image class="com_img" src="https://yanfeiobpub.obs.cn-east-3.myhuaweicloud.com/dfg/act_invite_230717_02.png"></image>
            <div class="mid_count">
                å½“前已解锁的红包金额:{{joinInfo.award}}
            </div>
        </div>
        <div class="act_po">
            <image class="com_img" src="https://yanfeiobpub.obs.cn-east-3.myhuaweicloud.com/dfg/act_invite_230717_03.png"></image>
            <!---排名-->
            <div class="ph_cont">
                <div style="width: 70%;width: 65%;background: #FDECE2;padding: 0.2rem;border-radius: 0.3rem;">
                    <div class="tbl" style="border-bottom: 1px dashed #4D2F08;">
                        <div class="cell" style="justify-content:left;">排名</div>
                        <div class="cell" style="justify-content:left;">用户id</div>
                        <div class="cell">邀请人数</div>
                    </div>
                    <div class="tbl" v-for="(item,index) in ranklist">
                        <div class="cell" style="justify-content:left;">
                            <image v-if="index==0" style="width: 38%;" src="https://yanfeiobpub.obs.cn-east-3.myhuaweicloud.com/dfg/actno1.png"></image>
                            <image v-else-if="index==1" style="width: 38%;" src="https://yanfeiobpub.obs.cn-east-3.myhuaweicloud.com/dfg/actno2.png"></image>
                            <image v-else-if="index==2" style="width: 38%;" src="https://yanfeiobpub.obs.cn-east-3.myhuaweicloud.com/dfg/actno3.png"></image>
                            <span v-else>{{index+1}}</span>
                        </div>
                        <div class="cell" style="justify-content:left;">
                            <image style="width: 24%; margin-right:0.1rem" :src="item.avatar"></image>
                            {{"**"+((item.nickname&&item.nickname.length>0)?item.nickname.substr(item.nickname.length-1):'')}}
                        </div>
                        <div class="cell">{{item.recruit_count}}</div>
                    </div>
                </div>
            </div>
        </div>
        <div class="act_po" style="    display: flex;justify-content: center;">
            <image class="com_img" src="https://yanfeiobpub.obs.cn-east-3.myhuaweicloud.com/dfg/act_invite_230717_04.png"></image>
            <div class="gz_txt">
                <p>
                    1、本次活动将在次月1号进行统计结算,结算邀请人数的时间范围为参加活动的时间至活动结束时间
                </p>
                <p>2、活动奖励会在结算后直接发放到用户【我的】-【余额】中</p>
                <p>3、有效粉丝定义:指活动期间,报名该活动后邀请注册并填写您邀请码的用户</p>
               <!--  <p class="share" v-on:click="copyBtn('.share')">邀请好友</p> -->
            </div>
        </div>
        <div v-if="showType" class="shadow">
            <div class="popup">
                <div class="popclose" v-on:click="closegz()">X</div>
                <div class="popupCongratulate"> æ´»åŠ¨è§„åˆ™ </div>
                <div class="popupSon">
                    <p>
                        1、本次活动将在次月1号进行统计结算,结算邀请人数的时间范围为参加活动的时间至活动结束时间
                    </p>
                    <p>2、活动奖励会在结算后直接发放到用户【我的】-【余额】中</p>
                    <p>3、有效粉丝定义:指活动期间,报名该活动后邀请注册并填写您邀请码的用户</p>
                    <p>4、同一设备号、同一手机号、同一淘宝授权号等均视为同一用户</p>
                    <p>5、活动设置反作弊机制,凡参加本次活动,必须遵守活动的相关规则,不得使用任何包括但不限于舞弊、扰乱系统、侵犯第三方合法权益等手段以谋求奖励。一经证实用户在活动中使用任何不正当作弊手段恶意刷取奖励,平台有权删除用户活动的相关记录,取消您参加活动的资格,平台将直接取消本次活动所有权益。同时,平台保留追究其法律责任的权利。平台会在本次邀粉结算前统计分析新粉丝质量,如出现异常数据,平台会要求邀请者出示真实的邀粉凭证才予以结算,异常包括但不限于出现大规模的非常规时间注册用户、同一时间批量注册、连号手机号码注册、新粉丝次日留存率极低等情况,为保护广大邀请者的权益,请各邀请用户保留不低于活动邀粉数*30%的真实的邀粉凭证,能证明真实邀粉的邀粉视频、照片等均可,以防平台进行反作弊筛查。</p>
                    <p>
                    6、本次活动中所称作弊行为,包括但不限于:
                        ï¼ˆ1)用户通过第三方平台发布粉丝注册任务、任何形式的付费买粉、机器刷粉、通过开通关联小号进行邀粉;
                        ï¼ˆ2)同一用户或者IP地址注册多个账号,利用专业软件或者人工方法违反活动规则以获取更多奖励的行为;
                        ï¼ˆ3)同一用户盗用、借用他人已有账号参与活动或者盗用、借用他人信息注册账号参与活动以获取更多奖励的行为;
                        ï¼ˆ4)恶意利用活动规则或技术漏洞刷奖的行为;
                        ï¼ˆ5)批量注册用户、用机器注册账户、用机器模拟客广端的行为;
                        ï¼ˆ6)平台有合理理由认定用户在活动中的其他作弊行为;
                        ï¼ˆ7)新粉丝使用虚拟运营商号码、使用同一设备号注册或同一授权淘宝号下单、刷单或下单商品为虚拟商品(充值、代拍、刷好评、电子文档、公益捐款)或下单商品重合度≥30%。
                    </p>
                </div>
            </div>
        </div>
        <div v-if="isShowcj" class="btngo" v-on:click="joinAct()">
            <image style="width: 70%;" src="https://yanfeiobpub.obs.cn-east-3.myhuaweicloud.com/dfg/invite_btn.png"></image>
        </div>
        <div v-else class="btngo share" v-on:click="copyBtn('.share')">
            <image style="width: 70%;" src="https://yanfeiobpub.obs.cn-east-3.myhuaweicloud.com/dfg/invit_pic.png"></image>
        </div>
    </div>
    </div>
    </div>
</body>
</html>
<script>
(function () {
        var size1=document.body.clientWidth;
        var size2=document.documentElement.clientWidth;
        var size=size1<=0?size2:size1;
        size=size<=0?400:size;
        document.documentElement.style.fontSize = (size > 750 ? 750 : size) / 7.5 + 'px';
    })();
    Vue.use(VueLazyload, {
        preLoad: 1.3,//
        error: 'https://sr.ffquan.cn/cms_pic/20200622/bro7s7f6vrkd3jat4ujg0.png',
        loading: 'https://sr.ffquan.cn/cms_pic/20200612/brhjkf76vrkcrfpi79eg0.png',
        attempt: 1
    })
  var app=  new Vue({
        el: '#inviteact',
        data:{
          //posturl:'http://dfg.shop.com',
          //posturl:'http://appapitest.ushopvip.com',
          //posturl:'http://dfgapp.ushopvip.com',
          activityid:'3432534sdsd',
          loadingTxt:'加载中...',
          loading:true,
          showType:false,
          isShowcj:false,
          joinInfo:{},
          ranklist:[],
          inviteUrl:'',
        },
        methods:{
            topBack:function()
            {
                uni.postMessage({
                      data: {
                         action: 'back'
                      }
                });
            },
            closegz:function()
            {
                this.showType=false;
            },
            showgz:function()
            {
                this.showType=true;
            },
            getActivity()
            {
                var _this = this;
                $.ajax({
                        headers:{
                            "token":_this.getUrlPar("token")
                        },
                        url:'/api/Activity/getActInfo',
                        type:"post",
                        dataType:"json",
                        data:{
                            actid:_this.activityid
                        }
                    }).done(function(res){
                       if(res.data.actstatus==1)
                       {//活动正常
                            _this.isShowcj=res.data.joinstatus==0;
                            _this.loading=false;
                            _this.getPaiHang();
                            if(res.data.joinstatus==1)
                            {//活动参加的活动信息
                                _this.getActMember();
                            }
                            else{
                                //未参加过活动
                                _this.isShowcj=true;
                            }
                       }
                       else{
                            switch(res.data.actstatus)
                            {
                                case 0:
                                    _this.loadingTxt='活动不存在';
                                    break;
                                case -1:
                                case -3:
                                    _this.loadingTxt='活动已结束';
                                    break;
                                    case -2:
                                    _this.loadingTxt='活动未开始';
                                    break;
                                default:
                                _this.loadingTxt='活动异常';
                                    break;
                            }
                       }
                    })
            },
            getActMember:function()
            {
                var _this = this;
                $.ajax({
                        headers:{
                            "token":_this.getUrlPar("token")
                        },
                        url:'/api/Activity/getActRecruitCount',
                        type:"post",
                        dataType:"json",
                        data:{
                            actid:_this.activityid
                        }
                    }).done(function(res){
                        _this.joinInfo=res.data;
                    })
            },
            getUrlPar:function(name)
            {
                var reg=new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
                 var r=window.location.search.substr(1).match(reg);
                if(r !=null)return unescape(r[2]);
                 return null;
            },
            //参加活动
            joinAct:function()
            {
                var _this = this;
                _this.loadingTxt="加载中...";
                _this.loading=true;
                $.ajax({
                        headers:{
                            "token":_this.getUrlPar("token")
                        },
                        url:'/api/Activity/attendAct',
                        type:"post",
                        dataType:"json",
                        data:{
                            actid:_this.activityid
                        }
                    }).done(function(res){
                        _this.loading=false;
                       if(res.code==0)
                       {
                        _this.msgFun("活动参加成功!");
                        _this.isShowcj=false;
                        _this.getActMember();
                       }
                       else
                       {
                        _this.msgFun("活动参加失败,请联系客服");
                       }
                    })
            },
            getInviteCode()
            {//获取邀请码
                var _this = this;
                $.ajax({
                        headers:{
                            "token":_this.getUrlPar("token")
                        },
                        url:'/api/Activity/getInviteUrl',
                        type:"post",
                        dataType:"json",
                        data:{
                        }
                    }).done(function(res){
                       if(res.code==0)
                       {
                        _this.inviteUrl='http://dfgapp.ushopvip.com/index/user/register?code='+res.data;
                       }
                    })
            },
            getPaiHang:function()
            {//获取排行
                var _this = this;
                $.ajax({
                        headers:{
                            "token":_this.getUrlPar("token")
                        },
                        url:'/api/Activity/getRankingList',
                        type:"post",
                        dataType:"json",
                        data:{
                            actid:_this.activityid
                        }
                    }).done(function(res){
                       if(res.code==0)
                       {
                        _this.ranklist=res.data;
                       }
                    })
            },
            touch:function()
            {
                const box = document.querySelector('.box')
                const list = document.querySelector('.list');
                // æŒ‰ä¸‹å±å¹•的位置
                let touchStartPosition = 0
                // touchstart事件
                box.addEventListener('touchstart', function (e) {
                    let touch = e.touches[0]
                    touchStartPosition = touch.pageY
                })
                // touchmove事件
                box.addEventListener('touchmove', function (e) {
                    let touch = e.touches[0]
                    // åˆ—表的top值等于列表相对于box的偏移量+滑动的距离
                    let pySize= list.offsetTop + touch.pageY - touchStartPosition;
                    if(pySize>=110)
                    {
                      return;
                    }
                    if(pySize<0)
                    {
                        return;
                    }
                    var scroll = document.getElementsByClassName('contscore')
                        var srollPos = $('.contscore').scrollTop(); //滚动条距顶部距离(页面超出窗口的高度)
                    if(srollPos>0)
                    {
                        return;
                    }
                    list.style.top =pySize + 'px';
                    // å®žçŽ°å¹³æ»‘çš„æ»‘åŠ¨
                    touchStartPosition = touch.pageY
                })
                // touchend事件
                box.addEventListener('touchend', function (e) {
                    let top = list.offsetTop
                    if (top > 70) {
                        // åœ¨æ­¤å¤„调用刷新后的回调
                        location.reload();
                    }
                    if(top<0)
                    {
                        list.style.top=0;
                    }
                    if (top > 0) {
                        // é€šè¿‡å®šæ—¶å™¨å¹³æ»‘的将list的top = 0
                        let timer = setInterval(() => {
                            top=top-5;
                        list.style.top = top + 'px'
                        if (top <= 0) {
                            list.style.top=0;
                            clearInterval(timer)
                        }
                        },1)
                    }
                })
            },
            copyBtn: function(dom) { //复制公共方法
                var that = this;
                var clipboard = new ClipboardJS(dom, {
                    text: function(target) {
                    return that.inviteUrl;
                    }
                });
                clipboard.on("success", function(e) {
                    layer.closeAll();
                    that.msgFun("邀请链接已复制~快去分享给好友吧!");
                    e.clearSelection();
                    clipboard.destroy();
                });
                clipboard.on("error", function(e) {
                    layer.msg("邀请链接复制失败!请到APP中 [我的]-[实用功能]-[分享app] å¤åˆ¶", {
                    shade: 0.4,
                    time: 1000,
                    shadeClose: false
                    }, function() {
                    });
                });
            },
            msgFun: function(val) {
      layer.msg(val, {
        time: 2000,
        shade: 0.1,
        shadeClose: true
      });
    },
        },
        mounted:function(){
           this.getActivity();
           this.getInviteCode();
           this.touch();
        }
    })
</script>
public/html/bottom_price.html
@@ -488,7 +488,7 @@
              headers:{
              "token":that.getUrlPar("token")
              },
              url:that.posturl+'/api/activity/bottomPrice',
              url:'/api/activity/bottomPrice',
              type:"post",
              dataType:"json",
              data:{
public/html/compareprice.html
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,672 @@
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="App-Config" content="fullscreen=yes,useHistoryState=yes,transition=yes">
    <meta content="yes" name="apple-mobile-web-app-capable"><meta content="yes" name="apple-touch-fullscreen">
    <meta content="telephone=no,email=no" name="format-detection">
    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover">
    <script type="text/javascript" src="https://public.ffquan.cn/lib/jquery-1.12.4.min.js"></script>
    <script type="text/javascript" src="https://public.ffquan.cn/lib/vue-lazyload.js"></script>
    <script type="text/javascript" src="https://public.ffquan.cn/lib/swiper/js/swiper.min.js"></script>
    <script type="text/javascript" src="https://public.ffquan.cn/lib/taobaoCode/taobaoCode.js?v=1.2.1"></script>
    <script type="text/javascript" src="https://public.ffquan.cn/lib/clipboard.min.js"></script>
    <script type="text/javascript" src="https://p1static.dataoke.com/web/js/layer/layer.js?t=202104191256"></script>
    <script type="text/javascript" src="https://img.ushopvip.com/js/uni-webview-js.js"></script>
    <title>全网比价</title>
    <style>
        .top-content
        {
            width: 100%;
            position:absolute;
            top: 0;
            left: 0;
        }
        .mid-content
        {
            width: 95%;
            margin: 0 auto;
            margin-top: 5.3rem;
            position:relative;
        }
        .mid-content-con
        {
            width: 100%;
            background: #fff;
            border-radius: .2rem;
            margin-bottom: 0.2rem;
            padding-top:.2rem;
        }
        .mid-content-list
        {
            width: 100%;
            background: #fff;
            border-radius: .5rem;
            height: 30rem;
        }
        .content-tip
        {
            width: 88%;
            font-size: 13px;
            margin: 0 auto;
            margin-bottom: 0.2rem;
            font-weight: 500;
            color: #958d8d;
            text-align: right;
            padding-right: 0.1rem;
        }
        .copytxt
        {
            font-size: 13px;
        position: absolute;
        bottom: 0.1rem;
        right: 0.1rem;
        color: #958d8d;
        }
        .content-txtarea
        {
            width: 88%;
            margin: 0 auto;
            height: 2.2rem;
            position: relative;
        }
        .txtarea{
            width: 100%;
            height: 99%;
            border: 0px;
            background: #f5f5f9;
            resize:none;
        }
        .mid-button-content
        {
            display:flex;
            flex-direction: row;
            width: 100%;
            justify-content: center;
            margin-top: 0.2rem;
        }
        .mid-button-content-img
        {
            width: 83%;
        }
        .cont-title
        {
            margin: 0 0 0.2rem 0.2rem;
            font-weight: 600;
            font-size: .3rem;
        }
        .mid-content-none
        {
            width: 100%;
            width: 100%;
            text-align: center;
            margin: 0 auto;
            line-height: 1.2rem;
            color: #a69b9b;
            font-size: 14px;
        }
        .ulist > a {
            display: block;
            text-decoration: none;
            margin-bottom: 0.15rem;
        }
        .ulist {
            display: block;
        }
        .detail___3ZQFW {
        background-color: #fff;
        height: 2.6rem;
        border-radius: .16rem;
        padding: .1rem;
        position: relative;
        box-sizing: border-box;
    }
    .picture___r4a1j {
        height: 2.4rem;
        width: 2.4rem;
        border-radius: .1rem;
        position: absolute;
        left: .1rem;
        top: .1rem;
    }
    .choiceInfo___3ZuEa {
        -webkit-justify-content: space-between;
        -ms-flex-pack: justify;
        justify-content: space-between;
        padding-left: 2.5rem;
        width: 100%;
        overflow: hidden;
        -webkit-align-items: flex-start;
        -ms-flex-align: start;
        align-items: flex-start;
        position: relative;
        display: flex;
        flex-wrap: nowrap;
        flex-direction: column;
    }
    .other___2Mv8Q h2 span {
        width: calc(100vw - 3.6rem);
        overflow: hidden;
        white-space: nowrap;
        text-overflow: ellipsis;
    }
    .other___2Mv8Q h2 {
        justify-content: flex-start;
        padding: 0;
        margin: 0;
        height: .85rem;
        font-size: .28rem;
        font-family: PingFangSC-Regular, PingFang SC;
        font-weight: 400;
        line-height: .4rem;
        color: #333;
        display: flex;
        flex-direction: row;
        flex-wrap: nowrap;
    }
    .shoplabel___1_Nv0 img {
        margin-right: .05rem;
        display: block;
        height: 100%;
        font-size: 100%;
        font: inherit;
        vertical-align: baseline;
    }
    .shoplabel___1_Nv0 {
        height: .26rem;
        float: left;
        position: relative;
        top: .05rem;
    }
    .coupon___2SVZi span {
        display: inline-block;
        font-size: .18rem;
        font-family: PingFangSC-Regular, PingFang SC;
        font-weight: 400;
        color: #ff5351;
        line-height: .20rem;
        padding: .02rem .04rem;
        background: #fff;
        border-radius: .02rem 0 0 .02rem;
        text-align: center;
        margin-right: .06rem;
    }
    .coupon___2SVZi {
        margin-top: 3px;
        height: .28rem;
        background: linear-gradient(
                90deg, #ff8873, #ff4f4f);
        border-radius: .04rem;
        display: inline-block;
        line-height: .28rem;
        padding: 0 .06rem 0 .02rem;
        font-size: .19rem;
        font-family: PingFangSC-Regular, PingFang SC;
        color: #fff;
        display: -webkit-flex;
        display: -ms-flexbox;
        display: flex;
        -webkit-align-items: center;
        -ms-flex-align: center;
        align-items: center;
        width: -webkit-max-content;
        width: -moz-max-content;
        width: max-content;
    }
    .price___dfbCD u {
        text-decoration: line-through;
        width: .64rem;
        font-size: .2rem;
        color: #a7a7a7;
    }
    .price___dfbCD span {
        font-size: .32rem;
        line-height: .34rem;
        padding: 0 .08rem 0 .04rem;
        font-weight: 700;
    }
    .price___dfbCD {
        font-family: PingFangSC-Regular, PingFang SC;
        font-weight: 500;
        color: #fe3738;
        font-size: .22rem;
        justify-content: flex-start;
        height: .34rem;
        margin: .04rem 0 .1rem;
        -webkit-align-items: baseline;
        -ms-flex-align: baseline;
        align-items: baseline;
    }
    .detail___3ZQFW .choiceInfo___3ZuEa .operation___3KazI button {
        border: none;
        width: 1.36rem;
        height: .4rem;
        line-height: .4rem;
        background: linear-gradient(
                270deg, #F7AD38, #F7AD38);
        border-radius: .2rem;
        text-align: center;
        font-size: .22rem;
        font-family: PingFangSC-Medium, PingFang SC;
        font-weight: 500;
        color: #fff;
        line-height: .32rem;
    }
    .detail___3ZQFW .choiceInfo___3ZuEa .price___dfbCD {
        -webkit-justify-content: flex-start;
        -ms-flex-pack: start;
        justify-content: flex-start;
        -webkit-align-items: baseline;
        -ms-flex-align: baseline;
        align-items: baseline;
        font-size: .24rem;
        font-family: PingFangSC-Medium, PingFang SC;
        font-weight: 500;
        color: #fe3738;
        line-height: .54rem;
    }
    .detail___3ZQFW .choiceInfo___3ZuEa .operation___3KazI {
        position: absolute;
        right: .1rem;
        bottom: .06rem;
        display: flex;
        flex-direction: column;
        flex-wrap: nowrap;
    }
    * {
        box-sizing: border-box;
    }
    .loading{
        display: flex;
        position: fixed;
        width: 100vw;
        height: 100vh;
        background: rgb(0 0 0 / 67%);
        top: 0;
        left: 0;
        z-index: 10;
        justify-content: center;
        align-items: center;
        font-size: .35rem;
        color: #fff;
        }
        .showshop
        {
            font-size: .26rem;
            color: #787070;
        }
        .goodtitle
        {
            overflow: hidden;
            text-overflow: ellipsis;
            display: -webkit-box;
            -webkit-line-clamp: 2;
            -webkit-box-orient: vertical;
        }
        .price_font
        {
            font-size: .26rem;
            color: #787070;
        }
        .plat-div
        {
            font-size: 0.28rem;
            padding: 0.2rem;
            background: #fff;
            margin-bottom: 0.2rem;
            display: flex;
            border-radius: .16rem;
            align-items: center;
        }
        .plat-ite
        {
            width: 20%;
            text-align: center;
            margin-right: 0.1rem;
            border-radius: 0.1rem;
            color: #fff;
            display: flex;
            justify-content: center;
            align-items: center;
            background: #F79633;
            padding: 0.1rem;
        }
        .plat-unite
        {
            background: #fff;
            border:1px solid #F79633;
            color:#F79633;
            width: 20%;
            text-align: center;
            margin-right: 0.1rem;
            border-radius: 0.1rem;
            display: flex;
            justify-content: center;
            align-items: center;
            padding: 0.1rem;
        }
    </style>
</head>
<body style="background: #f5f5f9;">
    <div id="comprice">
        <div v-if="loading" class="loading">加载中...</div>
        <image class="top-content" src="https://yanfeiobpub.obs.cn-east-3.myhuaweicloud.com/dfg/compareprice_topimg.png"></image>
        <div class="main-content">
            <div class="mid-content">
                <div class="mid-content-con">
                    <div class="content-tip" v-on:click="clear()">
                        æ¸…空
                    </div>
                    <div class="content-txtarea">
                        <textarea enterkeyhint="search" onkeydown="onTextareaKeyDown()" class="txtarea" v-model="txtareatxt" :placeholder='txtplaceholder'></textarea>
                        <span class="copytxt" v-on:click="fromcopy()">粘贴</span>
                    </div>
                    <div class="mid-button-content">
                        <div class="mid-button-content-img" v-on:click="search()">
                            <image style="width: 100%;" src="https://yanfeiobpub.obs.cn-east-3.myhuaweicloud.com/dfg/compareprice_search.png"></image>
                        </div>
                    </div>
                </div>
                <div class="cont-title">
                    {{showTxt}}
                </div>
                    <div v-if="goodsItem.length==0" class="mid-content-none">
                        æš‚无数据~
                    </div>
                    <div v-else class="ulist">
                        <div class="plat-div" v-if="issearch">
                            <span>平台:</span>
                            <div v-on:click="changeplat(item)" :class="item.choose?'plat-ite':'plat-unite'" v-for="item in plat">
                                <span class="plat-span" v-if="item.choose">
                                    âˆš{{item.platname}}
                                </span>
                                <span class="plat-span" v-else>
                                    {{item.platname}}
                                </span>
                            </div>
                        </div>
                        <a v-for="g in goodsItem" :key="g.id" v-on:click="handleCdetailFavorite(g)">
                            <div class="detail___3ZQFW">
                                <img :src="g.mainPic"
                                    class="fadeIn picture___r4a1j">
                                <div class="choiceInfo___3ZuEa">
                                    <div class="other___2Mv8Q">
                                        <h2>
                                            <!-- <div class="shoplabel___1_Nv0"><img
                                                    :src="g.labelImg">
                                            </div> -->
                                            <div class="goodtitle">
                                                <img class="shoplabel___1_Nv0" :src="g.labelImg">
                                                {{g.title}}</div></h2>
                                        <div v-if="g.couponPrice" class="coupon___2SVZi" style="float: left; margin-right:10px"><span>券</span>{{g.couponPrice}}元</div>
                                        <div class="coupon___2SVZi" style="background: #A429F3;"><span style="color: #A429F3;">返</span>{{g.fanli}}元</div>
                                    </div>
                                    <div class="price___dfbCD"><span class="price_font" style="font-size: .26rem; font-weight: 500;">到手价</span><span style="padding: 0;">Â¥</span><span style="padding: 0 .08rem 0 0;">{{(g.actualPrice-g.fanli).toFixed(2)}}</span><u v-if="g.sourceType=='tb'||g.sourceType=='tm'" style="text-decoration:line-through">Â¥{{g.originalPrice}}</u></div>
                                   <!--  <div class="operation___3KazI">
                                        <button>立即购买</button>
                                    </div> -->
                                    <div class="showshop">月销{{g.monthSales}}</div>
                                    <div class="showshop">{{g.shopName}}</div>
                                </div>
                            </div>
                        </a>
                    </div>
            </div>
        </div>
    </div>
</body>
</html>
<script type="text/javascript" src="./js/vue.js"></script>
<script>
(function () {
        var size1=document.body.clientWidth;
        var size2=document.documentElement.clientWidth;
        var size=size1<=0?size2:size1;
        size=size<=0?400:size;
        document.documentElement.style.fontSize = (size > 750 ? 750 : size) / 7.5 + 'px';
    })();
    function scanCode(str)
    {
        app.copytxt(str);
    }
    function likeDataGet(data)
    {
        app.likeDataGet(data);
    }
    function onTextareaKeyDown()
    {
        if (event.keyCode == 13)
        {
            app.search();
            document.activeElement.blur();
        }
    }
    Vue.use(VueLazyload, {
        preLoad: 1.3,//
        error: 'https://sr.ffquan.cn/cms_pic/20200622/bro7s7f6vrkd3jat4ujg0.png',
        loading: 'https://sr.ffquan.cn/cms_pic/20200612/brhjkf76vrkcrfpi79eg0.png',
        attempt: 1
    })
  var app=  new Vue({
        el: '#comprice',
        data:{
          //posturl:'http://dfg.shop.com',
         // posturl:'http://appapitest.ushopvip.com',
          //posturl:'http://dfgapp.ushopvip.com',
          goodsItem:[],
          loading:false,
          plat:[
            {
                'platname':'淘宝',
                'plat':'tb',
                'choose':true
            },
            {
                'platname':'京东',
                'plat':'jd',
                'choose':true
            },
            {
                'platname':'抖音',
                'plat':'dy',
                'choose':true
            },
            {
                'platname':'拼多多',
                'plat':'pdd',
                'choose':true
            },
          ],
          txtareatxt:'',
          issearch:false,
          showTxt:'猜你喜欢',
          txtplaceholder:'1、支持淘宝、天猫、京东、抖音、拼多多等平台\r\n2、请粘贴您需要转换的分享文案/链接和口令/商品链接;不支持券链接'
        },
        methods:{
            changeplat:function(item)
            {
                var index=this.plat.findIndex(i=>i.plat==item.plat);
                item.choose=!item.choose;
                this.plat[index]=item;
                this.search();
            },
            //查询
            search:function()
            {
                if(this.txtareatxt=='')
                {
                    return;
                }
                this.showTxt="查询结果";
                this.goodsItem=[];
                var that = this;
                this.loading = true
                var postData={
                        content:that.txtareatxt
                    };
                //查看不看的平台
                var cancelPlat=this.plat.filter(i=>!i.choose);
                if(cancelPlat&&cancelPlat.length>0)
                {
                    for(var i=0;i<cancelPlat.length;i++)
                    {
                        switch(cancelPlat[i].plat)
                        {
                            case "tb":
                                postData.exclude_tb=1;
                                break;
                            case "jd":
                                postData.exclude_jd=1;
                                break;
                            case "pdd":
                                postData.exclude_pdd=1;
                                break;
                            case "dy":
                                postData.exclude_dy=1;
                                break;
                        }
                    }
                }
                $.ajax({
                    headers:{
                        "token":this.getUrlPar("token")
                    },
                    url:'/api/taoke/compare_good',
                    type:"post",
                    dataType:"json",
                    data:postData
                }).done(function(res){
                    that.loading = false;
                    that.issearch=true;
                    if(res.code == 0){
                        that.goodsItem=res.data.list;
                    }
                })
            },
            Infoformat: function(info){
                info = info.replace(/\%/g,"%25")
            info = info.replace(/\#/g,"%23")
            info = info.replace(/\&/g,"%26")
            info = info.replace(/\?/g,"%3F")
            return info;
            },
            handleCdetailFavorite:function(item)
            {
                switch(item.sourceType)
                {
                    case "tb":
                    case "tm":
                        uni.navigateTo({
                            url: '/pages/goods/goodsDetail?id=' + item.goodsId+'&frompage=compareprice'
                        });
                        break;
                    default:
                        var itemsStr=this.Infoformat(JSON.stringify(item));
                        uni.navigateTo({
                            url: '/pages/goods/goodsDetail?sourcefrom=compareprice&info=' + itemsStr+'&frompage=compareprice'
                        });
                        break;
                }
            },
            likeDataGet:function(postData)
            {
                var _this=this;
                $.ajax({
                    headers:{
                        "token":this.getUrlPar("token")
                    },
                    url:'/api/taoke/get_goods_things',
                    type:"post",
                    dataType:"json",
                    async: false,
                    data:{
                        deviceType:postData.postData,
                        deviceValue:postData.deviceValue,
                        pageId:1,
                        pageSize:10,
                        type:1
                    }
                }).done(function(res){
                    _this.goodsItem=res.data.list;
                    console.log(res);
                })
            },
            getLikeGoods:function()
            {
                uni.postMessage({
                    data: {
                        action: 'getlike'
                    }
                })
            },
            clear:function()
            {
                this.txtareatxt='';
            },
            copytxt(str)
            {
                if(str&&str.data&&str.data.length>0)
                {
                    this.txtareatxt=str.data;
                }
            },
            fromcopy:function()
            {
                uni.postMessage({
                    data: {
                        action: 'copy'
                    }
                })
            },
            getUrlPar:function(name)
            {
                var reg=new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
                 var r=window.location.search.substr(1).match(reg);
                if(r !=null)return unescape(r[2]);
                 return null;
            },
        },
        mounted:function(){
            /*  var postData={
                postData:'OAID',
                deviceValue:''
            };
            this.likeDataGet(postData);
 */
            var that=this;
            document.addEventListener('UniAppJSBridgeReady', function() {
                that.getLikeGoods();
            });
        }
    })
</script>
public/html/fengqiangbang.html
@@ -45,11 +45,11 @@
            }
        };
        function Infoformat(info){
            let formatObj = info.replace(/\%/g,"%25")
            formatObj = info.replace(/\#/g,"%23")
            formatObj = info.replace(/\&/g,"%26")
            formatObj = info.replace(/\?/g,"%3F")
            return formatObj;
            info = info.replace(/\%/g,"%25")
            info = info.replace(/\#/g,"%23")
            info = info.replace(/\&/g,"%26")
            info = info.replace(/\?/g,"%3F")
            return info;
        }
    </script>
    <style>
@@ -59,7 +59,7 @@
        a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline;-webkit-tap-highlight-color:transparent;-webkit-tap-highlight-color:rgba(0,0,0,0);tap-highlight-color:transparent;box-sizing:border-box}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}html{font-family:Arial,PingFang SC,-apple-system,BlinkMacSystemFont,Segoe UI,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}
        .list-container{
            position: relative;
            padding-top: 30px;
            padding-top: 0.7rem;
        }
        .top-bg{
            width: 100%;position: absolute;top:0;
@@ -302,20 +302,31 @@
            justify-content: center;
            height: 1.3rem;
        }
        .appback
        {
            height: 0.5rem;
            position: absolute;
            left: 0.4rem;
            z-index: 999;
            top:0.2rem;
        }
        .appback-img
        {
            height: 100%;
        }
    </style>
</head>
<body>
   <div class="box">
  <!--   <div class="reloadbg">
        <image class="reloadbgimg" src="https://yanfeiobpub.obs.cn-east-3.myhuaweicloud.com/dfg/h5loading.gif"></image>
    </div>
     -->
    <div class="list">
    <div class="list"  id="fqList">
        <!-- <div class="appback">
            <image @click="topBack()" class="appback-img" src="https://yanfeiobpub.obs.cn-east-3.myhuaweicloud.com/dfg/h5return_backIcon.png"></image>
        </div> -->
    <img src="https://jpdy.ffquan.cn/static/header_bg.12963398.png" class="top-bg" alt="">
    <div class="list-container" id="fqList">
    <div class="list-container">
        <div  v-if="loading" class="loading">
            <span>加载中...</span>
        </div>
@@ -462,8 +473,8 @@
            cid:0,
            type:1,
           //posturl:'http://dfg.shop.com',
            posturl:'http://dfgapp.ushopvip.com',
           // posturl:'http://appapitest.ushopvip.com',
           // posturl:'http://dfgapp.ushopvip.com',
            //posturl:'http://appapitest.ushopvip.com',
            platlist:[
                {
                    id:"tb",
@@ -495,6 +506,14 @@
            console.log("到底了111");
        },
        methods:{
            topBack:function()
            {
                uni.postMessage({
                      data: {
                         action: 'back'
                      }
                     });
            },
            getItemDetail:function(items)
            {
                var _this = this;
@@ -502,7 +521,7 @@
                        headers:{
                            "token":_this.getUrlPar("token")
                        },
                        url:_this.posturl+'/api/Activity/fqb_goods_detail',
                        url:'/api/Activity/fqb_goods_detail',
                        type:"post",
                        dataType:"json",
                        data:{
@@ -715,7 +734,7 @@
                        headers:{
                            "token":this.getUrlPar("token")
                        },
                        url:this.posturl+'/api/Activity/fqb_plat_cate',
                        url:'/api/Activity/fqb_plat_cate',
                        type:"post",
                        dataType:"json",
                        data:{
@@ -799,7 +818,7 @@
                    headers:{
                        "token":this.getUrlPar("token")
                    },
                    url:this.posturl+'/api/Activity/fqn_goods_list',
                    url:'/api/Activity/fqn_goods_list',
                    type:"post",
                    dataType:"json",
                    data:{
public/html/freebuy.html
@@ -40,10 +40,7 @@
            margin: auto; max-width: 800px; font-size: .28rem; overflow: hidden; position: relative; z-index: 1;
            overflow: hidden;
        }
        #appMain:before {
            content: "";display: block;position: absolute;top: 0;left: -20%;height: 3.88rem;width: 140%;background: linear-gradient(90deg,#fbe7e2,#fbe7e2) no-repeat;background-size: 100%;
            border-radius: 0 0 50% 50%;z-index: -1;
        }
       
        .h3bt {
            width: 1.66rem;
@@ -55,12 +52,14 @@
        .act_header{
            z-index: 200; width: 100%; background: no-repeat top; background-size: 100% auto;
            display: flex; align-items: center; justify-content: space-between;
            position: fixed;background: linear-gradient(90deg, #fbe7e2 0%, #fbe7e2 100%) 0% 0% / 100%;
            background: linear-gradient(#FF451F, #fbe7e2);
             color: #fff;
            max-width: 800px;
        }
        .act_header .centent{
            text-align: center;
            padding-top: 0.6rem;
        }
        .act_header .centent img{
            width:100%;
@@ -158,7 +157,7 @@
        .list-section{
            display: -webkit-flex;display: flex;-webkit-flex-wrap: wrap;flex-wrap: wrap;-webkit-justify-content: space-between;justify-content: space-between;padding: 0 1.87%;margin-top: 0.6rem;
            display: -webkit-flex;display: flex;-webkit-flex-wrap: wrap;flex-wrap: wrap;-webkit-justify-content: space-between;justify-content: space-between;padding: 0 1.87%;margin-top: 0.05rem;
        }
        .list-section .listTmp{
            width: 49%;background: #fff;border-radius: .08rem;margin-bottom: .14rem;box-sizing: border-box;
@@ -230,28 +229,114 @@
            center center no-repeat;
            background-size: 2.4rem auto;
        }
    .sort {
        background-color: #ea2424;
        border-radius: .2rem .2rem 0 0;
        }
.sort-list {
    display: flex;
    border-bottom: .02rem solid #eb3a15;
    color: #ff8f78;
    justify-content: space-between
}
.sort-list>li {
    width: 25%;
    font-size: .26rem;
    font-weight: 500;
    color: #ff8f78;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: .24rem 0
}
.sort-list>li.sort-active {
    color: #fff
}
.sort-list>li span {
    position: relative;
    height: .16rem;
    margin-left: .06rem
}
.sort-list>li span i {
    position: absolute;
    width: 0;
    height: 0;
    border-color: #b92709 transparent transparent;
    border-style: solid;
    border-width: .06rem .06rem 0
}
.sort-list>li span i:first-child {
    transform: rotate(180deg)
}
.sort-list>li span i:nth-child(2) {
    bottom: 0
}
.sort-list>li span i.arrow-active {
    border-color: #f2f2f2 transparent transparent
}
.appback
{
    height: 0.5rem;
    position: absolute;
    top: 0.5rem;
    left: 0.4rem;
}
.appback-img
{
    height: 100%;
}
.box
        {
            position:absolute;
            width: 100%;
            height: 100%;
            background: url(https://yanfeiobpub.obs.cn-east-3.myhuaweicloud.com/dfg/h5loading.gif) no-repeat fixed top;
            background-size: 70px 70px;
        }
        .list{
            position: relative;
            top: 0;
            width: 100%;
        }
    </style>
</head>
<body >
<body style="background: #fbe7e2;">
    <div class="box">
        <div class="list">
    <div id="appMain" >
        <div class="appback">
            <image v-on:click="topBack()" class="appback-img" src="https://yanfeiobpub.obs.cn-east-3.myhuaweicloud.com/dfg/h5return_backIcon.png"></image>
        </div>
    <header class="act_header">
        <div></div>
        <div class="centent"><img src="https://yanfeiobpub.obs.cn-east-3.myhuaweicloud.com/dfg/xinrengoubanner.png" alt=""></div>
        <div class="share">
            <!-- <a href="">分享</a> -->
        </div>
    </header>
    <div :style="{ height: (twoNav && twoNav.length > 0) ? '2.3rem' : '2.3rem'}"></div>
    <div class="sort">
        <ul class="sort-list">
          <li v-for="item in fristOrderSort" v-bind:class="{'sort-active': item.number == sortNumber}"
              v-on:click="handleSort(item)">
            {{ item.name }}
          </li>
        </ul>
      </div>
    <div v-if="loading" v-else class="loading">加载中...</div>
    <div v-else style="min-height: 100vh; background: #fbe7e2;" class=" swiper-container swiper-container-initialized swiper-container-horizontal swiper-container-free-mode swiper-container-ios">
            <div class="swiper-wrapper" style="transform: translate3d(0px, 0px, 0px);">
                <div class="swiper-slide list-section">
                            <div class="listTmp " v-for="(data,key) in lists" :key="key" v-on:click="targetItem(data)">
                                    <div class="productImg">
                                        <img :src="data.mainPic + '_310x310.jpg'" class="fadeIn " height="200" width="200">
                                        <img :src="data.mainPic + (plat=='tb'?'_310x310.jpg':'')" class="fadeIn " height="200" width="200">
                                    </div>
                                    <div class="productInfo">
                                        
@@ -287,6 +372,8 @@
    </div>
   
</div>
    </div>
</div>
</body>
</html>
@@ -314,6 +401,31 @@
                goodsList:[],
                robbingNum:0,
            },
            sortNumber:'tb',
            sortId:0,
            fristOrderSort: [
                    {
                    name: "淘宝",
                    bool: true,
                    max: "",
                    min: "",
                    number: 'tb'
                    },
                    {
                    name: "抖音",
                    bool: true,
                    max: "",
                    min: "",
                    number: 'dy'
                    },
                    {
                    name: "京东",
                    bool: true,
                    max: "",
                    min: "",
                    number: 'jd'
                    }
              ],
            goodsItem: [],
            lists:[],
            nav:[],
@@ -321,14 +433,106 @@
            twoNav:false,
            activeTwo:undefined,
            loading:true,
            isUniReady:false
            isUniReady:false,
            plat:'tb',
            //posturl:"http://dfg.shop.com"
            //posturl:"http://appapitest.ushopvip.com"
            //posturl:"http://dfgapp.ushopvip.com"
        },
        methods: {
            topBack:function()
            {
                uni.postMessage({
                      data: {
                         action: 'back'
                      }
                     });
            },
            touch:function()
            {
                const box = document.querySelector('.box')
                const list = document.querySelector('.list');
                // æŒ‰ä¸‹å±å¹•的位置
                let touchStartPosition = 0
                // touchstart事件
                box.addEventListener('touchstart', function (e) {
                    let touch = e.touches[0]
                    touchStartPosition = touch.pageY
                })
                // touchmove事件
                box.addEventListener('touchmove', function (e) {
                    let touch = e.touches[0]
                    // åˆ—表的top值等于列表相对于box的偏移量+滑动的距离
                    let pySize= list.offsetTop + touch.pageY - touchStartPosition;
                    if(pySize>=110)
                    {
                      return;
                    }
                    if(pySize<0)
                    {
                        return;
                    }
                    var scroll = document.getElementsByClassName('contscore')
                        var srollPos = $('.contscore').scrollTop(); //滚动条距顶部距离(页面超出窗口的高度)
                    if(srollPos>0)
                    {
                        return;
                    }
                    list.style.top =pySize + 'px';
                    // å®žçŽ°å¹³æ»‘çš„æ»‘åŠ¨
                    touchStartPosition = touch.pageY
                })
                // touchend事件
                box.addEventListener('touchend', function (e) {
                    let top = list.offsetTop
                    if (top > 70) {
                        // åœ¨æ­¤å¤„调用刷新后的回调
                        console.log('刷新');
                        location.reload();
                    }
                    if(top<0)
                    {
                        list.style.top=0;
                    }
                    if (top > 0) {
                        // é€šè¿‡å®šæ—¶å™¨å¹³æ»‘的将list的top = 0
                        let timer = setInterval(() => {
                            top=top-5;
                        list.style.top = top + 'px'
                        if (top <= 0) {
                            list.style.top=0;
                            clearInterval(timer)
                        }
                        },1)
                    }
                })
            },
            Infoformat: function(info){
                info = info.replace(/\%/g,"%25")
            info = info.replace(/\#/g,"%23")
            info = info.replace(/\&/g,"%26")
            info = info.replace(/\?/g,"%3F")
            return info;
            },
            targetItem:function(item){
                uni.navigateTo({
                  url: '/pages/goods/goodsDetail?id=' + item.goodsId+'&frompage=freebuy'
                });
                switch(this.plat)
                {
                    case "tb":
                        uni.navigateTo({
                            url: '/pages/goods/goodsDetail?id=' + item.goodsId+'&frompage=freebuy'
                        });
                        break;
                    case "dy":
                    case "jd":
                        var itemsStr=this.Infoformat(JSON.stringify(item));
                        uni.navigateTo({
                            url: '/pages/goods/goodsDetail?sourcefrom=freebuy&info=' + itemsStr+'&frompage=freebuy'
                        });
                        break;
                }
                /* if(this.isUniReady)
                {
                    uni.postMessage({
@@ -339,7 +543,15 @@
                     });
                } */
            },
            handleSort: function(item) {
                if(this.sortNumber != item.number) {
                    this.loading=true;
                    this.lists=[];
                    this.getgoodsSwitch(item.number);
                    this.sortNumber = item.number;
                    this.plat=item.number;
                }
            },
            getUrlPar:function(name)
            {
                var reg=new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
@@ -347,7 +559,77 @@
                if(r !=null)return unescape(r[2]);
                 return null;
            },
            getGoodsList:function(){
             //获取京东商品
             getJdGoodsList:function(){
                var _this=this;
                $.ajax({
                            headers:{
                                "token":_this.getUrlPar("token")
                            },
                            url:'/api/taoke/get_first_free_jd_goods',
                            type:"post",
                                dataType:"json",
                            data:{
                            }
                            }).done(function(res){
                            _this.lists=[].concat([],res.data.list);
                            _this.loading = false;
                     })
            },
            //获取抖音商品
            getDyGoodsList:function(){
                var _this=this;
                $.ajax({
                            headers:{
                                "token":_this.getUrlPar("token")
                            },
                            url:'/api/taoke/get_first_free_dy_goods',
                            type:"post",
                                dataType:"json",
                            data:{
                            }
                            }).done(function(res){
                            _this.lists=[].concat([],res.data.list);
                            _this.loading = false;
                     })
            },
            //获取淘宝商品
            getTbGoodsList:function()
            {
                var _this=this;
                $.ajax({
                            headers:{
                                "token":_this.getUrlPar("token")
                            },
                            url:'/api/taoke/get_first_free_goods',
                            type:"post",
                                dataType:"json",
                            data:{
                                page: 1,
                                pageSize:40,
                            }
                            }).done(function(res){
                            _this.lists=[].concat([],res.data.list);
                            _this.loading = false;
                     })
            },
            getgoodsSwitch:function(plat)
                {
                    switch(plat)
                        {
                            case "tb":
                                this.getTbGoodsList();
                                break;
                            case "dy":
                                this.getDyGoodsList();
                                break;
                            case"jd":
                                this.getJdGoodsList();
                                break;
                        }
                },
            //是否首单
            getIsSd:function(){
                var _this = this;
                this.loading=true;
                //判断是否首单
@@ -355,9 +637,7 @@
                    headers:{
                        "token":_this.getUrlPar("token")
                    },
                    //url:'http://dfg.shop.com/index.php/api/user/check_isfirst_free',
                   url:'http://dfgapp.ushopvip.com/api/user/check_isfirst_free',
                   //url:'http://appapitest.ushopvip.com/api/user/check_isfirst_free',
                   url:'/api/user/check_isfirst_free',
                   type:"post",
                    dataType:"json",
                    data:{
@@ -366,22 +646,7 @@
                }).done(function(res){
                    if(res.msg.info==1)
                    {
                        $.ajax({
                            headers:{
                                "token":_this.getUrlPar("token")
                            },
                                //url:'http://dfg.shop.com/index.php/api/taoke/get_first_free_goods',
                            //url:'http://appapitest.ushopvip.com/api/taoke/get_first_free_goods',
                            url:'http://dfgapp.ushopvip.com/api/taoke/get_first_free_goods',
                            type:"post",
                                dataType:"json",
                            data:{
                            }
                            }).done(function(res){
                            _this.lists=[].concat(_this.lists,res.data.list);
                            _this.loading = false;
                     })
                        _this.getgoodsSwitch(_this.plat);
                    }
                    else{
                        alert("您已下过首单,不可再次购买,请浏览其他商品吧~");
@@ -398,13 +663,13 @@
                        }, 1000 )
                    }
                })
            },
        },
        mounted: function () {
            this.getGoodsList();
            this.getIsSd();
            var that=this;
            this.touch();
            document.addEventListener('UniAppJSBridgeReady', function() {
            that.isUniReady=true;
            });
public/html/js/uni-webview-js.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1 @@
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(e=e||self).uni=n()}(this,(function(){"use strict";try{var e={};Object.defineProperty(e,"passive",{get:function(){!0}}),window.addEventListener("test-passive",null,e)}catch(e){}var n=Object.prototype.hasOwnProperty;function i(e,i){return n.call(e,i)}var t=[];function r(){return window.__dcloud_weex_postMessage||window.__dcloud_weex_}var o=function(e,n){var i={options:{timestamp:+new Date},name:e,arg:n};if(r()){if("postMessage"===e){var o={data:[n]};return window.__dcloud_weex_postMessage?window.__dcloud_weex_postMessage(o):window.__dcloud_weex_.postMessage(JSON.stringify(o))}var a={type:"WEB_INVOKE_APPSERVICE",args:{data:i,webviewIds:t}};window.__dcloud_weex_postMessage?window.__dcloud_weex_postMessageToService(a):window.__dcloud_weex_.postMessageToService(JSON.stringify(a))}if(!window.plus)return window.parent.postMessage({type:"WEB_INVOKE_APPSERVICE",data:i,pageId:""},"*");if(0===t.length){var d=plus.webview.currentWebview();if(!d)throw new Error("plus.webview.currentWebview() is undefined");var s=d.parent(),w="";w=s?s.id:d.id,t.push(w)}if(plus.webview.getWebviewById("__uniapp__service"))plus.webview.postMessageToUniNView({type:"WEB_INVOKE_APPSERVICE",args:{data:i,webviewIds:t}},"__uniapp__service");else{var u=JSON.stringify(i);plus.webview.getLaunchWebview().evalJS('UniPlusBridge.subscribeHandler("'.concat("WEB_INVOKE_APPSERVICE",'",').concat(u,",").concat(JSON.stringify(t),");"))}},a={navigateTo:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.url;o("navigateTo",{url:encodeURI(n)})},navigateBack:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.delta;o("navigateBack",{delta:parseInt(n)||1})},switchTab:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.url;o("switchTab",{url:encodeURI(n)})},reLaunch:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.url;o("reLaunch",{url:encodeURI(n)})},redirectTo:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.url;o("redirectTo",{url:encodeURI(n)})},getEnv:function(e){r()?e({nvue:!0}):window.plus?e({plus:!0}):e({h5:!0})},postMessage:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};o("postMessage",e.data||{})}},d=/uni-app/i.test(navigator.userAgent),s=/Html5Plus/i.test(navigator.userAgent),w=/complete|loaded|interactive/;var u=window.my&&navigator.userAgent.indexOf(["t","n","e","i","l","C","y","a","p","i","l","A"].reverse().join(""))>-1;var g=window.swan&&window.swan.webView&&/swan/i.test(navigator.userAgent);var v=window.qq&&window.qq.miniProgram&&/QQ/i.test(navigator.userAgent)&&/miniProgram/i.test(navigator.userAgent);var c=window.tt&&window.tt.miniProgram&&/toutiaomicroapp/i.test(navigator.userAgent);var m=window.wx&&window.wx.miniProgram&&/micromessenger/i.test(navigator.userAgent)&&/miniProgram/i.test(navigator.userAgent);var p=window.qa&&/quickapp/i.test(navigator.userAgent);var f=window.ks&&window.ks.miniProgram&&/micromessenger/i.test(navigator.userAgent)&&/miniProgram/i.test(navigator.userAgent);var l=window.tt&&window.tt.miniProgram&&/Lark|Feishu/i.test(navigator.userAgent);var _=window.jd&&window.jd.miniProgram&&/micromessenger/i.test(navigator.userAgent)&&/miniProgram/i.test(navigator.userAgent);var E=window.xhs&&window.xhs.miniProgram&&/xhsminiapp/i.test(navigator.userAgent);for(var h,P=function(){window.UniAppJSBridge=!0,document.dispatchEvent(new CustomEvent("UniAppJSBridgeReady",{bubbles:!0,cancelable:!0}))},b=[function(e){if(d||s)return window.__dcloud_weex_postMessage||window.__dcloud_weex_?document.addEventListener("DOMContentLoaded",e):window.plus&&w.test(document.readyState)?setTimeout(e,0):document.addEventListener("plusready",e),a},function(e){if(m)return window.WeixinJSBridge&&window.WeixinJSBridge.invoke?setTimeout(e,0):document.addEventListener("WeixinJSBridgeReady",e),window.wx.miniProgram},function(e){if(v)return window.QQJSBridge&&window.QQJSBridge.invoke?setTimeout(e,0):document.addEventListener("QQJSBridgeReady",e),window.qq.miniProgram},function(e){if(u){document.addEventListener("DOMContentLoaded",e);var n=window.my;return{navigateTo:n.navigateTo,navigateBack:n.navigateBack,switchTab:n.switchTab,reLaunch:n.reLaunch,redirectTo:n.redirectTo,postMessage:n.postMessage,getEnv:n.getEnv}}},function(e){if(g)return document.addEventListener("DOMContentLoaded",e),window.swan.webView},function(e){if(c)return document.addEventListener("DOMContentLoaded",e),window.tt.miniProgram},function(e){if(p){window.QaJSBridge&&window.QaJSBridge.invoke?setTimeout(e,0):document.addEventListener("QaJSBridgeReady",e);var n=window.qa;return{navigateTo:n.navigateTo,navigateBack:n.navigateBack,switchTab:n.switchTab,reLaunch:n.reLaunch,redirectTo:n.redirectTo,postMessage:n.postMessage,getEnv:n.getEnv}}},function(e){if(f)return window.WeixinJSBridge&&window.WeixinJSBridge.invoke?setTimeout(e,0):document.addEventListener("WeixinJSBridgeReady",e),window.ks.miniProgram},function(e){if(l)return document.addEventListener("DOMContentLoaded",e),window.tt.miniProgram},function(e){if(_)return window.JDJSBridgeReady&&window.JDJSBridgeReady.invoke?setTimeout(e,0):document.addEventListener("JDJSBridgeReady",e),window.jd.miniProgram},function(e){if(E)return window.xhs.miniProgram},function(e){return document.addEventListener("DOMContentLoaded",e),a}],y=0;y<b.length&&!(h=b[y](P));y++);h||(h={});var B="undefined"!=typeof uni?uni:{};if(!B.navigateTo)for(var S in h)i(h,S)&&(B[S]=h[S]);return B.webView=h,B}));
public/html/mttran.html
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,54 @@
<!DOCTYPE html>
<html>
    <meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="App-Config" content="fullscreen=yes,useHistoryState=yes,transition=yes">
    <meta content="yes" name="apple-mobile-web-app-capable"><meta content="yes" name="apple-touch-fullscreen">
    <meta content="telephone=no,email=no" name="format-detection">
    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover">
    <script type="text/javascript" src="https://public.ffquan.cn/lib/jquery-1.12.4.min.js"></script>
    <script type="text/javascript" src="./js/uni-webview-js.js"></script>
<head>
    <title>美团红包</title>
    <style>
    </style>
</head>
<body>
    <div id="mtcont">
    </div>
</body>
</html>
<script type="text/javascript" src="https://cdn.staticfile.org/vue/2.6.11/vue.min.js"></script>
<script>
    new Vue({
        el: '#mtcont',
        data:{
           cmsUrl:'',
           loading:false,
           cmsurl:''
        },
        methods:{
           getEn:function()
           {
                // uni.getEnv(function(res){
                //      alert(JSON.stringify(res));
                // });
                const userAgent = navigator.userAgent.toLowerCase();
                const iswx = userAgent.match(/weixin/i);
                if(iswx)
                {
                    window.location.href="https://click.meituan.com/t?t=1&c=2&p=jqgHar5zidEL";
                }
                else{
                    window.location.href="imeituan://www.meituan.com/web?lch=cps:waimai:3:65c5f4b9271221c79eae104d969a48a3:94691jutuike123456:33:85459&url=https%3A%2F%2Fclick.meituan.com%2Ft%3Ft%3D1%26c%3D2%26p%3Dhl8Lar5zidEL";
                }
           }
        },
        mounted:function()
        {
           this.getEn();
        }
    })
</script>
public/html/signin.html
@@ -191,7 +191,7 @@
      </div>
    </div>
  </transition>
  <van-overlay :show="titleCopyTipsVisible" @click="titleCopyTipsVisible = false">
  <van-overlay :show="titleCopyTipsVisible" @click="diaCloese()">
    <div
      class="wrapper"
      style="display:flex;align-items:center;justify-content:center;height: 100%;"
@@ -341,6 +341,16 @@
    this.touch();
  },
  methods: {
    diaCloese:function()
    {
       this.titleCopyTipsVisible=false;
       uni.postMessage({
                data: {
                  action: 'totb',
                  tburl:this.sign_info.url
                }
        })
    },
    touch:function()
            {
                const box = document.querySelector('.box')
@@ -405,10 +415,16 @@
                })
            },
    toSignIn: function() {
      if(!this.sign_info.tpwd) {
      if(!this.sign_info.url) {
        return;
      }
      SpaUtils.copy(this.sign_info.tpwd, "复制口令成功,请打开淘宝浏览领取签到红包");
      uni.postMessage({
                data: {
                  action: 'totb',
                  tburl:this.sign_info.url
                }
        })
      //SpaUtils.copy(this.sign_info.tpwd, "复制口令成功,请打开淘宝浏览领取签到红包");
    },
    getUrlPar:function(name)
            {
public/html/tb_minishop.html
@@ -22,7 +22,9 @@
  <body>
    <template id="c-card">
  <div class="card row _ flex-c">
    <img class="cover" v-lazy="item.itempic" v-if="item.itempic"/>
    <img
      class="cover"
@@ -59,9 +61,10 @@
    </div>
  </div>
</template>
    <div id="single-page-app" v-cloak>
      <div class="appback">
        <image  @click="topBack" class="appback-img" src="https://yanfeiobpub.obs.cn-east-3.myhuaweicloud.com/dfg/h5return_backIcon.png"></image>
    </div>
      <van-pull-refresh v-model="refreshing" @refresh="reGetListData">
        <van-list class="page-container" v-bind:loading="listData.loading" v-bind:finished="listData.finished" v-on:load="getListData"><!-- åº•部提示 -->
          <template v-slot:finished v-if="listData.list.length"><span class="list-item-loading">-优惠到底啦-</span></template>
@@ -233,6 +236,14 @@
        onSearch() {
          methods.backTopAndReGetListData();
        },
        topBack()
            {
                uni.postMessage({
                      data: {
                         action: 'back'
                      }
                     });
            },
        getUrlPar(name)
            {
                var reg=new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
@@ -401,6 +412,18 @@
  </body>
</html>
<style>
  .appback
{
    height: 0.5rem;
    position: absolute;
    top: 0.5rem;
    left: 0.4rem;
    z-index: 999;
}
.appback-img
{
    height: 100%;
}
  .f_div
  {
    background: #A429F3;
public/html/zsz_act.html
@@ -2,22 +2,18 @@
<html>
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="App-Config" content="fullscreen=yes,useHistoryState=yes,transition=yes">
    <meta content="yes" name="apple-mobile-web-app-capable">
    <meta content="yes" name="apple-touch-fullscreen">
    <meta content="yes" name="apple-mobile-web-app-capable"><meta content="yes" name="apple-touch-fullscreen">
    <meta content="telephone=no,email=no" name="format-detection">
    <meta name="viewport"
          content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover">
    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover">
    <script type="text/javascript" src="https://public.ffquan.cn/lib/jquery-1.12.4.min.js"></script>
    <script type="text/javascript" src="https://cdn.staticfile.org/vue/2.6.11/vue.min.js"></script>
    <script type="text/javascript" src="https://public.ffquan.cn/lib/vue-lazyload.js"></script>
    <script type="text/javascript" src="https://public.ffquan.cn/lib/swiper/js/swiper.min.js"></script>
    <script type="text/javascript" src="https://public.ffquan.cn/lib/taobaoCode/taobaoCode.js?v=1.2.1"></script>
    <script type="text/javascript" src="https://public.ffquan.cn/lib/clipboard.min.js"></script>
    <script type="text/javascript" src="https://img.ushopvip.com/js/uni-webview-js.js"></script>
    <script type="text/javascript" src="./js/uni-webview-js.js"></script>
    <title>折上折</title>
    <script>
@@ -34,87 +30,86 @@
</head>
<body>
<div id="appMain">
    <div v-if="sys == null" class="sys"></div>
  <!--   <div class="loading" v-if="loading">
        <span>加载中...</span>
    </div> -->
    <div class="title">
        <img src="data:image/png;base64,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"
             alt="今日折上折">
    </div>
    <section class="banner">
        <span class="desc">
            <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAFqADAAQAAAABAAAAFgAAAAAcITNaAAAB2ElEQVQ4EbWVu07DMBiFCSodQGJh64yQUHmBthJFLH0AunVIKx7EL8LWGSHYWFgrdhYQQ8XARBcuBYTU8J3UBpc4TUHiSCe2/8ux4/x2oqU5SJJkB/cBbMEtG3pDew6Poyi6srbFGgQb8AQ+wjzIp5hGoSpBZWjgGPrQ+M4y5DP4ysEJ5IBH0McFg0O4DSuW6ssmnw/lZsUxGi/qgX4MV4KrwCgf7ELFOpiZeKx1+Gq9I9rdmYCpUBN7M8euHEEa9TSGTgmeQWEC40ByDfu7ZS3gj/EpVziFJb1SFT5DQfuWeX1sHTktOgFhbYvbc2lVlwlqwzUb3Kc2P34mMp54tjevn3ZtTt/apdUu8VDxC2M4SHvzH3usSG+lRQ3hAOFELZTGKmxpK9zGq04rGDPA7m8Fwy+optMPSqtylIYw0qyarQi3BLwUBfl+bYXOvr70BlyH93AGvOolq9jHuAndQiL6Q+i2T7nSEK61FQY69Kb23z8R6DkRWrNQuRVNg1Cm3CSsA6KiFoIHZAHh2OZKY3pAlMSg8EjniZPbhK6yvo+0S8BpoIMuli7MnEIvvvgSUjAi/3NteuKGSUKX+d8ueveKdoIG4vrtPME8yJf7a1KR54LEP/9MPwHLqitCaaKzMAAAAABJRU5ErkJggg=="
                 alt="更新时间">
            å·²äºŽ{{time}} 0点 å…¨ç½‘æ›´æ–°
        </span>
    </section>
    <div class="category">
        <div class="items">
            <span :class="active == 0 ? 'act':''" @click="handleSwiperNav(0, $event)">推荐</span>
            <span :class="active == i.id ? 'act':''" v-for="i in nav" :key="i.id"
                  @click="handleSwiperNav(i.id, $event)">
                {{i.title}}
            </span>
        </div>
    </div>
    <div v-if="active == 0">
        <h3 class="qiang"><span>今日必抢</span><span class="zsz">折上再省不止5折</span></h3>
        <div class="goods-wrap">
            <section class="goods">
                <a v-for="v in today" :key="v.id" v-on:click="handleCdetailFavorite(v)">
                    <div class="">
                        <img :src="v.pic"
                             class="fadeIn ">
                        <h5>{{v.dtitle}}</h5>
                        <div class="price___dfbCD">Â¥<span>{{v.jiage}}</span><u>Â¥{{v.yuanjia}}</u></div>
                        <div class="discount___1S9U2">
                            <span>淘抢购</span>
                            <span>折上{{zhe(v)}}折</span>
                        </div>
                    </div>
                </a>
            </section>
        </div>
    </div>
    <div>
        <div v-if="active == 0" class="choiceTitle___3ki4D">
            <img src="https://cmsstaticnew.dataoke.com/dist/static/double-discount-choice@2x.d2d5b409.png" alt="为你精选">
        </div>
        <div class="ulist">
            <a v-for="g in goodsItem" :key="g.id" v-on:click="handleCdetailFavorite(g)">
                <div class="detail___3ZQFW">
                    <img :src="g.pic"
                         class="fadeIn picture___r4a1j">
                    <div class="choiceInfo___3ZuEa">
                        <div class="other___2Mv8Q">
                            <h2>
                                <div class="shoplabel___1_Nv0"><img
                                        src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC4AAAAaCAYAAADIUm6MAAAE60lEQVRYw9WYbVBUVRjHz+gH/OCHdCY/WE1OGTNWU40ibIqSE6IGZpoGgrGUyAjrYkrI2yqIKGjN+FLONOk4aI6azZqZmu+ama9oElmOGApqvrK6KjBp8uvDc5a7d3eBJZsp78xv9p7/eZ7/8+y95yxnUEopRZ4tFIfdicPuxjGFoCnQODqKXdOhHDcOu5M8W6hqaTonw0VOBo8ILvJsoYqsdCfTJ/NIkZXuVNjT3NgnEZg0H9qLm/Qv01r9NLdi8kRMzMyFBw/+OWfPGF6VJ6GpEepqwbkebGnmWtVnAKCsxKzv3in6mi/w60+jmPgeJvJyeKjrbLXhVVVlnvthv+hfroWfK+HuXdGrq2Xs4fp10S9elHHpXHz7VCRbwZpsJiUlMA6HGNbVtR5jTYHkZMFqhdRUKJsPDY3Q3AxTbHDgQMcexpIlkGz1IhlF4gRaGN8OM/LEqLaONvMSA3DqlOQWzobsXJhXBnUXRCtfJWMPRytE37ZdxpMz/HwV4xIJmiy9jM7XBp8TPwFWrITGRsktKjHmDh6CK1fhw1xzzrqvRF+8tFVfxVsJ+BOv8dGnZkvxc7UEzvMhv0i+pPflKG7dv736Xihix2HiSAVU/WrmF03171K8qSnwvIdl5eK1co3EX7gEly7LfV4RrHNCzbngKSiG2He8GIci5m1MuG/z0Nem78QrNgE+WQax8VBxUuayC2Hnvo75FX+Eb5+KIaMxYcuBzHxhqsYz3uFVsHSRofuSlG72HJ4A1TWSN20mbN8r95+VQ4pdOHRMtKUrDO3Icb2h5+PbpyJyFEExaBTUeK3Xz1d7zb/pg5deUAqXrxp59nzYtkdv1I+NWM9DmbXA0HbtF62gzFxn0CgUEXFgaYUIjSUO8krFpEH/OtTfhOh4HTvSB52zeoPRcHOzfKbnwtbdcj9zgeG/Tb+F/DIjf4duPHeeX1+Kfm/QLjFJcL1eP6WFcPiE3G/Z03ZeUibccEHxIjiq13jqDNi8S+5dt+CPq0JjU+ta9lw/b8VLw2mTV8dA1WkxOHgcXh4Bce/DnQbRPl3Zdn7YSPk8Vinx1izYtKtjm3P6HD9fRZ+h0CdGM9TM4Hij6TPnYMBYWuJthXD/L73e18LzAfI9vBIHt/Sv1ZBE2KgPUcVLICoBosbDTn0MKFyktQTYfVC0zNk+njEoer9OQJKy4Io+7FSfB8tY/5hpc+HefYnZexgiAsQ8Fw3rt0pMRZVoX++Q8QclRtw3+i1kFhvaZr2JbUV+voqnh2DixTgo3yBHVIDvj0Lf0fjFeUiYJusS4MZNmFoCvfTcC7HwrS5+pwFGpIq+aqNoC8sNH89byJgt42ejoVK/7Xez/eoqeg6GnlEGx/Vh6N59mL8cnnzNPN8zCsnxou8Y2HfM68/6Yolbu0XGN90wxg5PRAmj7fJgmpvly15zQdOfEuu+A9fq4bY+8l68Ar2H+dVX9IikhccjIXUW/PgTRE6QcSC841u0QWCbA7/VQO8RMm8ZDwdOQP94THV6RMKUEqi/1famrDwNUdaA9RXdBrjpNgAzA/HXvHhME2iu+0D/uNbiuw+EXsPgmeH+PBXdVg9uRVeLk64WhAiN5T8i6PpORUh4KF3CXYT0xyDch/7tEGxcsP5tzHcJdxESrv+3EhIeSucwJ53C3HTqx/+TMDedw5yepv8GV1+TBUuIRhcAAAAASUVORK5CYII=">
                                </div>
                                <span>{{g.title}}</span></h2>
                            <div class="coupon___2SVZi" style="float: left; margin-right:10px"><span>券</span>{{g.quanJine}}元</div>
                            <div class="coupon___2SVZi" style="background: #A429F3;"><span style="color: #A429F3;">返</span>{{g.fanli}}元</div>
                        </div>
                        <div class="price___dfbCD">Â¥<span>{{g.jiage}}</span><u style="text-decoration:line-through">聚划算价 Â¥{{g.yuanjia}}</u></div>
                        <div class="operation___3KazI"><span>已抢{{digitalAbbNumber({num:g.xiaoliang})}}</span>
                            <button>马上抢</button>
                        </div>
    <div class="box">
        <div class="list">
            <div id="appMain">
             <div v-if="sys==null" class="sys"></div>
                <image v-on:click="topBack()" class="appback-img" src="https://yanfeiobpub.obs.cn-east-3.myhuaweicloud.com/dfg/h5return_backIcon.png"></image>
                <div class="title">
                    <img src="data:image/png;base64,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"
                        alt="今日折上折">
                </div>
                <section class="banner">
                    <span class="desc">
                        <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAFqADAAQAAAABAAAAFgAAAAAcITNaAAAB2ElEQVQ4EbWVu07DMBiFCSodQGJh64yQUHmBthJFLH0AunVIKx7EL8LWGSHYWFgrdhYQQ8XARBcuBYTU8J3UBpc4TUHiSCe2/8ux4/x2oqU5SJJkB/cBbMEtG3pDew6Poyi6srbFGgQb8AQ+wjzIp5hGoSpBZWjgGPrQ+M4y5DP4ysEJ5IBH0McFg0O4DSuW6ssmnw/lZsUxGi/qgX4MV4KrwCgf7ELFOpiZeKx1+Gq9I9rdmYCpUBN7M8euHEEa9TSGTgmeQWEC40ByDfu7ZS3gj/EpVziFJb1SFT5DQfuWeX1sHTktOgFhbYvbc2lVlwlqwzUb3Kc2P34mMp54tjevn3ZtTt/apdUu8VDxC2M4SHvzH3usSG+lRQ3hAOFELZTGKmxpK9zGq04rGDPA7m8Fwy+optMPSqtylIYw0qyarQi3BLwUBfl+bYXOvr70BlyH93AGvOolq9jHuAndQiL6Q+i2T7nSEK61FQY69Kb23z8R6DkRWrNQuRVNg1Cm3CSsA6KiFoIHZAHh2OZKY3pAlMSg8EjniZPbhK6yvo+0S8BpoIMuli7MnEIvvvgSUjAi/3NteuKGSUKX+d8ueveKdoIG4vrtPME8yJf7a1KR54LEP/9MPwHLqitCaaKzMAAAAABJRU5ErkJggg=="
                            alt="更新时间">
                        å·²äºŽ{{time}} 0点 å…¨ç½‘æ›´æ–°
                    </span>
                </section>
                <div class="category">
                    <div class="items">
                        <span :class="active == 0 ? 'act':''" @click="handleSwiperNav(0, $event)">推荐</span>
                        <span :class="active == i.id ? 'act':''" v-for="i in nav" :key="i.id"
                            @click="handleSwiperNav(i.id, $event)">
                            {{i.title}}
                        </span>
                    </div>
                </div>
            </a>
                <div v-if="active == 0">
                    <h3 class="qiang"><span>今日必抢</span><span class="zsz">折上再省不止5折</span></h3>
                    <div class="goods-wrap">
                        <section class="goods">
                            <a v-for="v in today" :key="v.id" v-on:click="handleCdetailFavorite(v)">
                                <div class="">
                                    <img :src="v.pic"
                                        class="fadeIn ">
                                    <h5>{{v.dtitle}}</h5>
                                    <div class="price___dfbCD">Â¥<span>{{v.jiage}}</span><u>Â¥{{v.yuanjia}}</u></div>
                                    <div class="discount___1S9U2">
                                        <span>淘抢购</span>
                                        <span>折上{{zhe(v)}}折</span>
                                    </div>
                                </div>
                            </a>
                        </section>
                    </div>
                </div>
                <div>
                    <div v-if="active == 0" class="choiceTitle___3ki4D">
                        <img src="https://cmsstaticnew.dataoke.com/dist/static/double-discount-choice@2x.d2d5b409.png" alt="为你精选">
                    </div>
                    <div class="ulist">
                        <a v-for="g in goodsItem" :key="g.id" v-on:click="handleCdetailFavorite(g)">
                            <div class="detail___3ZQFW">
                                <img :src="g.pic"
                                    class="fadeIn picture___r4a1j">
                                <div class="choiceInfo___3ZuEa">
                                    <div class="other___2Mv8Q">
                                        <h2>
                                            <div class="shoplabel___1_Nv0"><img
                                                    src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC4AAAAaCAYAAADIUm6MAAAE60lEQVRYw9WYbVBUVRjHz+gH/OCHdCY/WE1OGTNWU40ibIqSE6IGZpoGgrGUyAjrYkrI2yqIKGjN+FLONOk4aI6azZqZmu+ama9oElmOGApqvrK6KjBp8uvDc5a7d3eBJZsp78xv9p7/eZ7/8+y95yxnUEopRZ4tFIfdicPuxjGFoCnQODqKXdOhHDcOu5M8W6hqaTonw0VOBo8ILvJsoYqsdCfTJ/NIkZXuVNjT3NgnEZg0H9qLm/Qv01r9NLdi8kRMzMyFBw/+OWfPGF6VJ6GpEepqwbkebGnmWtVnAKCsxKzv3in6mi/w60+jmPgeJvJyeKjrbLXhVVVlnvthv+hfroWfK+HuXdGrq2Xs4fp10S9elHHpXHz7VCRbwZpsJiUlMA6HGNbVtR5jTYHkZMFqhdRUKJsPDY3Q3AxTbHDgQMcexpIlkGz1IhlF4gRaGN8OM/LEqLaONvMSA3DqlOQWzobsXJhXBnUXRCtfJWMPRytE37ZdxpMz/HwV4xIJmiy9jM7XBp8TPwFWrITGRsktKjHmDh6CK1fhw1xzzrqvRF+8tFVfxVsJ+BOv8dGnZkvxc7UEzvMhv0i+pPflKG7dv736Xihix2HiSAVU/WrmF03171K8qSnwvIdl5eK1co3EX7gEly7LfV4RrHNCzbngKSiG2He8GIci5m1MuG/z0Nem78QrNgE+WQax8VBxUuayC2Hnvo75FX+Eb5+KIaMxYcuBzHxhqsYz3uFVsHSRofuSlG72HJ4A1TWSN20mbN8r95+VQ4pdOHRMtKUrDO3Icb2h5+PbpyJyFEExaBTUeK3Xz1d7zb/pg5deUAqXrxp59nzYtkdv1I+NWM9DmbXA0HbtF62gzFxn0CgUEXFgaYUIjSUO8krFpEH/OtTfhOh4HTvSB52zeoPRcHOzfKbnwtbdcj9zgeG/Tb+F/DIjf4duPHeeX1+Kfm/QLjFJcL1eP6WFcPiE3G/Z03ZeUibccEHxIjiq13jqDNi8S+5dt+CPq0JjU+ta9lw/b8VLw2mTV8dA1WkxOHgcXh4Bce/DnQbRPl3Zdn7YSPk8Vinx1izYtKtjm3P6HD9fRZ+h0CdGM9TM4Hij6TPnYMBYWuJthXD/L73e18LzAfI9vBIHt/Sv1ZBE2KgPUcVLICoBosbDTn0MKFyktQTYfVC0zNk+njEoer9OQJKy4Io+7FSfB8tY/5hpc+HefYnZexgiAsQ8Fw3rt0pMRZVoX++Q8QclRtw3+i1kFhvaZr2JbUV+voqnh2DixTgo3yBHVIDvj0Lf0fjFeUiYJusS4MZNmFoCvfTcC7HwrS5+pwFGpIq+aqNoC8sNH89byJgt42ejoVK/7Xez/eoqeg6GnlEGx/Vh6N59mL8cnnzNPN8zCsnxou8Y2HfM68/6Yolbu0XGN90wxg5PRAmj7fJgmpvly15zQdOfEuu+A9fq4bY+8l68Ar2H+dVX9IikhccjIXUW/PgTRE6QcSC841u0QWCbA7/VQO8RMm8ZDwdOQP94THV6RMKUEqi/1famrDwNUdaA9RXdBrjpNgAzA/HXvHhME2iu+0D/uNbiuw+EXsPgmeH+PBXdVg9uRVeLk64WhAiN5T8i6PpORUh4KF3CXYT0xyDch/7tEGxcsP5tzHcJdxESrv+3EhIeSucwJ53C3HTqx/+TMDedw5yepv8GV1+TBUuIRhcAAAAASUVORK5CYII=">
                                            </div>
                                            <span>{{g.title}}</span></h2>
                                        <div class="coupon___2SVZi" style="float: left; margin-right:10px"><span>券</span>{{g.quanJine}}元</div>
                                        <div class="coupon___2SVZi" style="background: #A429F3;"><span style="color: #A429F3;">返</span>{{g.fanli}}元</div>
                                    </div>
                                    <div class="price___dfbCD">Â¥<span>{{g.jiage}}</span><u style="text-decoration:line-through">聚划算价 Â¥{{g.yuanjia}}</u></div>
                                    <div class="operation___3KazI"><span>已抢{{digitalAbbNumber({num:g.xiaoliang})}}</span>
                                        <button>马上抢</button>
                                    </div>
                                </div>
                            </div>
                        </a>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
</body>
</html>
<style>
</style>
<script src="https://polyfill.io/v2/polyfill.min.js?features=IntersectionObserver"></script>
<script>
    (function () {
        var size1=document.body.clientWidth;
@@ -140,9 +135,84 @@
            today: [],
            loading: true,
            sys: {},
            //posturl:"http://dfg.shop.com",
            //:"http://appapitest.ushopvip.com",
            //posturl:"http://dfgapp.ushopvip.com",
            time:$time.getFullYear()+'-'+($time.getMonth()+1)+'-'+$time.getDate() 
        },
        methods: {
            topBack:function()
            {
                // uni.getEnv(function(res){
                //     alert(JSON.stringify(res));
                // });
                uni.postMessage({
                      data: {
                         action: 'back'
                      }
                });
            },
            touch:function()
            {
                const box = document.querySelector('.box')
                const list = document.querySelector('.list');
                // æŒ‰ä¸‹å±å¹•的位置
                let touchStartPosition = 0
                // touchstart事件
                box.addEventListener('touchstart', function (e) {
                    let touch = e.touches[0]
                    touchStartPosition = touch.pageY
                })
                // touchmove事件
                box.addEventListener('touchmove', function (e) {
                    let touch = e.touches[0]
                    // åˆ—表的top值等于列表相对于box的偏移量+滑动的距离
                    let pySize= list.offsetTop + touch.pageY - touchStartPosition;
                    if(pySize>=110)
                    {
                      return;
                    }
                    if(pySize<0)
                    {
                        return;
                    }
                    var scroll = document.getElementsByClassName('contscore')
                        var srollPos = $('.contscore').scrollTop(); //滚动条距顶部距离(页面超出窗口的高度)
                    if(srollPos>0)
                    {
                        return;
                    }
                    list.style.top =pySize + 'px';
                    // å®žçŽ°å¹³æ»‘çš„æ»‘åŠ¨
                    touchStartPosition = touch.pageY
                })
                // touchend事件
                box.addEventListener('touchend', function (e) {
                    let top = list.offsetTop
                    if (top > 70) {
                        // åœ¨æ­¤å¤„调用刷新后的回调
                        console.log('刷新');
                        location.reload();
                    }
                    if(top<0)
                    {
                        list.style.top=0;
                    }
                    if (top > 0) {
                        // é€šè¿‡å®šæ—¶å™¨å¹³æ»‘的将list的top = 0
                        let timer = setInterval(() => {
                            top=top-5;
                        list.style.top = top + 'px'
                        if (top <= 0) {
                            list.style.top=0;
                            clearInterval(timer)
                        }
                        },1)
                    }
                })
            },
            zhe: function (v) {
                return Number(v.discount * 10).toFixed(1);
            },
@@ -220,9 +290,7 @@
                    headers:{
                        "token":this.getUrlPar("token")
                    },
                    url:'http://dfgapp.ushopvip.com/api/Activity/zsz_goods_list',
                    //url:'http://dfg.shop.com/api/Activity/zsz_goods_list',
                    //url:'http://appapitest.ushopvip.com/api/Activity/zsz_goods_list',
                    url:'/api/Activity/zsz_goods_list',
                    type:"post",
                    dataType:"json",
                    data:{
@@ -267,11 +335,34 @@
            }
        },
        mounted: function () {
            this.init()
            this.init();
            this.touch();
        },
    })
</script>
<style>
.appback-img
{
    position: absolute;
    top: 0.6rem;
    z-index: 999;
    width: 0.6rem;
    left: 0.3rem;
}
    .box
        {
            position:absolute;
            width: 100%;
            height: 100%;
            background: url(https://yanfeiobpub.obs.cn-east-3.myhuaweicloud.com/dfg/h5loading.gif) no-repeat fixed top;
            background-size: 70px 70px;
        }
        .list{
            position: relative;
            top: 0;
            width: 100%;
        }
    html, body {
        padding: 0;
        margin: 0;