123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230 |
- <?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\library\helper;
- use app\store\model\mj\MjSendActivity as MjSendActivityModel;
- use app\store\model\mj\MjSendActivityAction;
- use app\store\model\mj\MjSendGoods as MjSendGoodsModel;
- use think\facade\Log;
- /**
- * 满件送赠品管理
- * Class Files
- * @package app\store\controller
- */
- class MjSendActivity extends Controller
- {
- /**
- *
- * @return array
- * @author: zjwhust
- * @Time: 2022/1/21 16:49
- */
- public function list(){
- $model = new MjSendActivityModel;
- $list = $model->getList($this->request->param());
- return $this->renderSuccess(compact('list'));
- }
- /**
- * 添加卡
- * @return array|string
- */
- public function add()
- {
- // 新增记录
- $model = new MjSendActivityModel;
- $param = $this->postForm();
- $param['audit_user'] = $this->store['user']['real_name']?:'';
- $param['audit_admin_id'] = $this->store['user']['store_user_id']?:'';
- $param['admin_id'] = $this->store['user']['store_user_id']?:'';
- $activity_time = between_time_format($param['between_time']); // 生成活动编号
- $param['start_time'] = date("Y-m-d H:i:s",$activity_time['start_time']);
- $param['end_time'] = date("Y-m-d H:i:s",$activity_time['end_time']);
- if (count($param['goods_ids']??[]) != 1){
- return $this->renderSuccess('活动商品有且仅有一款');
- }
- if (isset($param['role']) && $param['role'] == 1){
- $param['status'] = 1;
- $param['audit_time'] = Date("Y-m-d H:i:s",time());
- $param['audit_status'] = 1;
- }else{
- $param['audit_status'] = 0;
- }
- $arr = array_column($param['goods_ids'],'limit_stock','goods_id');
- $goods_id = helper::getArrayColumn($param['goods_ids'],'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'].' 库存不足');
- }
- }
- //Log::debug('ST::'.$param['start_time'].',ET::'.$param['end_time']);
- $flag = $model->addOne($param);
- if ($flag == 1) {
- return $this->renderSuccess('添加成功');
- }elseif ($flag == 3){
- return $this->renderError('活动时间内存在其他进行中的满件送活动');
- }
- return $this->renderError($model->getError() ?: '添加失败');
- }
- /**
- * 添加卡
- * @return array|string
- */
- public function update()
- {
- // 新增记录
- $param = $this->postForm();
- $model = MjSendActivityModel::detail($param['id']);
- $param['audit_user'] = $this->store['user']['real_name']?:'';
- $param['audit_admin_id'] = $this->store['user']['store_user_id']?:'';
- $activity_time = between_time_format($param['between_time']);
- $param['start_time'] = date("Y-m-d H:i:s",$activity_time['start_time']);
- $param['end_time'] = date("Y-m-d H:i:s",$activity_time['end_time']);
- if (isset($param['role']) && $param['role'] == 1){
- $param['status'] = 1;
- $param['audit_time'] = Date("Y-m-d H:i:s",time());
- $param['audit_status'] = 1;
- }else{
- $param['audit_status'] = 0;
- }
- $arr = array_column($param['goods_ids'],'limit_stock','goods_id');
- $goods_id = helper::getArrayColumn($param['goods_ids'],'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 = MjSendGoodsModel::where(['mj_send_activity_id'=>$param['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'].' 库存不足');
- }
- }
- $flag = $model->updOne($param);
- if ($flag == 1) {
- return $this->renderSuccess('修改成功');
- }elseif ($flag == 3){
- return $this->renderError('活动时间内存在其他进行中的满件送活动');
- }
- return $this->renderError($model->getError() ?: '修改失败');
- }
- //满赠活动详情
- public function detail(int $act_id){
- $detail = MjSendActivityModel::detail($act_id,['goodsExcept','giftGoods']);
- $detail = $detail->toArray();
- $detail['goodsExcept'] = [0=>$detail['goodsExcept']];
- $goods_ids = helper::getArrayColumn($detail['goodsExcept'],'goods_id');
- $arr = \app\store\model\Goods::whereIn('goods_id',$goods_ids)->column('stock_total','goods_id');
- foreach ($detail['goodsExcept'] as &$item){
- if(isset($arr[$item['goods_id']])){
- $item['stock_total'] = $arr[$item['goods_id']];
- }
- $item['goods_info']['goods_image'] = env('chef.sso_domain_text').$item['goods_info']['goods_image'];
- }
- return $this->renderSuccess(compact('detail'));
- }
- /**
- * 满赠活动详情启用/禁用
- * @param int $act_id
- * @return array|bool
- */
- public function status(){
- $postData = $this->postForm();
- $model = MjSendActivityModel::detail($postData['activity_id']);
- $res ='操作成功';
- $status =$postData['status'];
- if($status==1){
- $res = '已作废';
- }
- if($status==0){
- $res = '已禁用';
- }
- $flag = $model->status($postData);
- if ($flag) {
- return $this->renderSuccess($postData,$res);
- }
- if ($status==1){
- return $this->renderError( '与其他活动时间范围重叠,请检查活动时间');
- }
- return $this->renderError($model->getError() ?: '操作失败');
- }
- /**
- * 审核
- * @param
- * @return array|bool
- */
- public function audit()
- {
- // 确认审核
- $postData = $this->postForm();
- $model = MjSendActivityModel::detail($postData['activity_id']);
- if(empty($model)){
- return $this->renderError('找不到满件送活动');
- }
- $res ='操作成功';
- $audit_status =$postData['audit_status'];
- if($audit_status == 1){
- $res = '已审核通过';
- $postData['status'] = 1;//启用
- }
- if($audit_status == 2){
- $res = '已审核不通过';
- $postData['status'] = 0;//禁用
- }
- $postData['audit_time'] = Date("Y-m-d H:i:s",time());
- $postData['audit_user'] = $this->store['user']['real_name']?:'';
- $postData['audit_admin_id'] = $this->store['user']['store_user_id']?:'';
- $flag = $model->audit($postData);
- if ($flag) {
- return $this->renderSuccess($postData,$res);
- }
- if($audit_status == 1){
- return $this->renderError( '已有活动处于进行中,请重新修改活动时间');
- }
- return $this->renderError($model->getError() ?: '操作失败');
- }
- /**
- * 行动日志
- * @param int $act_id
- * @return array
- */
- public function actionsList(int $act_id){
- $model = new MjSendActivityAction();
- $list = $model->getLists($act_id);
- return $this->renderSuccess(compact('list'));
- }
- }
|