123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693 |
- <?php
- namespace app\index\controller;
- use app\index\model\activity\ActivityModel;
- use app\index\model\activity\ActivityOrderDetailModel;
- use app\index\model\activity\ActivityOrderModel;
- use app\index\model\activity\ActivityPriceModel;
- use app\index\model\activity\ActivityTimeModel;
- use app\index\model\activity\CollectionModel;
- use app\index\service\ActivityService;
- use app\index\service\HelperService;
- class Activity extends CmsController
- {
- /**
- * 添加活动接口
- */
- public function addActivity(){
- $param_list = [
- 'title'=>'string',
- 'position_description'=>'string',
- 'contain'=>'int',
- 'telephone'=>'mobile',
- ];
- HelperService::diffParam($param_list,$this->post);
- $data = [
- 'activity_img'=>isset($this->post['activity_img'])?$this->post['activity_img']:'',
- 'title'=>$this->post['title'],
- 'sub_title'=>isset($this->post['sub_title'])?$this->post['sub_title']:'',
- 'show_param'=>isset($this->post['show_param'])?$this->post['show_param']:'',
- 'position_description'=>$this->post['position_description'],
- 'contain'=>$this->post['contain'],
- 'telephone'=>$this->post['telephone'],
- 'type'=>isset($this->post['type'])?$this->post['type']:0,
- 'status'=>0
- ];
- $activityModel = new ActivityModel();
- $res = $activityModel->addInfo($data);
- $this->returnJson($res);
- }
- /**
- * 修改活动接口
- */
- public function updateActivity(){
- $param_list = [
- 'activity_id'=>'number',
- ];
- HelperService::diffParam($param_list,$this->post);
- $data = [
- 'activity_img'=>isset($this->post['activity_img'])?$this->post['activity_img']:'',
- 'title'=>isset($this->post['title'])?$this->post['title']:'',
- 'sub_title'=>isset($this->post['sub_title'])?$this->post['sub_title']:'',
- 'position_description'=>isset($this->post['position_description'])?$this->post['position_description']:'',
- 'contain'=>isset($this->post['contain'])?$this->post['contain']:0,
- 'telephone'=>isset($this->post['telephone'])?$this->post['telephone']:'',
- 'show_param'=>isset($this->post['show_param'])?$this->post['show_param']:'',
- ];
- $data = array_filter($data);
- if(isset($this->post['status'])){
- $data['status'] = $this->post['status'];
- }
- if(isset($this->post['type'])){
- $data['type'] = $this->post['type'];
- }
- $activityModel = new ActivityModel();
- $row = $activityModel->upInfo(['activity_id'=>$this->post['activity_id']],$data);
- $this->returnJson(['row'=>$row]);
- }
- /**
- * 获取当前活动列表
- */
- public function getActivityList(){
- $param_list = [
- 'user_id'=>'number',
- ];
- HelperService::diffParam($param_list,$this->post);
- $where = [
- 'activity.status'=>0,
- ];
- $activityModel = new ActivityModel();
- $order = "sort desc,activity_id desc";
- if(isset($this->post['type']) && is_numeric($this->post['type'])){
- $order = "type <> {$this->post['type']},sort desc,activity_id desc";
- }
- $list = $activityModel->getListAndCollection($where,$order);
- $collectionActivityIds = $activityModel->getCurrentUserCollectionList($this->post['user_id']);
- foreach($list as &$item){
- if(isset($collectionActivityIds[$item['activity_id']])){
- $item['is_collection'] = 1;
- }else{
- $item['is_collection'] = 0;
- }
- }
- $this->returnJson($list);
- }
- /**
- * 获取当前活动列表
- */
- public function getActivityPage(){
- $param_list = [
- 'page'=>'number',
- 'pageSize'=>'number',
- 'condition'=>'array'
- ];
- HelperService::diffParam($param_list,$this->post);
- $search_key = ['title','telephone','status'];
- $condition = $this->post['condition'];
- $where = [];
- foreach($condition as $key=>$item){
- if(!in_array($key,$search_key)){
- continue;
- }
- switch($key){
- case "status":
- $where[$key] = $item;
- break;
- case 'title':
- case 'telephone':
- $where[$key] = ['like',"%{$item}%"];
- break;
- }
- }
- $page = $this->post['page']>1?$this->post['page']:1;
- $pageSize = $this->post['pageSize']>2?$this->post['pageSize']:2;
- $activityModel = new ActivityModel();
- $list = $activityModel->getPage($where,"sort desc,activity_id desc",
- $page,$pageSize);
- $this->returnJson($list);
- }
- /**
- * 通过条件获取订单信息
- */
- public function getUserOrderByType(){
- $param_list = [
- 'user_id'=>'number',
- 'status'=>'int'
- ];
- HelperService::diffParam($param_list,$this->post);
- if(!in_array($this->post['status'],[0,1,2,3,4,10])){
- $this->returnJson([],400,'status is error');
- }
- $params = [];
- $params['user_id'] = $this->post['user_id'];
- if($this->post['status']!=10){
- $params['status'] = $this->post['status'];
- }
- $activityOrderModel = new ActivityOrderModel();
- $activityOrder = $activityOrderModel->getList($params,"activity_order_id desc",100);
- if(empty($activityOrder)){
- $activityOrder = [];
- }else{
- foreach($activityOrder as $key=>$item) {
- $activityOrder[$key]['detail'] = $item['people_json']?json_decode($item['people_json']):[];
- unset($activityOrder[$key]['people_json']);
- }
- }
- $this->returnJson($activityOrder);
- }
- /**
- * 用户每种类型订单的数量
- */
- public function getUserOrderCountByType(){
- $param_list = [
- 'user_id'=>'number',
- 'status'=>'int'
- ];
- HelperService::diffParam($param_list,$this->post);
- if(!in_array($this->post['status'],[0,1,2,3,4,10])){
- $this->returnJson([],400,'status is error');
- }
- $params = [];
- $params['user_id'] = $this->post['user_id'];
- if($this->post['status']!=10){
- $params['status'] = $this->post['status'];
- }
- $activityOrderModel = new ActivityOrderModel();
- $activityOrder = $activityOrderModel->where($params)->count();
- $this->returnJson($activityOrder);
- }
- /**
- * 前后台修改订单(通用)
- */
- public function saveOrderStatus(){
- $param_list = [
- 'activity_order_no'=>'string',
- 'status'=>'number',
- ];
- HelperService::diffParam($param_list,$this->post);
- if(!in_array($this->post['status'],[0,1,2,3,4])){
- $this->returnJson([],400,'status is error');
- }
- $where = ['activity_order_no' => $this->post['activity_order_no']];
- $data = ['status' => $this->post['status']];
- $activityOrderModel = new ActivityOrderModel();
- $activityOrderModel->upInfo($where,$data);
- $this->returnJson('success');
- }
- /**
- * 根据订单编号或许订单详情
- */
- public function getOrderByOrderNo(){
- $param_list = [
- 'activity_order_no'=>'string'
- ];
- HelperService::diffParam($param_list,$this->post);
- $params = [];
- $params['activity_order_no'] = $this->post['activity_order_no'];
- $activityOrderModel = new ActivityOrderModel();
- $activityOrder = $activityOrderModel->getOne($params);
- $activityOrder['detail'] = $activityOrder['people_json']?json_decode($activityOrder['people_json']):[];
- unset($activityOrder['people_json']);
- $this->returnJson($activityOrder);
- }
- /**
- * 加入到活动订单里面
- */
- public function addActivityOrder(){
- $params_list = [
- 'user_id'=>'number',
- 'activity_id'=>'number',
- 'total_price'=>'number',
- 'total_people'=>'number',
- 'pay_style'=>'int',
- 'peopleType_num_price_array'=>'array',
- ];
- HelperService::diffParam($params_list,$this->post);
- $data = [
- 'user_id'=>$this->post['user_id'],
- 'activity_id'=>$this->post['activity_id'],
- 'total_price'=>$this->post['total_price'],
- 'total_people'=>$this->post['total_people'],
- 'pay_style'=>$this->post['pay_style'],
- 'people_json'=>json_encode($this->post['peopleType_num_price_array']),
- 'add_time'=>time(),
- 'add_date'=>date('Y-m-d'),
- 'data'=>isset($this->post['data'])?$this->post['data']:'',
- 'status'=>0
- ];
- $uni_qid = uniqid();//为了保证子项业务先执行的机制,建立唯一字段关联
- $data['activity_order_no'] = $uni_qid;
- $row = 0;//受影响的行数
- $activityOrderDetailModel = new ActivityOrderDetailModel();
- $peopleType_num_price_array = $this->post['peopleType_num_price_array'];
- foreach($peopleType_num_price_array as $item) {
- if (is_array($item) && isset($item['type']) && isset($item['num'])
- && isset($item['single_price'])) {
- $params = [
- 'activity_order_no'=>$uni_qid,
- 'people_type'=>$item['type'],
- 'single_price'=>$item['single_price'],
- 'people_num'=>$item['num'],
- 'add_time'=>time(),
- ];
- $activityOrderDetail = $activityOrderDetailModel->addInfo($params);
- if($activityOrderDetail){
- $row += 1;
- }
- }
- }
- if($row == 0){
- $this->returnJson(null,400,'please give me a valid array of peopleType_num_price_array');
- }
- $activityOrderModel = new ActivityOrderModel();
- $id = $activityOrderModel->addInfo($data);
- $this->returnJson($uni_qid);
- }
- /**
- * 获取各种类型的活动订单列表
- */
- public function ActivityOrderListByType(){
- $params_list =[
- 'type'=>'int',
- 'user_id'=>'number'
- ];
- HelperService::diffParam($params_list,$this->post);
- $activityService = new ActivityService();
- $condition = [
- 'user_id' => $this->post['user_id']
- ];
- if(in_array($this->post['type'],[0,1,2,3])){
- $condition['status'] = $this->post['type'];
- }
- $activityOrderList = $activityService->getActivityOrderListByCondition($condition);
- foreach($activityOrderList as $key=>$activityOrder){
- $activityOrderList[$key]['detail'] = json_decode($activityOrderList[$key]['people_json'],true);
- unset($activityOrderList[$key]['people_json']);
- }
- $this->returnJson($activityOrderList);
- }
- /**
- * 通过订单id获取订单信息
- */
- public function getActivityOrderInfoById(){
- $param_list = [
- 'order_id'=>'number',
- ];
- HelperService::diffParam($param_list,$this->post);
- $activityOrderModel = new ActivityOrderModel();
- $activityOrder = $activityOrderModel->getOne(['activity_order_id'=>$this->post['order_id']]);
- if(!empty($activityOrder)){
- $activityOrder['detail'] = json_decode($activityOrder['people_json'],true);
- unset($activityOrder['people_json']);
- }
- $this->returnJson($activityOrder);
- }
- /**
- * 获取活动订单分页
- */
- public function ActivityOrderPage(){
- $params_list =[
- 'page'=>'number',
- 'pageSize'=>'number',
- 'condition'=>'array',
- ];
- HelperService::diffParam($params_list,$this->post);
- $activityService = new ActivityService();
- $page = $this->post['page'] >1?$this->post['page']:1;
- $pageSize = $this->post['pageSize'] >2? $this->post['pageSize']:2;
- $condition = $this->post['condition'];
- $where = [
- 'user_id'=>isset($condition['user_id'])?$condition['user_id']:0,
- 'activity_id'=>isset($condition['activity_id'])?$condition['activity_id']:0,
- ];
- $where = array_filter($where);
- if(isset($condition['status']) && is_numeric($condition['status'])
- && in_array($condition['status'],[0,1,2,3])){
- $where['status'] = $condition['status'];
- }
- $activityOrderList = $activityService->getActivityOrderPageByCondition($where,'activity_id desc',$page,$pageSize);
- foreach($activityOrderList['list'] as $key=>$activityOrder){
- $activityOrderList['list'][$key]['detail'] = !empty($activityOrder['people_json'])?json_decode($activityOrder['people_json'],true):[];
- unset($activityOrderList['list'][$key]['people_json']);
- }
- $this->returnJson($activityOrderList);
- }
- /**
- * 针对于活动订单的处理
- */
- public function dealActivityOrder(){
- $param_list = [
- 'activity_order_id'=>'number',
- 'status'=>'number',
- ];
- HelperService::diffParam($param_list,$this->post);
- if(!in_array($this->post['status'],[0,1,2,3])){
- $this->returnJson('',400,'status is error');
- }
- $data = [
- 'status'=>$this->post['status'],
- ];
- if(isset($this->post['note']) && !empty($this->post['note'])){
- $data['note'] = $this->post['note'];
- }
- $activityOrderModel = new ActivityOrderModel();
- $row = $activityOrderModel->upInfo([
- 'activity_order_id'=>$this->post['activity_order_id']
- ],$data);
- $this->returnJson(['row'=>$row]);
- }
- /**
- * 根据活动id获取活动信息
- */
- public function getActivityInfoById(){
- $param_list = [
- 'activity_id'=>'number',
- ];
- HelperService::diffParam($param_list,$this->post);
- $activityModel = new ActivityModel();
- $activity = $activityModel->getOne(['activity_id'=>$this->post['activity_id']]);
- $this->returnJson($activity);
- }
- /**
- *活动每日订单数量
- */
- public function ActivityOrderDayNum(){
- $param = $this->request->param();
- $end_date = isset($param['end_date'])?strtotime($param['end_date']):strtotime("-1 seconds",strtotime(date('Y-m-d')));
- $start_date = isset($param['start_date'])?strtotime($param['start_date']):0;
- //控制时间,以免增加服务器压力
- if(empty($start_date) || $end_date-$start_date>86400*20){
- $start_date = $end_date-86400*20;
- }
- $activityOrderModel = new ActivityOrderModel();
- $activityOrder = $activityOrderModel
- ->field('count(activity_order_id) as total_count,add_date')
- ->where(['add_date'=>['between',[date('Y-m-d',$start_date),date('Y-m-d',$end_date)]]])->group('add_date')->cache(3600*2)->select();
- $this->returnJson($activityOrder);
- }
- /**
- *订单总数量
- */
- public function totalOrderNum(){
- $activityOrderModel = new ActivityOrderModel();
- $activityOrder = $activityOrderModel->cache(10)->count();
- $this->returnJson(['count'=>$activityOrder]);
- }
- /**
- * 根据活动id获取活动信息
- */
- public function getActivityInfoByIdAndUserId(){
- $param_list = [
- 'activity_id'=>'number',
- 'user_id'=>'int',
- ];
- HelperService::diffParam($param_list,$this->post);
- $activityModel = new ActivityModel();
- $activity = $activityModel->getOne(['activity_id'=>$this->post['activity_id']]);
- //判断当前的人是否收藏了该活动
- $is_collection = $activityModel->getCurrentUserIsCollection(
- $this->post['user_id'],
- $this->post['activity_id']
- );
- //获取当前活动时间的信息
- $activityTime = new ActivityTimeModel();
- $time_arr = $activityTime->getList(['activity_id'=>$this->post['activity_id']]);
- $activity['is_collection'] = empty($is_collection)?0:1;
- $activity['time_arr'] = empty($time_arr)?[]:$time_arr;
- $activity['collection_num'] = $activityModel->getCollectionCount($this->post['activity_id']);
- $this->returnJson($activity);
- }
- /**
- * 保存活动收藏
- */
- public function saveCollection(){
- $param_list = [
- 'user_id'=>'number',
- 'activity_id'=>'number',
- 'status'=>'int'
- ];
- HelperService::diffParam($param_list,$this->post);
- $data = [
- 'user_id'=>$this->post['user_id'],
- 'activity_id'=>$this->post['activity_id'],
- 'status'=>$this->post['status']
- ];
- $collectionModel = new CollectionModel();
- //判断活动是否存在
- $collection = $collectionModel->getOne(['user_id'=>$data['user_id'],'activity_id'=>$data['activity_id']]);
- if(empty($collection) && $this->post['status'] == 0) {
- $data['add_time'] = time();
- $id = $collectionModel->addInfo($data);
- $this->returnJson(['id'=>$id]);
- }else{
- if($this->post['status'] == 0) {
- $row = $collectionModel->upInfo(['id' => $collection['id']], $data);
- $this->returnJson(['row' => $row]);
- }else{
- $row = $collectionModel->where(['id' => $collection['id']])->delete();
- $this->returnJson(['row' => $row]);
- }
- }
- }
- /**
- * 获取用户的收藏列表
- */
- public function getCollectionByUid(){
- $param_list = [
- 'user_id'=>'number',
- ];
- HelperService::diffParam($param_list,$this->post);
- $collectionModel = new CollectionModel();
- $collection = $collectionModel->getActivityCollection(
- ['user_id'=>$this->post['user_id']]
- );
- $this->returnJson($collection);
- }
- /**
- * 活动保存价格的接口
- */
- public function saveActivityPrice(){
- $param_list = [
- 'activity_id'=>'number',
- 'people_price_array'=>'array'
- ];
- HelperService::diffParam($param_list,$this->post);
- //首先删除这个活动的所有价格,然后再去填充数据库
- $activityPriceModel = new ActivityPriceModel();
- $activityPriceModel->where(['activity_id'=>$this->post['activity_id']])->delete();
- //拆分数组
- $people_price_array = $this->post['people_price_array'];
- $row = 0;
- foreach($people_price_array as $key=>$item){
- if(is_numeric($item)){
- $id = $activityPriceModel->addInfo([
- 'activity_id'=>$this->post['activity_id'],
- 'people_type'=>$key,
- 'price'=>$item,
- ]);
- if($id){
- $row += 1;
- }
- }
- }
- $this->returnJson(['row'=>$row]);
- }
- /**
- * 活动保存价格的接口
- */
- public function saveActivityTime(){
- $param_list = [
- 'activity_id'=>'number',
- 'start_end_time_sort_array'=>'array'
- ];
- HelperService::diffParam($param_list,$this->post);
- //首先删除这个活动的所有时间,然后再去填充数据库
- $activityTimeModel = new ActivityTimeModel();
- $activityTimeModel->where(['activity_id'=>$this->post['activity_id']])->delete();
- //拆分数组
- $start_end_time_sort_array = $this->post['start_end_time_sort_array'];
- $row = 0;
- foreach($start_end_time_sort_array as $item){
- if(is_array($item) && isset($item['start_time'])
- && isset($item['end_time']) && isset($item['sort'])){
- $id = $activityTimeModel->addInfo([
- 'activity_id'=>$this->post['activity_id'],
- 'start_time'=>intval($item['start_time']),
- 'end_time'=>intval($item['end_time']),
- 'sort'=>intval($item['sort']),
- ]);
- if($id){
- $row += 1;
- }
- }
- }
- $this->returnJson(['row'=>$row]);
- }
- /**
- * 获取活动时间列表
- */
- public function getActivityTimeList(){
- $param_list = [
- 'activity_id'=>'number',
- ];
- HelperService::diffParam($param_list,$this->post);
- $activityTimeModel = new ActivityTimeModel();
- $list = $activityTimeModel->getList(['activity_id'=>$this->post['activity_id']],
- 'sort desc,id desc',100);
- $this->returnJson($list);
- }
- /**
- *获取活动价格
- */
- public function getActivityPriceList(){
- $param_list = [
- 'activity_id'=>'number',
- ];
- HelperService::diffParam($param_list,$this->post);
- $activityPriceModel = new ActivityPriceModel();
- $activityPriceList = $activityPriceModel->where(['activity_id'=>$this->post['activity_id']])->select();
- $this->returnJson($activityPriceList);
- }
- /**
- * 获取活动最新关注的人
- */
- public function getNewOrderByActivityId(){
- $param_list = [
- 'activity_id'=>'int',
- ];
- HelperService::diffParam($param_list,$this->post);
- $activityOrderModel = new ActivityOrderModel();
- $limit = isset($this->post['limit'])?intval($this->post['limit']):10;
- $activityOrderList = $activityOrderModel->getOrderListByActivityId($this->post['activity_id'],$limit,"user_id");
- $this->returnJson($activityOrderList);
- }
- }
|