최근 우리 회사 프로젝트에서 새로운 사용자를 유치하기 위해 많은 활동이 시작되었습니다. 우리 프로젝트는 WeChat에서 탐색 가능합니다. 사용자가 찾아보고 액세스할 수 있습니다.
일반 설명: 특가 활동 목록 페이지에 들어가서 관심 있는 제품을 선택하세요. 제품 사진을 클릭하면 '지금 구매'를 클릭하여 웹몰에서 판매되는 제품의 가격과 세부 매개변수를 볼 수 있습니다. 목록의 해당 제품 로고 아래에 교섭 페이지에 들어갈 수 있습니다. 이 페이지에는 두 개의 주요 버튼이 있는데, 하나는 '부자에게 도움 요청'(공유를 안내하려면 클릭), '구매 구매'(구매 가능)입니다. 특정 가격으로 인하 후 구매), 두 번째에는 가격 진행 기사 및 기타 정보가 포함되어 있으며, 사용자는 이를 친구 서클에 공유하여 친구가 흥정을 하도록 유도할 때 도움을 주는 친구가 활성화됩니다. 이 사이트의 사용자가 아닌 경우, 도움을 주는 친구가 이 사이트의 회원이 되며 공유 사용자가 됩니다. 그런 다음 부하 직원은 제품 운영 및 조달을 기반으로 각 제품에 대해 논의하고 활성 가격과 최소 가격을 정의합니다. 흥정할 상품에 대한 가격은 물론, 매번 인하될 수 있는 가격대와 참가인원 등 (상품의 원래 가격은 3,000원, 최저가는 1,000원이다. 그러면 그 가격은 삭감 가능 인원은 500명이므로 평균 1인당 4위안을 삭감할 수 있습니다. 흥정 가격의 변동으로 인해 사용자의 참여 관심도가 높아질 수 있습니다. 사용자가 지정된 가격대에 도달하여 구매하면 주문 확인 페이지로 이동한 다음 주문을 하고 일련의 프로세스에 대한 비용을 지불하게 됩니다.
페이지 스크린샷:
관련 구현:
몇 장의 사진을 보면 모든 사람들이 관련된 관련 정보도 고려할 것이라고 생각합니다.
이벤트에 참여하는 상품을 공개하고자 한다면, 상품 차별화 표현이 있을 예정입니다. 데이터베이스 디자인에서 차별화된 필드를 추가하기 위해 상품 테이블을 수정하지 않고, 새로운 데이터 테이블을 생성했습니다. 교섭 활동 정보와 관련된 정보를 게시하는 특별한 장소입니다.
백엔드 프론트엔드 디스플레이를 살펴보겠습니다. 전문적인 프론트엔드 작업을 거치지 않고 그냥 백엔드 제품 목록 모듈 코드를 직접 복사해서 디자인한 것입니다. 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;모델 레이어의 일부 방법 : 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 비디오 자습서