|
@@ -0,0 +1,499 @@
|
|
|
+<?php
|
|
|
+/**
|
|
|
+ * ShopController 商城相关api接口
|
|
|
+ */
|
|
|
+class ShopController extends ApiBaseController{
|
|
|
+ public function beforeAction($action){
|
|
|
+ $weixin_use = array('addAddress','addressList','delAddress','editAddress');
|
|
|
+ if(Yii::app()->getRequest()->getParam("request_from") == 'weixin' && in_array($action->id,$weixin_use)){
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ return $this->verify();
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 商城首页
|
|
|
+ */
|
|
|
+ public function actionIndex(){
|
|
|
+ $user_id = Yii::app()->getRequest()->getParam("user_id");
|
|
|
+ $page = intval(Yii::app()->getRequest()->getParam("page",1));
|
|
|
+ $user = CommonFn::getObJ($user_id,"ZUser");
|
|
|
+ //获取所有商品
|
|
|
+ $current_time = time();
|
|
|
+ $pagesize = Yii::app()->params['shopIndexPageSize'];
|
|
|
+ $conditions = array(
|
|
|
+ 'status'=>array('==',1),
|
|
|
+ 'start_time'=>array('<=',$current_time),
|
|
|
+ 'end_time'=>array('>=',$current_time),
|
|
|
+ 'count'=>array('>=',1),
|
|
|
+ );
|
|
|
+ $order = array(
|
|
|
+ 'order'=>'desc',
|
|
|
+ );
|
|
|
+ $model = new Goods();
|
|
|
+ $pagedata = CommonFn::getPagedata($model,$page,$pagesize,$conditions,$order);
|
|
|
+ $goods_list = array();
|
|
|
+ foreach ($pagedata['res'] as $key => $value) {
|
|
|
+ if(isset($value['city_info']['province']) && $value['city_info']['province']){
|
|
|
+ if($user && $user->city_info['province'] == $value['city_info']['province']){
|
|
|
+ if($value['city_info']['city'] && $value['city_info']['city']!=$user->city_info['city']){
|
|
|
+ continue;
|
|
|
+ }else{
|
|
|
+ $goods_list[] = $value;
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ $goods_list[] = $value;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $data['goods'] = $goods_list;
|
|
|
+ $Key = HelperKey::generateRedisKey(date('YmdHi'),'luck_users');
|
|
|
+ $luckey_list = UserActionRedis::get($Key);
|
|
|
+ if($luckey_list){
|
|
|
+ $data['luckey_list'] = json_decode($luckey_list);
|
|
|
+ }else{
|
|
|
+ $criteria = new EMongoCriteria();
|
|
|
+ $criteria->type('==','lottery');
|
|
|
+ $lottery_goods = $model->findAll($criteria);
|
|
|
+ $criteria = new EMongoCriteria();
|
|
|
+ $model = new Order();
|
|
|
+ $criteria->sort('time',EMongoCriteria::SORT_DESC);
|
|
|
+ $criteria->limit(10);
|
|
|
+ $goods_ids = array();
|
|
|
+ if($lottery_goods){
|
|
|
+ foreach ($lottery_goods as $key => $value) {
|
|
|
+ $goods_ids[] = $value->_id;
|
|
|
+ // $criteria->addCond('goods','or',array(array('goods_id' => $value->_id,'count' => 1)));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $criteria->addCond('goods.goods_id','in',$goods_ids);
|
|
|
+ $lottery_list = $model->findAll($criteria);
|
|
|
+ $lucke_list =array();
|
|
|
+ foreach ($lottery_list as $key => $value) {
|
|
|
+ $order = $model->parseRow($value);
|
|
|
+ $temp['user_name'] = $order['user']['user_name'];
|
|
|
+ $temp['goods'] = $order['goods'][0];
|
|
|
+ unset($temp['goods']['score']);
|
|
|
+ unset($temp['goods']['type']);
|
|
|
+ unset($temp['goods']['avatar']);
|
|
|
+ unset($temp['goods']['buy_count']);
|
|
|
+ unset($temp['goods']['market_price']);
|
|
|
+ $luckey_list[] = $temp;
|
|
|
+ }
|
|
|
+ UserActionRedis::set($Key,json_encode($luckey_list));
|
|
|
+ $data['luckey_list'] = $luckey_list;
|
|
|
+ }
|
|
|
+ CommonFn::requestAjax(true,CommonFn::getMessage('message','operation_success'),$data,200,array('sum_count' => $pagedata['sum_count'],'sum_page'=>$pagedata['sum_page'],'page_size'=>$pagedata['page_size'],'current_page'=>$pagedata['current_page']));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 商品详情
|
|
|
+ */
|
|
|
+ public function actiongoodsDetail(){
|
|
|
+ $goods_id = Yii::app()->getRequest()->getParam("goods_id");
|
|
|
+ $user_id = Yii::app()->getRequest()->getParam("user_id");
|
|
|
+ if(!$goods_id){
|
|
|
+ CommonFn::requestAjax(false,CommonFn::getMessage('message','params_illegal'));
|
|
|
+ }
|
|
|
+ $goods = CommonFn::apigetObJ($goods_id,"ZGoods",CommonFn::getMessage('shop','goods_not_exist'));
|
|
|
+ $data = Goods::model()->parseRow($goods);
|
|
|
+ $user_obj = RUser::get(new MongoId($user_id));
|
|
|
+ $score_enough = false;
|
|
|
+ if($user_obj){
|
|
|
+ $user = RUser::model()->parseRow($user_obj);
|
|
|
+ if($user['score'] >= $goods->score){
|
|
|
+ $score_enough = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $data['score_enough'] = $score_enough;
|
|
|
+ CommonFn::requestAjax(true,CommonFn::getMessage('message','operation_success'),$data);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 新增收货地址
|
|
|
+ */
|
|
|
+ public function actionAddAddress(){
|
|
|
+ $user_id = Yii::app()->getRequest()->getParam("user_id");
|
|
|
+ $name = trim(Yii::app()->request->getParam('name',''));
|
|
|
+ $mobile = Yii::app()->request->getParam('mobile');
|
|
|
+ $position = json_decode(Yii::app()->request->getParam('address_position'),true);
|
|
|
+ $address_position[0] = isset($position['lng'])?floatval($position['lng']):floatval(0);
|
|
|
+ $address_position[1] = isset($position['lat'])?floatval($position['lat']):floatval(0);
|
|
|
+ $phoneReg = Yii::app()->params['phoneReg'];
|
|
|
+ if(!preg_match($phoneReg,$mobile)){
|
|
|
+ CommonFn::requestAjax(false,CommonFn::getMessage('message','phone_illegal'));
|
|
|
+ }
|
|
|
+ $address = json_decode(Yii::app()->request->getParam('address'),true);
|
|
|
+ if(!isset($address['province']) || empty($address['province'])){
|
|
|
+ CommonFn::requestAjax(false,CommonFn::getMessage('message','params_illegal'));
|
|
|
+ }
|
|
|
+ $is_default = intval(Yii::app()->request->getParam('is_default'),0);
|
|
|
+ if(!$name||!$mobile||!$address||!$user_id){
|
|
|
+ CommonFn::requestAjax(false,CommonFn::getMessage('message','params_illegal'));
|
|
|
+ }
|
|
|
+ $user = CommonFn::apigetObJ($user_id,"ZUser",CommonFn::getMessage('user','id_not_exist'),201);
|
|
|
+ $new_address = array('name'=>$name,'mobile'=>$mobile,'address'=>$address,'position' => $address_position,'is_default'=>$is_default,'address_id'=>time());
|
|
|
+ if($is_default==1){
|
|
|
+ foreach ($user->shop_address as $key => $value) {
|
|
|
+ if(isset($value['is_default']) && $value['is_default'] == 1){
|
|
|
+ $value['is_default'] = 0;
|
|
|
+ }
|
|
|
+ $user->shop_address[$key] = $value;
|
|
|
+ $user->update(array('shop_address'),true);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $user->shop_address = $user->shop_address?array_merge($user->shop_address,array($new_address)):array($new_address);
|
|
|
+ $result = $user->update(array('shop_address'),true);
|
|
|
+ if($result){
|
|
|
+ CommonFn::requestAjax(true,CommonFn::getMessage('message','operation_success'),$new_address);
|
|
|
+ }else{
|
|
|
+ CommonFn::requestAjax(false,'操作失败,请稍后再试',array());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 收货地址列表
|
|
|
+ */
|
|
|
+ public function actionAddressList(){
|
|
|
+ $user_id = Yii::app()->getRequest()->getParam("user_id");
|
|
|
+ $user = CommonFn::apigetObJ($user_id,"ZUser",CommonFn::getMessage('user','id_not_exist'),201);
|
|
|
+ $data = $user->shop_address?$user->shop_address:array();
|
|
|
+ $data = array_values($data);
|
|
|
+ CommonFn::requestAjax(true,CommonFn::getMessage('message','operation_success'),$data);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 修改收货地址
|
|
|
+ */
|
|
|
+ public function actionEditAddress(){
|
|
|
+ $user_id = Yii::app()->getRequest()->getParam("user_id");
|
|
|
+ $name = trim(Yii::app()->request->getParam('name',''));
|
|
|
+ $mobile = Yii::app()->request->getParam('mobile');
|
|
|
+ $position = json_decode(Yii::app()->request->getParam('address_position'),true);
|
|
|
+ $address_position[0] = isset($position['lng'])?floatval($position['lng']):floatval(0);
|
|
|
+ $address_position[1] = isset($position['lat'])?floatval($position['lat']):floatval(0);
|
|
|
+ $phoneReg = Yii::app()->params['phoneReg'];
|
|
|
+ if(!preg_match($phoneReg,$mobile)){
|
|
|
+ CommonFn::requestAjax(false,CommonFn::getMessage('message','phone_illegal'));
|
|
|
+ }
|
|
|
+ $address = json_decode(Yii::app()->request->getParam('address'),true);
|
|
|
+ if(!isset($address['province']) || empty($address['province'])){
|
|
|
+ CommonFn::requestAjax(false,CommonFn::getMessage('message','params_illegal'));
|
|
|
+ }
|
|
|
+ $address_id = Yii::app()->request->getParam('address_id');
|
|
|
+ $is_default = intval(Yii::app()->request->getParam('is_default'),0);
|
|
|
+ if(!$name||!$mobile||!$address||!$user_id||!$address_id){
|
|
|
+ CommonFn::requestAjax(false,CommonFn::getMessage('message','params_illegal'));
|
|
|
+ }
|
|
|
+ $user = CommonFn::apigetObJ($user_id,"ZUser",CommonFn::getMessage('user','id_not_exist'),201);
|
|
|
+ if($is_default==1){
|
|
|
+ $old_address_list = $user->shop_address?$user->shop_address:array();
|
|
|
+ foreach ($old_address_list as $key => $value) {
|
|
|
+ if(isset($value['is_default']) && $value['is_default'] == 1){
|
|
|
+ $value['is_default'] = 0;
|
|
|
+ }
|
|
|
+ $old_address_list[$key] = $value;
|
|
|
+ }
|
|
|
+ $user->shop_address = $old_address_list;
|
|
|
+ $user->update(array('shop_address'),true);
|
|
|
+ }
|
|
|
+ $address_list = $user->shop_address?$user->shop_address:array();
|
|
|
+ foreach ($address_list as $key => $value) {
|
|
|
+ if($value['address_id'] == $address_id){
|
|
|
+ $value['name'] = $name;
|
|
|
+ $value['mobile'] = $mobile;
|
|
|
+ $value['address'] = $address;
|
|
|
+ $value['is_default'] = $is_default;
|
|
|
+ $value['position'] = $address_position;
|
|
|
+ $new_address = $value;
|
|
|
+ $address_list[$key] = $new_address;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(!isset($new_address)){
|
|
|
+ CommonFn::requestAjax(false,CommonFn::getMessage('shop','address_not_exist'));
|
|
|
+ }
|
|
|
+ $user->shop_address = $address_list;
|
|
|
+ $result = $user->update(array('shop_address'),true);
|
|
|
+ if($result){
|
|
|
+ CommonFn::requestAjax(true,'地址修改成功',$new_address);
|
|
|
+ }else{
|
|
|
+ CommonFn::requestAjax(false,'地址修改失败',array());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 删除收货地址
|
|
|
+ */
|
|
|
+ public function actionDelAddress(){
|
|
|
+ $user_id = Yii::app()->getRequest()->getParam("user_id");
|
|
|
+ $address_id = Yii::app()->request->getParam('address_id');
|
|
|
+ if(!$user_id||!$address_id){
|
|
|
+ CommonFn::requestAjax(false,CommonFn::getMessage('message','params_illegal'));
|
|
|
+ }
|
|
|
+ $user = CommonFn::apigetObJ($user_id,"ZUser",CommonFn::getMessage('user','id_not_exist'),201);
|
|
|
+ $address_list = $user->shop_address?$user->shop_address:array();
|
|
|
+ foreach ($address_list as $key => $value) {
|
|
|
+ if($value['address_id'] == $address_id){
|
|
|
+ $old_address = $value;
|
|
|
+ unset($address_list[$key]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(!isset($old_address)){
|
|
|
+ CommonFn::requestAjax(false,CommonFn::getMessage('shop','address_not_exist'));
|
|
|
+ }
|
|
|
+ if(empty($address_list)){
|
|
|
+ CommonFn::requestAjax(false,CommonFn::getMessage('shop','address_less_one'));
|
|
|
+ }
|
|
|
+ $user->shop_address = $address_list;
|
|
|
+ $result = $user->update(array('shop_address'),true);
|
|
|
+ if($result){
|
|
|
+ CommonFn::requestAjax(true,'地址删除成功');
|
|
|
+ }else{
|
|
|
+ CommonFn::requestAjax(false,'地址删除失败');
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public function actionCheckPermission(){
|
|
|
+ $user_id = Yii::app()->getRequest()->getParam("user_id");
|
|
|
+ $goods_id = Yii::app()->getRequest()->getParam("goods_id");
|
|
|
+ $user_obj = CommonFn::apigetObJ($user_id,"ZUser",CommonFn::getMessage('user','id_not_exist'),201);
|
|
|
+ if($user_obj->status == 0){
|
|
|
+ CommonFn::requestAjax(false,CommonFn::getMessage('user','user_shop_forbidden'));
|
|
|
+ }
|
|
|
+ $user = RUser::model()->parseRow($user_obj);
|
|
|
+ $goods = CommonFn::apigetObJ($goods_id,"ZGoods",CommonFn::getMessage('shop','goods_not_exist'));
|
|
|
+ $level_limit = $goods->min_level;
|
|
|
+ if($user['level']<$level_limit){
|
|
|
+ CommonFn::requestAjax(false,CommonFn::getMessage('shop','level_too_low'));
|
|
|
+ }
|
|
|
+ if($goods->count<=0){
|
|
|
+ CommonFn::requestAjax(false,CommonFn::getMessage('shop','goods_count_empty'),array('refresh'=>true));
|
|
|
+ }
|
|
|
+ if($user['score'] < $goods->score){
|
|
|
+ CommonFn::requestAjax(false,CommonFn::getMessage('shop','score_too_low'));
|
|
|
+ }
|
|
|
+ $criteria = new EMongoCriteria();
|
|
|
+ $criteria->user('==',$user_obj->_id);
|
|
|
+ $criteria->goods('==',array(array('goods_id' => $goods->_id,'count' => 1)));
|
|
|
+ $criteria->status('!=',-2);
|
|
|
+ $have_exchange = Order::model()->count($criteria);
|
|
|
+ if($have_exchange>=$goods->max_exchange){
|
|
|
+ CommonFn::requestAjax(false,CommonFn::getMessage('shop','have_too_much'));
|
|
|
+ }
|
|
|
+ CommonFn::requestAjax(true,'success',(object)array());
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 商品兑换
|
|
|
+ */
|
|
|
+ public function actionExchange(){
|
|
|
+ $user_id = Yii::app()->getRequest()->getParam("user_id");
|
|
|
+ $goods_id = Yii::app()->getRequest()->getParam("goods_id");
|
|
|
+ $memo = Yii::app()->getRequest()->getParam("memo","");
|
|
|
+ $address_id = Yii::app()->getRequest()->getParam("address_id");
|
|
|
+ if(!$user_id||!$goods_id||!$address_id){
|
|
|
+ CommonFn::requestAjax(false,CommonFn::getMessage('message','params_illegal'));
|
|
|
+ }
|
|
|
+ $user_obj = CommonFn::apigetObJ($user_id,"ZUser",CommonFn::getMessage('user','id_not_exist'),201);
|
|
|
+ $user = RUser::model()->parseRow($user_obj);
|
|
|
+ if($user_obj->status == 0){
|
|
|
+ CommonFn::requestAjax(false,CommonFn::getMessage('user','user_shop_forbidden'));
|
|
|
+ }
|
|
|
+ $goods = CommonFn::apigetObJ($goods_id,"ZGoods",CommonFn::getMessage('shop','goods_not_exist'));
|
|
|
+ $address_list = $user_obj->shop_address?$user_obj->shop_address:array();
|
|
|
+ $address = array();
|
|
|
+ foreach ($address_list as $value) {
|
|
|
+ if($address_id == $value['address_id']){
|
|
|
+ $address = $value;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(!$address){
|
|
|
+ CommonFn::requestAjax(false,CommonFn::getMessage('shop','address_false'));
|
|
|
+ }
|
|
|
+ if ($goods->type == 'exchange' && $goods->status == 1) {
|
|
|
+ $criteria = new EMongoCriteria();
|
|
|
+ $criteria->user('==',$user_obj->_id);
|
|
|
+ $criteria->goods('==',array(array('goods_id' => $goods->_id,'count' => 1)));
|
|
|
+ $criteria->status('!=',-2);
|
|
|
+ $have_exchange = Order::model()->count($criteria);
|
|
|
+ if($have_exchange>=$goods->max_exchange){
|
|
|
+ CommonFn::requestAjax(false,CommonFn::getMessage('shop','have_too_much'));
|
|
|
+ }
|
|
|
+ $level_limit = $goods->min_level;
|
|
|
+ if($user['level']<$level_limit){
|
|
|
+ CommonFn::requestAjax(false,CommonFn::getMessage('shop','level_too_low'));
|
|
|
+ }
|
|
|
+ if($goods->count<=0){
|
|
|
+ CommonFn::requestAjax(false,CommonFn::getMessage('shop','goods_count_empty'));
|
|
|
+ }
|
|
|
+ if($user['score'] < $goods->score){
|
|
|
+ CommonFn::requestAjax(false,CommonFn::getMessage('shop','score_too_low'));
|
|
|
+ }
|
|
|
+
|
|
|
+ $order = new Order();
|
|
|
+ $order->price = $goods->score;
|
|
|
+ $order->time = time();
|
|
|
+ $order->goods = array(array('goods_id' => $goods->_id,'count' => 1));
|
|
|
+ $order->user = $user_obj->_id;
|
|
|
+ $order->status = 0;
|
|
|
+ $order->memo = $memo;
|
|
|
+ $order->address = $address;
|
|
|
+ $result = Service::factory('ScoreService')->cutDownScore($user_id,'exchange_goods',$goods->score);
|
|
|
+ if($result && $order->save()){
|
|
|
+ $goods->count = $goods->count>=1?$goods->count-1:0;
|
|
|
+ $goods->update(array('count',true));
|
|
|
+ $data['order_info'] = Order::model()->parseRow($order);
|
|
|
+ CommonFn::requestAjax(true,CommonFn::getMessage('message','operation_success'),$data);
|
|
|
+ }else{
|
|
|
+ CommonFn::requestAjax(false,'order_false',array());
|
|
|
+ }
|
|
|
+ }elseif($goods->type == 'lottery'){
|
|
|
+ $order_id = Yii::app()->getRequest()->getParam("order_id");
|
|
|
+ $order = CommonFn::apigetObJ($order_id,"ZOrder",CommonFn::getMessage('message','params_illegal'));
|
|
|
+ $order->address = $address;
|
|
|
+ $order->memo = $memo;
|
|
|
+ $order->status = 0;
|
|
|
+ if($order->update(array('address','memo','status'),true)){
|
|
|
+ $data['order_info'] = Order::model()->parseRow($order);
|
|
|
+ CommonFn::requestAjax(true,CommonFn::getMessage('message','operation_success'),$data);
|
|
|
+ }else{
|
|
|
+ CommonFn::requestAjax(false,'order_false',array());
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ CommonFn::requestAjax(false,CommonFn::getMessage('shop','goods_no_exchange'));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 商品抽奖
|
|
|
+ */
|
|
|
+ public function actionLottery(){
|
|
|
+ $user_id = Yii::app()->getRequest()->getParam("user_id");
|
|
|
+ $goods_id = Yii::app()->getRequest()->getParam("goods_id");
|
|
|
+ $address_id = Yii::app()->getRequest()->getParam("address_id");
|
|
|
+ $user_obj = CommonFn::apigetObJ($user_id,"ZUser",CommonFn::getMessage('user','id_not_exist'),201);
|
|
|
+ $user = RUser::model()->parseRow($user_obj);
|
|
|
+ if($user_obj->status == 0){
|
|
|
+ CommonFn::requestAjax(false,CommonFn::getMessage('user','user_shop_forbidden'));
|
|
|
+ }
|
|
|
+ $goods = CommonFn::apigetObJ($goods_id,"ZGoods",CommonFn::getMessage('shop','goods_not_exist'));
|
|
|
+ $level_limit = $goods->min_level;
|
|
|
+ if($user['level']<$level_limit){
|
|
|
+ CommonFn::requestAjax(false,CommonFn::getMessage('shop','level_too_low'));
|
|
|
+ }
|
|
|
+ if($goods->count<=0){
|
|
|
+ CommonFn::requestAjax(false,CommonFn::getMessage('shop','goods_count_empty'));
|
|
|
+ }
|
|
|
+ if($goods->end_time <= time() || $goods->status == -2){
|
|
|
+ CommonFn::requestAjax(false,CommonFn::getMessage('shop','goods_not_exist'));
|
|
|
+ }
|
|
|
+ if($user['score'] < $goods->score){
|
|
|
+ CommonFn::requestAjax(false,CommonFn::getMessage('shop','score_too_low'));
|
|
|
+ }
|
|
|
+ $address_list = $user_obj->shop_address?$user_obj->shop_address:array();
|
|
|
+ $address = array();
|
|
|
+ foreach ($address_list as $value) {
|
|
|
+ if($address_id == $value['address_id']){
|
|
|
+ $address = $value;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(!$address){
|
|
|
+ CommonFn::requestAjax(false,CommonFn::getMessage('shop','address_false'));
|
|
|
+ }
|
|
|
+ if ($goods->type == 'lottery') {
|
|
|
+ $criteria = new EMongoCriteria();
|
|
|
+ $criteria->user('==',$user_obj->_id);
|
|
|
+ $criteria->goods('==',array(array('goods_id' => $goods->_id,'count' => 1)));
|
|
|
+ $criteria->status('!=',-2);
|
|
|
+ $have_exchange = Order::model()->count($criteria);
|
|
|
+ if($have_exchange>=$goods->max_exchange){
|
|
|
+ CommonFn::requestAjax(false,CommonFn::getMessage('shop','have_too_much'));
|
|
|
+ }
|
|
|
+ $date = date('Ymd');
|
|
|
+ $Key = HelperKey::generateUserActionKey($user_id,$date,'lottery',$goods_id);
|
|
|
+ $times = UserActionRedis::get($Key);
|
|
|
+ $limit = $goods->max_times_per_day;
|
|
|
+ if($times>=$limit){
|
|
|
+ CommonFn::requestAjax(false,CommonFn::getMessage('shop','lottery_too_much'));
|
|
|
+ }else{
|
|
|
+ UserActionRedis::set($Key,$times+1);
|
|
|
+ }
|
|
|
+ $result = Service::factory('ScoreService')->cutDownScore($user_id,'lottery_goods',$goods->score);
|
|
|
+ $probability = $goods->probability;
|
|
|
+ $goods->lottertimes += 1;
|
|
|
+ $goods->update(array('lottertimes'),true);
|
|
|
+
|
|
|
+ // 用户中奖历史检查
|
|
|
+ // 若用户已累计中奖十次以上则无法中奖
|
|
|
+ $criteria_order = new EMongoCriteria();
|
|
|
+ $criteria_order->user('==', new MongoId($user_id));
|
|
|
+ $all_orders = Order::model()->findAll($criteria_order);
|
|
|
+ if ($all_orders->count() >= 10) {
|
|
|
+ $data['user'] = RUser::model()->parseRow($user_obj,array('id','score'));
|
|
|
+ CommonFn::requestAjax(true,CommonFn::getMessage('shop','bad_luckey'),$data);
|
|
|
+ }
|
|
|
+
|
|
|
+ $result = Service::factory('LotteryService')->checkLucky($probability);
|
|
|
+ if($result==1){
|
|
|
+ $order = new Order();
|
|
|
+ $order->time = time();
|
|
|
+ $order->goods = array(array('goods_id' => $goods->_id,'count' => 1));
|
|
|
+ $order->user = $user_obj->_id;
|
|
|
+ $order->status = 3;
|
|
|
+ $order->address = $address;
|
|
|
+ $data['user'] = RUser::model()->parseRow($user_obj,array('id','score'));
|
|
|
+ if($result && $order->save()){
|
|
|
+ $goods->count = $goods->count>=1?$goods->count-1:0;
|
|
|
+ $goods->update(array('count',true));
|
|
|
+ $data['order_id'] = (string)$order->_id;
|
|
|
+ CommonFn::requestAjax(true,CommonFn::getMessage('shop','good_luckey'),$data);
|
|
|
+ }else{
|
|
|
+ CommonFn::requestAjax(true,CommonFn::getMessage('shop','bad_luckey'),$data);
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ $data['user'] = RUser::model()->parseRow($user_obj,array('id','score'));
|
|
|
+ CommonFn::requestAjax(true,CommonFn::getMessage('shop','bad_luckey'),$data);
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ CommonFn::requestAjax(false,CommonFn::getMessage('shop','goods_no_lottery'));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 订单列表
|
|
|
+ */
|
|
|
+ public function actionOrderList(){
|
|
|
+ $user_id = Yii::app()->getRequest()->getParam("user_id");
|
|
|
+ $user_obj = CommonFn::apigetObJ($user_id,"ZUser",CommonFn::getMessage('user','id_not_exist'),201);
|
|
|
+ $page = intval(Yii::app()->getRequest()->getParam("page",1));
|
|
|
+ $pagesize = Yii::app()->params['OrderListPageSize'];
|
|
|
+ $conditions = array(
|
|
|
+ 'user'=>array('==',$user_obj->_id)
|
|
|
+ );
|
|
|
+ $order = array(
|
|
|
+ 'time'=>'desc',
|
|
|
+ );
|
|
|
+ $model = new Order();
|
|
|
+ $pagedata = CommonFn::getPagedata($model,$page,$pagesize,$conditions,$order);
|
|
|
+ $order_list = $pagedata['res'];
|
|
|
+ foreach ($order_list as $key => $value) {
|
|
|
+ $order_list[$key] = $model->output($value,array('id','price','order_num','time','time_str','status','status_str','status_str_color','goods'));
|
|
|
+ }
|
|
|
+ $data = array_values($order_list);
|
|
|
+ CommonFn::requestAjax(true,CommonFn::getMessage('message','operation_success'),$data,200,array('sum_count' => $pagedata['sum_count'],'sum_page'=>$pagedata['sum_page'],'page_size'=>$pagedata['page_size'],'current_page'=>$pagedata['current_page']));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 订单详情
|
|
|
+ */
|
|
|
+ public function actionOrderDetail(){
|
|
|
+ $order_id = Yii::app()->getRequest()->getParam("order_id");
|
|
|
+ $order = CommonFn::apigetObJ($order_id,"ZOrder",CommonFn::getMessage('message','params_illegal'));
|
|
|
+ $data = Order::model()->parseRow($order,array('id','price','express_info','time','memo','order_num','time_str','status','status_str','status_str_color','goods','address'));
|
|
|
+ CommonFn::requestAjax(true,CommonFn::getMessage('message','operation_success'),$data);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+}
|