찾다
PHP 프레임워크ThinkPHPThinkphp5를 기반으로 교섭활동과 관련된 PHP 디자인을 소개합니다.

이 글은 Thinkphp5를 기반으로 한 PHP 교섭 활동의 디자인을 소개합니다. 필요한 친구들이 참고할 수 있기를 바랍니다.

Thinkphp5를 기반으로 한 교섭 활동과 관련된 PHP 디자인

최근 우리 회사 프로젝트에서 새로운 사용자를 유치하기 위해 많은 활동이 시작되었습니다. 우리 프로젝트는 WeChat에서 탐색 가능합니다. 사용자가 찾아보고 액세스할 수 있습니다.

일반 설명: 특가 활동 목록 페이지에 들어가서 관심 있는 제품을 선택하세요. 제품 사진을 클릭하면 '지금 구매'를 클릭하여 웹몰에서 판매되는 제품의 가격과 세부 매개변수를 볼 수 있습니다. 목록의 해당 제품 로고 아래에 교섭 페이지에 들어갈 수 있습니다. 이 페이지에는 두 개의 주요 버튼이 있는데, 하나는 '부자에게 도움 요청'(공유를 안내하려면 클릭), '구매 구매'(구매 가능)입니다. 특정 가격으로 인하 후 구매), 두 번째에는 가격 진행 기사 및 기타 정보가 포함되어 있으며, 사용자는 이를 친구 서클에 공유하여 친구가 흥정을 하도록 유도할 때 도움을 주는 친구가 활성화됩니다. 이 사이트의 사용자가 아닌 경우, 도움을 주는 친구가 이 사이트의 회원이 되며 공유 사용자가 됩니다. 그런 다음 부하 직원은 제품 운영 및 조달을 기반으로 각 제품에 대해 논의하고 활성 가격과 최소 가격을 정의합니다. 흥정할 상품에 대한 가격은 물론, 매번 인하될 수 있는 가격대와 참가인원 등 (상품의 원래 가격은 3,000원, 최저가는 1,000원이다. 그러면 그 가격은 삭감 가능 인원은 500명이므로 평균 1인당 4위안을 삭감할 수 있습니다. 흥정 가격의 변동으로 인해 사용자의 참여 관심도가 높아질 수 있습니다. 사용자가 지정된 가격대에 도달하여 구매하면 주문 확인 페이지로 이동한 다음 주문을 하고 일련의 프로세스에 대한 비용을 지불하게 됩니다.

페이지 스크린샷:

Thinkphp5를 기반으로 교섭활동과 관련된 PHP 디자인을 소개합니다.

Thinkphp5를 기반으로 교섭활동과 관련된 PHP 디자인을 소개합니다.

관련 구현:

몇 장의 사진을 보면 모든 사람들이 관련된 관련 정보도 고려할 것이라고 생각합니다.

이벤트에 참여하는 상품을 공개하고자 한다면, 상품 차별화 표현이 있을 예정입니다. 데이터베이스 디자인에서 차별화된 필드를 추가하기 위해 상품 테이블을 수정하지 않고, 새로운 데이터 테이블을 생성했습니다. 교섭 활동 정보와 관련된 정보를 게시하는 특별한 장소입니다.

백엔드 프론트엔드 디스플레이를 살펴보겠습니다. 전문적인 프론트엔드 작업을 거치지 않고 그냥 백엔드 제품 목록 모듈 코드를 직접 복사해서 디자인한 것입니다. My My Data Table Design :

#活动商品设置表:
CREATE TABLE `hp_activity_bargain` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  `product_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '商品ID',
  `product_name` varchar(200) COLLATE utf8_unicode_ci NOT NULL COMMENT '商品名称',
  `activity_money` decimal(7,2) unsigned NOT NULL DEFAULT '0.00' COMMENT '活动价',
  `bargain_section` varchar(20) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '砍价区间',
  `bargain_section2` varchar(20) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '砍价区间2【用户线上砍价(新用户砍价区间)】',   #忽略,此处是迭代后期地推而加上的
  `join_count` smallint(3) unsigned NOT NULL DEFAULT '0' COMMENT '参与人数',
  `product_desc` varchar(80) COLLATE utf8_unicode_ci NOT NULL COMMENT '活动商品描述',
  `attr1_id` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT 'attr1属性',
  `attr2_id` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT 'attr2属性',
  `type` tinyint(1) NOT NULL DEFAULT '0' COMMENT '0是线上,1是地推',
  PRIMARY KEY (`id`),
  KEY `product_id` (`product_id`),
  KEY `attr2_id` (`attr2_id`),
  KEY `attr1_id` (`attr1_id`),
  KEY `type` (`type`)
) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
RREE
#用户参与进度信息表
CREATE TABLE `hp_activity_bargainirg` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `activity_bargain_id` int(10) unsigned NOT NULL COMMENT 'activity_prodcuts主键id',
  `product_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '参与活动的商品',
  `attr1_id` smallint(5) unsigned NOT NULL COMMENT 'attr1属性id',
  `attr2_id` smallint(5) unsigned NOT NULL COMMENT 'attr2属性id',
  `user_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '砍价商品发起的用户ID',
  `bargain_count` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT '被砍价次数',
  `deal_money` decimal(7,2) unsigned NOT NULL DEFAULT '0.00' COMMENT '最终交易价格',
  `create_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '发起时间',
  `is_addorder` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否下单(0:未下单,1已下单)',
  `type` tinyint(1) NOT NULL DEFAULT '0' COMMENT '0是线上,1是地推',    #可以忽略,后期地推加上去的
  PRIMARY KEY (`id`),
  KEY `activity_bargain_id` (`activity_bargain_id`),
  KEY `attr1_id` (`attr1_id`),
  KEY `attr2_id` (`attr2_id`),
  KEY `product_id` (`product_id`),
  KEY `user_id` (`user_id`),
  KEY `is_addorder` (`is_addorder`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
I 컨트롤러의 몇 가지 방법 :

RRREE

#参与砍价详情表
CREATE TABLE `hp_activity_bargain_list` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `bargain_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'activity_bargainirg表主键id',
  `assistor_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '帮助者ID',
  `create_time` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '参与时间',
  `bargain_money` decimal(5,2) unsigned NOT NULL DEFAULT '0.00' COMMENT '砍掉价格',
  PRIMARY KEY (`id`),
  KEY `assistor_id` (`assistor_id`),
  KEY `bargain_id` (`bargain_id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Thinkphp5를 기반으로 교섭활동과 관련된 PHP 디자인을 소개합니다. 모델 레이어의 일부 방법 : R
 //线上砍价活动列表
    public function bargainirgAction() 
    {
        $type = 0;
        $way = input('param.way', '','string');
        if (is_not_empty_string($way) && $way == 'live') {
            $type = 1;
        }
        $pageSize = 10;
        if (Request::isAjax()) {
            $page = input('post.page', 0, 'intval');
            $product_list = Hmodel\Activity::getActivityBargainProducts($type, $pageSize,  $page * $pageSize);
            if (is_not_empty_array($product_list)) {
                return json_encode(['status' => 1, 'info' => $product_list]);    
            } else {
                return json_encode(['status' => 0]);
            }
        }
        $product_list = Hmodel\Activity::getActivityBargainProducts($type, 10, 0);
        $view = new view();
        $view->assign('bargainirgList',$product_list);
        if ($type == 0) {
            return $view->fetch('bargainirg');
        } else {
            return $view->fetch('bargainirg_live');
        }
        
    }

    //砍价活动\商品详情\查看贡献度\请帮忙
    public function bargaindetailAction() 
    {

        $this->checkUserLogin();
        $uid = session('userinfo.uid');
        // $uid = 3;
        $seting_id = input('param.id',0,'int');
        $seting_info = Hmodel\Activity::getActivityProductsSeting($seting_id);  //砍价活动商品设置
        $bargain_section2 = !empty($seting_info['bargain_section2']) ? $seting_info['bargain_section2'] : 'no seting';
        if (!is_not_empty_array($seting_info)) notFund(); 

        $bargain_progress = Hmodel\Activity::returnProgressData( $seting_id, $seting_info['product_id'], $uid, $seting_info['attr1_id'],$seting_info['attr2_id'], 
$seting_info['add_money'],$seting_info['type']);
    
        if (!is_not_empty_array($bargain_progress) || $bargain_progress['user_id'] != $uid) notFund();
      
        $username       = session('userinfo.username');
        $user_info      = Hmodel\User::getuser_info($uid);
        $invite_code    = $user_info['invite_code'];
        $encrypt_code   = encrypt_hopeband($bargain_progress['id'] . '(&)' .$bargain_progress['activity_bargain_id'] . '(&)' .$uid . '(&)' . $invite_code . '(&)' 
. $seting_info['product_id'] . '(&)' . $seting_info['activity_money'] . '(&)' . $seting_info['bargain_section'] .  '(&)' . $seting_info['bargain_section2'] .'(&)' 
. $seting_info['join_count'] . '(&)'. $bargain_progress['type'], 'E', 'Hp_HopeBand_Bargainirg');

        //是否已经下单
        // $is_addorder    = Hmodel\Activity::checkIsAddorder($bargain_progress['id']);
        $is_addorder    = $bargain_progress['is_addorder'];

        //帮助列表
        $assistor_list = Hmodel\Activity::getAssistorList($bargain_progress['id']);

        $view = new view();
        $view->assign([
            'bar_code'           => $encrypt_code,
            'seting_info'        => $seting_info,
            'bargain_progress'   => $bargain_progress,
            'assistor_list'      => $assistor_list,
            'seting'             => $seting_id,
            'is_addorder'        => $is_addorder
        ]);
        $view->assign();
        return $view->fetch();

    }

    //帮忙砍价\进度\底部砍价商品列表
    public function bargainirgingAction ()
    {
        $url = $_SERVER['REQUEST_URI'];
        $encrypt_code = substr(substr($url,29),0,strpos(substr($url,29), '?invite_code'));

        $bargain_param = self::retrunBargainCode($encrypt_code);
        $bargain_id          = $bargain_param['bargain_id'];
        $bargainInfo         = Hmodel\Activity::getBargainirgProgress($bargain_id);
        if ( !is_not_empty_array($bargain_param) || !is_not_empty_array($bargainInfo)) {
            notFund();
        }

        $is_addorder = $bargainInfo['is_addorder'] == 1 ? true : false;
  
        $uid = session('userinfo.uid');
        $activity_product_id = $bargain_param['activity_product_id'];

         if ($bargain_param['sponsor_uid'] == $uid) {
            $this->redirect('bargaindetail',['id' => $activity_product_id]);
        }
        $product_id          = $bargain_param['product_id'];
        
        $bargain_list        = Hmodel\Activity::getActivityBargainProducts($bargain_param['type'], 999); //所有参与砍价活动的商品

        foreach ($bargain_list as $v) {
            if ( $v['id'] == $activity_product_id) {
                $product_info = $v;
            }
        }

        if (!is_not_empty_array($product_info)) notFund();
        $type = $bargain_param['type'];
        $activity_bargain_url = url('activity/bargainirg') ;

        $view = new view();
        $view->assign([
            'bar_code'      => $encrypt_code,   //邀请码
            'bargainInfo'   => $bargainInfo,    //当前砍价进度
            'product_info'  => $product_info,   //商品详情
            'bargain_list'  => $bargain_list,   //底部相关推荐 
            'is_addorder'   => $is_addorder,     //是否入库
            'activity_bargain_url' => $activity_bargain_url
        ]);
        
        return $view->fetch();


    }

    //ajax砍价
    public function goBargainAction () 
    {
        if (Request::isAjax()) {

            $uid = session('userinfo.uid');
            $username = session('userinfo.username');
            $encrypt_code  = input('post.bar_code', '', 'string');
            if (empty($uid) || empty($username)) {
                $this->checkUserLogin();
            }
            $bargain_param = self::retrunBargainCode($encrypt_code);
            if (!is_not_empty_array($bargain_param)) {
                echo json_encode(array('status' => -3, 'info' => '不明错误,请联系客服'));die;
            }

            $seting_info = Hmodel\Activity::getActivityProductsSeting($bargain_param['activity_product_id']);  //砍价活动商品设置
            $stock = Hmodel\CategoryAttr::getproductstockbyidsonattr($seting_info['product_id'],$seting_info['attr1_id'],$seting_info['attr2_id']);

            if ($stock['category_sum']  -1, 'info' => '已抢光!']);die;
            }

            
            $userinfo = Hmodel\User::getuser_info($uid);
            $register_time = $userinfo['create_time']; 
            $is_new_user = false;           //用户状态[default:老用户]
            if (($register_time + (60 * 60 * 8)) > time() && Hmodel\Activity::checkUserIsbargainEd($uid) === false) {
                $is_new_user  = true;       //是新用户
            }
    
            $sponsor_uid   = $bargain_param['sponsor_uid'];              //发起者id
            $bargain_id    = $bargain_param['bargain_id'];               //[activity_bargainirg]表主键id
            $join_count    = $bargain_param['join_count'];               //设置砍价次数 
            $section       = $bargain_param['bargain_section'];          //砍价区间(老用户)
            $section2      = $bargain_param['bargain_section2'];         //砍价区间(新用户)
            $type          = $bargain_param['type'] == $seting_info['type'] ? $bargain_param['type'] : ''; //0:线上;  1:地推
            $activity_money= $bargain_param['activity_money'];           //活动最低价
           
            if (!is_not_empty_string($type)) {
                echo json_encode(array('status' => -3, 'info' => '不明错误,请联系客服'));die;
            }

            if ($uid == $sponsor_uid) {
                echo json_encode(array('status' => -1, 'info' => '不能给自己砍价'));die;
            }

            $state = Hmodel\Activity::checkPartBargain($bargain_id, $uid);  //是否帮伙伴砍过当前参与的进度

            if ( $state !== false) {
                echo  json_encode(array('status' => -2, 'info' => '您已帮伙伴砍掉' . $state . '元啦,不要再砍啦!'));die;
            }
            if ($type == 1 && $is_new_user === false) {
                echo json_encode(array('status' => -4, 'info' => '抱歉,该活动仅限新用户参加!'));die;
            }
           
            $state = Hmodel\Activity::givePartBargain($bargain_id, $sponsor_uid, $uid, $section, $section2, $join_count, $is_new_user,
            $activity_money, $type);
            if ($state == -1) {
                 echo json_encode(array('status' => -3, 'info' => '已经最低价啦,不能再砍啦!'));die;
            }
            if ($state === false) {
                echo json_encode(array('status' => -3, 'info' => '哎呀,失败了!稍后帮我砍一次!'));die;
            } else {
                if ($is_new_user === true) {
                    echo json_encode(array('status' => 2, 'info' => '砍掉了' . $state .'元', 'deal_money' => $state));die;
                } else {
                    echo json_encode(array('status' => 1, 'info' => '成功帮伙伴砍掉' . $state .'元!', 'deal_money' => $state));die; 
                }
            }

        }
    }
   
    //返回砍价活动相关数据
    public static function retrunBargainCode( $encrypt_str = '') 
    {
        $data   = [];
        $code_str     = encrypt_hopeband($encrypt_str, 'D', 'Hp_HopeBand_Bargainirg');

        $code_arr     = explode('(&)', $code_str);
  
   
        if (is_not_empty_array($code_arr) && count($code_arr) == 10) {
            $data['bargain_id']             = $code_arr[0];             //砍价活动表主键id
            $data['activity_product_id']    = $code_arr[1];
            $data['sponsor_uid']            = $code_arr[2];             //砍价活动发起者uid
            $data['sponsor_invite_code']    = $code_arr[3];             //砍价活动发起者邀请码
            $data['product_id']             = $code_arr[4];             //砍价活动发起的商品id
            $data['activity_money']         = $code_arr[5];             //活动最低价格
            $data['bargain_section']        = $code_arr[6];             //老用户砍价区间
            $data['bargain_section2']       = $code_arr[7];             //新用户砍价区间
            $data['join_count']             = $code_arr[8];             //设置砍价次数
            $data['type']                   = $code_arr[9];             //设置砍价次数

        }

        return $data;
    }
ATEREDED 권장 사항 :

최신 10 ThinkPHP 비디오 자습서

위 내용은 Thinkphp5를 기반으로 교섭활동과 관련된 PHP 디자인을 소개합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
이 기사는 segmentfault에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
ThinkPhp의 내장 테스트 프레임 워크의 주요 기능은 무엇입니까?ThinkPhp의 내장 테스트 프레임 워크의 주요 기능은 무엇입니까?Mar 18, 2025 pm 05:01 PM

이 기사는 ThinkPhp의 내장 테스트 프레임 워크에 대해 논의하여 장치 및 통합 테스트와 같은 주요 기능과 조기 버그 감지 및 개선 된 코드 품질을 통해 응용 프로그램 신뢰성을 향상시키는 방법을 강조합니다.

실시간 주식 시장 데이터 피드 구축에 ThinkPhp를 사용하는 방법은 무엇입니까?실시간 주식 시장 데이터 피드 구축에 ThinkPhp를 사용하는 방법은 무엇입니까?Mar 18, 2025 pm 04:57 PM

기사는 실시간 주식 시장 데이터 피드에 ThinkPHP를 사용하여 설정, 데이터 정확도, 최적화 및 보안 측정에 중점을 둡니다.

서버리스 아키텍처에서 ThinkPhp를 사용하는 데있어 주요 고려 사항은 무엇입니까?서버리스 아키텍처에서 ThinkPhp를 사용하는 데있어 주요 고려 사항은 무엇입니까?Mar 18, 2025 pm 04:54 PM

이 기사는 서버리스 아키텍처에서 ThinkPHP를 사용하기위한 주요 고려 사항에 대해 설명하고 성능 최적화, 무국적 설계 및 보안에 중점을 둡니다. 비용 효율성 및 확장 성과 같은 혜택을 강조하고 도전 과제를 해결합니다.

ThinkPHP 마이크로 서비스에서 서비스 검색 및로드 밸런싱을 구현하는 방법은 무엇입니까?ThinkPHP 마이크로 서비스에서 서비스 검색 및로드 밸런싱을 구현하는 방법은 무엇입니까?Mar 18, 2025 pm 04:51 PM

이 기사에서는 ThinkPHP 마이크로 서비스에서 서비스 검색 및로드 밸런싱 구현, 설정, 모범 사례, 통합 방법 및 권장 도구에 중점을 둡니다. [159 문자]

ThinkPhp의 종속성 주입 컨테이너의 고급 기능은 무엇입니까?ThinkPhp의 종속성 주입 컨테이너의 고급 기능은 무엇입니까?Mar 18, 2025 pm 04:50 PM

ThinkPhp의 IOC 컨테이너는 PHP apps.character 수 : 159의 효율적인 종속성 관리를위한 게으른 하중, 맥락 바인딩 및 메소드 주입과 같은 고급 기능을 제공합니다.

실시간 협업 도구를 구축하는 데 ThinkPhp를 사용하는 방법은 무엇입니까?실시간 협업 도구를 구축하는 데 ThinkPhp를 사용하는 방법은 무엇입니까?Mar 18, 2025 pm 04:49 PM

이 기사는 ThinkPhp를 사용하여 실시간 협업 도구를 구축하고 설정, WebSocket 통합 및 보안 모범 사례에 중점을 둡니다.

SaaS 애플리케이션 구축에 ThinkPhp를 사용하면 어떤 주요 이점이 있습니까?SaaS 애플리케이션 구축에 ThinkPhp를 사용하면 어떤 주요 이점이 있습니까?Mar 18, 2025 pm 04:46 PM

ThinkPhp는 가벼운 디자인, MVC 아키텍처 및 확장 성을 통해 SaaS 앱에 혜택을줍니다. 다양한 기능을 통해 확장 성을 향상시키고 개발 속도를 높이며 보안을 향상시킵니다.

ThinkPHP 및 RabbitMQ로 분산 작업 대기열 시스템을 구축하는 방법은 무엇입니까?ThinkPHP 및 RabbitMQ로 분산 작업 대기열 시스템을 구축하는 방법은 무엇입니까?Mar 18, 2025 pm 04:45 PM

이 기사는 설치, 구성, 작업 관리 및 확장성에 중점을 둔 ThinkPhp 및 RabbitMQ를 사용하여 분산 작업 큐 시스템을 구축합니다. 주요 문제는 고 가용성 보장, 손상과 같은 일반적인 함정을 피하는 것입니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는