| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287 |
- <?php
- namespace addons\Sudoku\api\modules\v1\controllers;
- use addons\Sudoku\common\enums\SudokuEnum;
- use addons\Sudoku\common\logic\LotteryLogic;
- use addons\Sudoku\common\logic\order\OrderFormLogic;
- use addons\Sudoku\common\logic\order\OrderInitDataLogic;
- use addons\Sudoku\common\logic\order\OrderMarketingLogic;
- use addons\Sudoku\common\models\AddonsSudoku;
- use addons\Sudoku\common\models\AddonsSudokuLog;
- use common\enums\AppEnum;
- use common\enums\GoodsTypeEnum;
- use common\enums\PreviewTypeEnum;
- use common\enums\ShippingTypeEnum;
- use common\enums\StatusEnum;
- use common\logic\order\marketing\FreeShippingMarketing;
- use common\models\common\PlatformSetting;
- use common\models\goods\GoodsAttr;
- use common\models\order\Order;
- use common\models\user\User;
- use common\models\user\UserAddress;
- use Yii;
- use api\controllers\OnAuthController;
- /**
- * 默认控制器
- *
- * Class DefaultController
- * @package addons\Sudoku\api\modules\v1\controllers
- */
- class DefaultController extends OnAuthController
- {
- public $modelClass = '';
- /**
- * 不用进行登录验证的方法
- *
- * 例如: ['index', 'update', 'create', 'view', 'delete']
- * 默认全部需要验证
- *
- * @var array
- */
- protected $authOptional = ['index','get-prize-log'];
- /**
- * 首页
- *
- * @return string
- */
- public function actionIndex()
- {
- return 'Hello world';
- }
- /**
- * ltm
- * 2021/12/22 14:39
- * 获取九空格的配置文件
- * @return string
- */
- public function actionGetConfig()
- {
- if (\Yii::$app->request->isGet) {
- $config = Yii::$app->services->setting->addons->get($this->mall_id, SudokuEnum::ADDONS_NAME, 'basic');
- //统计会员剩余次数
- if($config['type'] == StatusEnum::ENABLED){
- $params['where'][] = ['>','created_at',strtotime(date('Y-m-d'))];
- }
- if(!isset($config['is_show'])) $config['is_show'] = 1;
- $params['where'][] = ['=','user_id',$this->user_id];
- $count_times = AddonsSudokuLog::count($params);
- $limit_times = $config['lucky_number'] - $count_times;
- if($limit_times < 0) $limit_times = 0;
- $Sudokuparams['where'][] = ['mall_id'=>$this->mall_id];
- $Sudokuparams['order'] = 'id asc';
- $Sudokuparams['with'] = ['goods','coupon'];
- $list = AddonsSudoku::lists($Sudokuparams,true);
- $get_system_setting = PlatformSetting::getConfByGroup('system', true);
- if(empty($list)){
- for ($i = 0; $i<8; $i++){
- $arr['name'] = '';
- $arr['image_url'] = $get_system_setting['api_url']['value'].'/resources/addons/sudoku/img/sudoku'.$i.'.png';
- $arr['type'] = '';
- $arr['goods_id'] = '';
- $arr['score'] = '';
- $arr['red_packet_amount'] = '';
- $arr['coupon_id'] = '';
- $arr['probability'] = '0';
- $arr['stock'] = '';
- $arr['prize_id'] = $i;
- $list[$i] = $arr;
- };
- }
- if($list){
- foreach ($list as $k=>$v){
- switch ($v['type']){
- case '1': //奖励金额
- $list[$k]['name'] = $v['name']?$v['name']:'现金¥'.$v['red_packet_amount'].'';
- break;
- case '2': //奖励优惠卷
- $list[$k]['name'] = $v['name']?$v['name']:$v['coupon']['name'];
- break;
- case '3': //奖励积分
- $list[$k]['name'] = $v['name']?$v['name']:'积分'.$v['score'];
- break;
- case '4': //奖励商品
- $list[$k]['name'] = $v['name']?$v['name']:$v['goods']['goods_name'].'商品一件';
- break;
- case '5': //谢谢参与
- $list[$k]['name'] = '谢谢参与';
- break;
- }
- }
- }
- $this->success('获取成功', compact('config','list','limit_times'));
- }
- }
- /**
- * ltm
- * 2021/12/22 15:39
- * 获取九空格的配置文件
- * @return string
- */
- public function actionGetPrizeLog()
- {
- if (\Yii::$app->request->isGet) {
- $get = Yii::$app->request->get();
- $res = Yii::$app->services->validate->validate($get,[
- [['user_id','type','page'], 'safe'],
- ]);
- if($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
- $params['where'][] = ['mall_id' => $this->mall_id];
- if($get['type']) $params['where'][] = ['=','type',$get['type']]; else $params['where'][] = ['<','type','5'];
- if($get['user_id']) $params['where'][] = ['user_id' => $get['user_id']];
- $params['with'] = ['goods','coupon','user','order'];
- $params['order'] = 'id desc';
- $list = AddonsSudokuLog::listPage($params);
- $list['list'] = AddonsSudoku::getPrizeName($list['list']);
- return $this->success('操作成功', $list);
- }
- }
- /**
- * ltm
- * 2021/12/22 15:39
- * 获取九空格的配置文件
- * @return string
- */
- public function actionPreview()
- {
- if (\Yii::$app->request->isGet) {
- $get = Yii::$app->request->get();
- $res = Yii::$app->services->validate->validate($get,[
- [['id'], 'required'],
- [['address_id'], 'safe'],
- ]);
- $get = AddonsSudokuLog::exceptNullVal($get);
- if($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
- // 对象处理
- $orderFormLogic = new OrderFormLogic();
- $form = $orderFormLogic->getDefaultform($this->mall_id, $this->user_id);
- $form->id = $get['id'];
- $form->attributes = $get;
- $form['action'] = AppEnum::ACTION_PREVIEW;
- !empty($form->shipping_type) && $form->shipping_type = ShippingTypeEnum::LOGISTICS;
- // 订单初始化
- $orderInitDataLogic = new OrderInitDataLogic();
- $form = $orderInitDataLogic->execute($form, PreviewTypeEnum::BUY_NOW);
- if ($form === false) return $this->error($orderInitDataLogic->getError());
- if($get['address_id']) {
- $form->address_id = $get['address_id'];
- $address_info = UserAddress::getUserAddress($this->user_id, $get['address_id']);
- }else {
- $address_info = $form->address_default;
- }
- // 运费
- $orderMarketingLogic = new OrderMarketingLogic();
- $form = $orderMarketingLogic->run($form);
- //获取九宫格的配置
- $config = Yii::$app->services->setting->addons->get($this->mall_id, SudokuEnum::ADDONS_NAME, 'basic');
- if($config['shipping_type'] == StatusEnum::ENABLED){
- $marketing['deduct']['shipping_fee']['name'] = "运费";
- $marketing['deduct']['shipping_fee']['money'] = "0";
- }else{
- $marketing = $form['marketing'];
- }
- $pay_type_list = \Yii::$app->services->pay->getEnablePayment($this->mall_id, $this->platform);
- $shipping_type_list = ShippingTypeEnum::getMap();
- $info = compact('marketing', 'address_info', 'pay_type_list', 'shipping_type_list');
- if($config['shipping_type'] == StatusEnum::ENABLED) $info['total_pay_money'] = "0"; else $info['total_pay_money'] = $form['total_pay_money'];
- $info['is_address'] = $form['is_address'] ?? 0;
- $info['order'] = $form->order;
- $info['status'] = $form->status;
- $form->goods['num'] = 1;
- $info['goods'] = $form->goods;
- return $this->success('操作成功', $info);
- }
- }
- /**
- * ltm
- * 2021/12/22 15:39
- * 获取九空格的配置文件
- * @return string
- */
- public function actionCreate()
- {
- if (\Yii::$app->request->isPost) {
- $post = Yii::$app->request->post();
- $res = Yii::$app->services->validate->validate($post,[
- [['id','address_id'],'required'],
- [['remark'], 'safe'],
- ]);
- $post = AddonsSudokuLog::exceptNullVal($post);
- if($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
- //对象处理
- $orderFormLogic = new OrderFormLogic();
- $form = $orderFormLogic->getDefaultform($this->mall_id, $this->user_id);
- $form -> id = $post['id'];
- $form -> remark = $post['remark'];
- $form->attributes = $post;
- if($post['address_id']) $form->address_id = $post['address_id'];
- $form['action'] = AppEnum::ACTION_CREATE;
- !empty($form->shipping_type) && $form->shipping_type = ShippingTypeEnum::LOGISTICS;
- //订单初始化
- $orderInitDataLogic = new OrderInitDataLogic();
- $form = $orderInitDataLogic->execute($form, PreviewTypeEnum::BUY_NOW);
- if ($form === false) return $this->error($orderInitDataLogic->getError());
- //运费
- $orderMarketingLogic = new OrderMarketingLogic();
- $form = $orderMarketingLogic->run($form);
- //获取九宫格的配置
- $config = Yii::$app->services->setting->addons->get($this->mall_id, SudokuEnum::ADDONS_NAME, 'basic');
- if($config['shipping_type'] == StatusEnum::ENABLED){
- $form->group_order_goods['0']['mch_order_info']['shipping_money'] = "0";
- }else{
- $form->group_order_goods['0']['mch_order_info']['shipping_money'] = $form['total_pay_money'];
- }
- if($form->status=='1') return $this->error('订单已经领取但未支付,请到订单支付列表进行支付', $res);
- $res = Order::createOrder($form);
- if ($res === false) return $this->error(Order::getStaticError());
- $update_log = AddonsSudokuLog::findOne([['id'=>$post['id']]]);
- $update_log -> status = 1;
- $update_log -> receive_at = time();
- $update_log -> order_id = $res['transaction']['order_ids'];
- if(!$update_log->save()) return $this->error($update_log->getErrorMessage());//更新领奖记录
- return $this->success('领取成功', $res);
- }
- }
- /**
- * 抽奖接口
- * @Author: ltm
- * @DateTime: 2021/12/23 0023 10:26
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @param $data
- * @return bool
- */
- public function actionLottery(){
- if (\Yii::$app->request->isGet) {
- $lotteryData['mall_id'] = $this->mall_id;
- $lotteryData['user_id'] = $this->user_id;
- $lotteryLogic = new LotteryLogic();
- $res = $lotteryLogic->execute($lotteryData);//执行抽奖
- if ($res === false) return $this->error($lotteryLogic->error);
- return $this->success('操作成功',$res);
- }
- }
- /**
- * 抽奖接口 测试抽奖接口
- * @Author: ltm
- * @DateTime: 2021/12/23 0023 10:26
- * @Copyright: copyright (c) 2021 广东七件事集团
- * @param $data
- * @return bool
- */
- public function actionLotterytest(){
- for ($i = 0; $i<100;$i++){
- $this->actionLottery();
- }
- }
- }
|