123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323 |
- <?php
- // +----------------------------------------------------------------------
- // | 萤火商城系统 [ 致力于通过产品和服务,帮助商家高效化开拓市场 ]
- // +----------------------------------------------------------------------
- // | Copyright (c) 2017~2021 https://www.yiovo.com All rights reserved.
- // +----------------------------------------------------------------------
- // | Licensed 这不是一个自由软件,不允许对程序代码以任何形式任何目的的再发行
- // +----------------------------------------------------------------------
- // | Author: 萤火科技 <admin@yiovo.com>
- // +----------------------------------------------------------------------
- declare (strict_types = 1);
- namespace app\store\controller;
- use app\common\model\kjactivity\KjActivity as KjActivityModel;
- use app\common\model\kjactivity\KjActivityJoin as KjActivityJoinModel;
- use app\common\model\kjactivity\KjActivityGood as KjActivityGoodModel;
- use app\common\model\kjactivity\KjActivityHelp as KjActivityHelpModel;
- use app\common\service\Export as ExportService;
- use think\facade\Validate;
- use app\common\model\Goods;
- use app\common\model\GoodsSku;
- use app\common\library\helper;
- use think\facade\Db;
- /**
- * 活动中心 ▸ 砍价管理
- * Class Files
- * @package app\store\controller
- */
- class KjActivity extends Controller
- {
- /**
- * 添加
- * @return array|string
- */
- public function add()
- {
- // 新增记录
- $model = new KjActivityModel;
- $post = $this->postForm();
- $post['code'] = rand(10000000,99999999);
-
- $c = $this->checkTimeRange($post);
- if($c){
- return $this->renderError("已存在同一时间活动id:".$c->id??0);
- }
- if (isset($post['role']) && $post['role'] == 1){
- $post['audit_status_zg'] = 10;
- $post['is_up'] = 1;
- }else{
- $post['audit_status_zg'] = 0;
- }
- $arr = array_column($post['goods'],'limit_stock','goods_id');
- $goods_id = helper::getArrayColumn($post['goods'],'goods_id');
- $goods = \app\store\model\Goods::whereIn('goods_id',$goods_id)->select();
- foreach ($goods as $good){
- if(isset($arr[$good['goods_id']]) && $arr[$good['goods_id']]<=0){
- return $this->renderError('商品 '.$good['goods_name'].' 库存不能设置为0');
- }
- if(isset($arr[$good['goods_id']]) && $good['stock_total']<$arr[$good['goods_id']]){
- return $this->renderError('商品 '.$good['goods_name'].' 库存不足');
- }
- }
- if ($model->addOne($post)&&$model->getError()=='') {
- return $this->renderSuccess('添加成功');
- }
- return $this->renderError($model->getError() ?: '添加失败');
- }
- /**
- * 时间和现有活动是否重叠
- * @param $data
- * @return FullSendActivity|array|\think\Model|null
- * @throws \think\db\exception\DataNotFoundException
- * @throws \think\db\exception\DbException
- * @throws \think\db\exception\ModelNotFoundException
- */
- public function checkTimeRange($data){
- $id = $data['id']??0;
- return KjActivityModel::where('is_up',1)->where('id',"<>",$id)->where(function ($s) use ($data){
- $s->whereOr(function($query) use ($data){
- $query->whereBetweenTime('start_time', $data['start_time'], $data['end_time']);
- })->whereOr(function ($query) use ($data){
- $query->whereBetweenTime('end_time',$data['start_time'],$data['end_time']);
- })->whereOr(function ($query) use ($data){
- $query->where('start_time','<',$data['start_time'])->where('end_time','>',$data['end_time']);
- });
- })->find();
- }
- public function edit(){
- // 新增记录
- $model = new KjActivityModel;
- $post = $this->postForm();
- if (isset($post['role']) && $post['role'] == 1){
- $post['audit_status_zg'] = 10;
- $post['is_up'] = 1;
- }else{
- $post['audit_status_zg'] = 0;
- }
- $c = $this->checkTimeRange($post);
- if($c){
- return $this->renderError("已存在同一时间活动id:".$c->id);
- }
- $model = KjActivityModel::where('id',$post['id'])->find();
- $arr = array_column($post['goods'],'limit_stock','goods_id');
- $goods_id = helper::getArrayColumn($post['goods'],'goods_id');
- $goods = \app\store\model\Goods::whereIn('goods_id',$goods_id)->select();
- foreach ($goods as $good){
- if(isset($arr[$good['goods_id']]) && $arr[$good['goods_id']]<=0){
- return $this->renderError('商品 '.$good['goods_name'].' 库存不能设置为0');
- }
- $fullSendGoods = KjActivityGoodModel::where(['activity_id'=>$post['id'],'goods_id'=>$good['goods_id']])->find();
- if(isset($arr[$good['goods_id']]) && $good['stock_total']<($arr[$good['goods_id']]-$fullSendGoods['purchase_stock'])){
- return $this->renderError('商品 '.$good['goods_name'].' 库存不足');
- }
- }
- if ($model->edit($post)&&$model->getError()=='') {
- return $this->renderSuccess('修改成功');
- }
- return $this->renderError($model->getError() ?: '添加失败');
- }
- /**
- * 审核
- * @param int $coupon_id
- * @return array|bool
- */
- public function audit()
- {
- // 确认审核
- $postData = $this->postForm();
- $model = KjActivityModel::where('id',$postData['id'])->find();
- if(empty($model)){
- return $this->renderError('找不到数据');
- }
- unset($postData['id']);
- $res ='操作成功';
- $audit_status = $postData['audit_status_zg'];
- if($audit_status==10){
- $res = '已审核通过';
- }
- if($audit_status==20){
- $res = '已审核不通过';
- }
- $postData['audit_time'] = Date("Y-m-d H:i:s",time());
- $postData['audit_user'] = $this->store['user']['real_name'];
- if ($model->audit($postData)) {
- return $this->renderSuccess($postData,$res);
- }
- return $this->renderError($model->getError() ?: '操作失败');
- }
- //活动详情
- public function detail(int $id){
-
- $detail = KjActivityModel::detail($id,['goods','his']);
- $newarr = [];
- $goods_ids = helper::getArrayColumn($detail['goods'],'goods_id');
- $arr = \app\store\model\Goods::whereIn('goods_id',$goods_ids)->column('stock_total','goods_id');
- foreach($detail['goods'] as &$item){
- // 商品信息
- $goods = Goods::detail($item['goods_id'], ['images' => ['file'], 'skuList' => ['image']]);
- if (empty($goods)) {
- $this->error = "商品信息错误";
- continue;
- // return false;
- }
- if(isset($arr[$item['goods_id']])){
- $item['stock_total'] = $arr[$item['goods_id']];
- }
- $goodsInfo['goods_id'] = $item['goods_id'];
- $goodsInfo['limit_stock'] = $item['limit_stock'];
- $goodsInfo['residue_stock'] = $item['residue_stock'];
- $goodsInfo['goods_sku_id'] = $item['goods_sku_id'];
- $goodsInfo['goods_no'] = $goods['goods_no'];
- $goodsInfo['goods_images'] = helper::getArrayColumn($goods['images'], 'file');
- // 商品主图
- $goodsInfo['goods_image'] = current($goodsInfo['goods_images'])['preview_url'];
- $goodsInfo['image_id'] = current($goodsInfo['goods_images'])['file_id'];
- $goodsSku = GoodsSku::detail($item['goods_id'], $item['goods_sku_id']);
- // if(empty($goodsSku)) {
- // $this->error = "商品信息错误";
- // continue;
- // return false;
- // }
- $goodsInfo['goods_price_min'] = $goods['goods_price_min'];
- // $goodsInfo['goods_price'] = $goodsSku['goods_price'];
- $goodsInfo['status'] = $goods['status'];
- $goodsInfo['goods_name'] = $goods['goods_name'];
- $goodsInfo['low_price'] = $item['low_price'];
- $goodsInfo['help_kj_up_cnt'] = $item['help_kj_up_cnt'];
- unset($goodsInfo['goods_images']);
- $newarr[] = $goodsInfo;
- }
- $detail['goods_list'] = $newarr;
-
- return $this->renderSuccess(compact('detail'));
- }
- /**
- * 启用 禁用
- * @param int $coupon_id
- * @return array|bool
- */
- public function down(int $id){
- // 确认审核
- // $postData = $this->postForm();
- $model = KjActivityModel::where('id',$id)->find();
- if(empty($model)){
- return $this->renderError('找不到数据');
- }
- if($model['is_up']==0){
- return $this->renderError('已经作废了,不要重复操作');
- }
- $postData['is_up'] = 0;
- $postData['end_time'] = Date("Y-m-d H:i:s",time()-1);
- if ($model->down($postData)) {
- return $this->renderSuccess($postData,'作废成功,活动已失效');
- }
- return $this->renderError($model->getError() ?: '操作失败');
- }
- //活动信息
- public function activityinfo(int $activity_id){
- $this->tj();
- $activity = KjActivityModel::where('id',$activity_id)->find();
- if(empty($activity)){
- return $this->renderError("找不到信息");
- }
- $kjgoods = KjActivityGoodModel::where('activity_id',$activity_id)->find();
- $goods = Goods::detail($kjgoods['goods_id'],[]);
- $kjgoods['goods_name'] = $goods['goods_name'];
- $kjgoods['goods_price_min'] = $goods['goods_price_min'];
- $data['activity'] = $activity;
- $data['goods'] = $kjgoods;
- $join_cnt = KjActivityJoinModel::where('activity_id',$activity_id)->count();
- $help_cnt = KjActivityHelpModel::where('activity_id',$activity_id)->count();
- $submit_order_cnt = KjActivityJoinModel::where('activity_id',$activity_id)->where('is_submit_order',1)->count();
- $is_pay_cnt = KjActivityJoinModel::where('activity_id',$activity_id)->where('is_pay',1)->count();
- $kj_price_sum = KjActivityJoinModel::where('activity_id',$activity_id)->where('is_pay',1)->sum('order_price');
- $tj['help_cnt'] = $help_cnt;
- $tj['join_cnt'] = $join_cnt;
- $tj['submit_order_cnt'] = $submit_order_cnt;
- $tj['is_pay_cnt'] = $is_pay_cnt;
- $tj['kj_price_sum'] = $kj_price_sum;
- $data['tj'] = $tj;
- return $this->renderSuccess(compact("data"));
- }
- //
- public function cancelForbidden($join_id){
- KjActivityJoinModel::where("id",$join_id)->where('forbidden',1)->update(['forbidden'=>2]);
- return $this->renderSuccess();
- }
- public function tj(){
- $sql = 'select order_id from yoshop_order where order_id in (SELECT order_id FROM yoshop_kj_activity_join) and pay_status=20';
- $result = Db::query($sql);
- $order_id_arr = [];
- foreach($result as $row){
- $order_id_arr[] = $row['order_id'];
- }
- $orderstr = implode(',', $order_id_arr);
- if(!empty($order_id_arr)){
- $sqlup = 'update yoshop_kj_activity_join set is_pay=1 where order_id in ('.$orderstr.')';
- Db::query($sqlup);
- }
-
- }
- //
- public function joinlist(int $activity_id){
- $model = new KjActivityJoinModel;
- $param = $this->request->param();
- $param = array_merge($param,['activity_id'=>$activity_id]);
- $list = $model->getList($param);
- return $this->renderSuccess(compact('list'));
- }
-
- /**
- * 列表
- * @return array
- * @throws \think\db\exception\DbException
- */
- public function list()
- {
- $model = new KjActivityModel;
- $list = $model->getList($this->request->param());
- return $this->renderSuccess(compact('list'));
- }
- }
|