// +---------------------------------------------------------------------- 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')); } }