publicVerifyParam($param); if ($verify['status'] != 1) { return $verify; } if (empty($param['page']) || empty($param['limit'])) { return callBack(statusCode()['error'], '缺少必要参数'); } $map = $this->getUnitMap($param); $UnitLibraryModel = new UnitLibraryModel(); $RetailGoodsModel = new RetailGoodsModel(); $list = $UnitLibraryModel->getSelect($map, '', 'add_time desc', $param['page'] . ',' . $param['limit']); foreach ($list as &$val) { $val['goods_num'] = $RetailGoodsModel->getCount(['unit_name' => $val['name'], 'status' => ['neq', 2]]); $val['add_time'] = $val['add_time'] ? date("Y-m-d H:i:s", $val['add_time']) : '-'; } if (!empty($list)) { return callBack(statusCode()['success'], '获取成功', [ 'list' => $list, 'count' => $UnitLibraryModel->getCount($map), ]); } else { return callBack(statusCode()['success'], '暂无数据', [ 'list' => [], 'count' => 0, ]); } } /** * 获取单位库列表-供筛选 * @param $param * $param['name'] 单位名称 * $param['merchant_id'] 商户ID * $param['store_id'] 门店ID * $param['type'] 1商户 2门店 * @return array */ public function getUnitSelect($param) { $verify = $this->publicVerifyParam($param); if ($verify['status'] != 1) { return $verify; } $map = $this->getUnitMap($param); $UnitLibraryModel = new UnitLibraryModel(); $list = $UnitLibraryModel->getSelect($map, 'id,name', 'add_time desc'); return callBack(statusCode()['success'], empty($list) ? '暂无数据' : '获取成功', [ 'list' => $list, ]); } /** * 添加单位 * @param $param * $param['name'] 单位名称 * $param['merchant_id'] 商户ID * $param['store_id'] 门店ID * $param['type'] 1商户 2门店 * @return array */ public function addUnit($param) { $verify = $this->publicVerifyParam($param); if ($verify['status'] != 1) { return $verify; } $map = $this->getUnitMap($param); $UnitLibraryModel = new UnitLibraryModel(); // 验重 $repeat = $UnitLibraryModel->getFind($map); if ($repeat) { return callBack(statusCode()['error'], '该单位已存在'); } $new_data = [ 'state' => 1, 'type' => $param['type'], 'name' => $param['name'], 'add_time' => time(), 'merchant_id' => $param['merchant_id'], 'store_id' => $param['store_id'] ? $param['store_id'] : 0, ]; $res = $UnitLibraryModel->addOrder($new_data); if ($res) { return callBack(statusCode()['success'], '单位添加成功', ['id' => $res]); } else { return callBack(statusCode()['error'], '单位添加失败,请稍后重试'); } } /** * 编辑单位 * @param $param * $param['id'] 单位ID * $param['name'] 单位名称 * $param['merchant_id'] 商户ID * $param['store_id'] 门店ID * $param['type'] 1商户 2门店 * @return array */ public function editUnit($param) { $verify = $this->publicVerifyParam($param); if ($verify['status'] != 1) { return $verify; } if (!$param['id']) { return callBack(statusCode()['error'], '缺少必要参数'); } $map = $this->getUnitMap($param); unset($map['name']); $map['type'] = $param['type']; $UnitLibraryModel = new UnitLibraryModel(); $repeatMap = [ 'id' => ['neq', $param['id']], 'merchant_id' => $param['merchant_id'], 'name' => trim($param['name']), 'state' => 1, ]; $repeat = $UnitLibraryModel->getFind($repeatMap); if ($repeat) { return ['status' => 0, 'msg' => '已存在同名单位']; } else { $result = $UnitLibraryModel->updateOrder($map, ['name' => $param['name']]); if ($result) { return callBack(statusCode()['success'], '修改成功'); } else { return callBack(statusCode()['error'], '单位未修改'); } } } /** * 删除单位 * @param $param * $param['id'] 单位ID * $param['merchant_id'] 商户ID * $param['store_id'] 门店ID * $param['type'] 1商户 2门店 * @return array */ public function deleteUnit($param) { $verify = $this->publicVerifyParam($param); if ($verify['status'] != 1) { return $verify; } if (!$param['id']) { return callBack(statusCode()['error'], '缺少必要参数'); } $map = $this->getUnitMap($param); if ($param['type'] == 2) { $map['store_id'] = $param['store_id']; } $UnitLibraryModel = new UnitLibraryModel(); $unitInfo = $UnitLibraryModel->getFind($map, 'merchant_id,store_id,type'); if ($unitInfo['type'] == 0) { return callBack(statusCode()['error'], '系统自带单位,不允许删除'); } $res = $UnitLibraryModel->updateOrder($map, ['state' => 0]); if ($res) { return callBack(statusCode()['success'], '单位删除成功'); } else { return callBack(statusCode()['error'], '单位删除失败'); } } /** * 验证请求参数 * @param $param * @return mixed */ private function publicVerifyParam($param) { if (empty($param['type']) || !in_array($param['type'], [1, 2]) || empty($param['merchant_id']) || $param['type'] == 2 && empty($param['store_id'])) { return callBack(statusCode()['error'], '缺少必要参数'); } return callBack(statusCode()['success'], '参数验证成功'); } /** * 获取查询条件 * @param $param * $param['merchant_id'] (必传)商户ID * $param['store_id'] (必传)门店ID * $param['type'] (必传)1商户 2门店 * $param['id'] (非必传)单位ID * $param['name'] (非必传)单位名称 * $param['start_time'] (非必传)开始时间 * $param['end_time'] (非必传)结束时间 * @return array */ private function getUnitMap($param) { $map = [ 'state' => 1, 'merchant_id' => ['in', [$param['merchant_id'], 0]], ]; if (!empty($param['id'])) { $map['id'] = $param['id']; } if ($param['start_time'] && $param['end_time']) { $map['add_time'] = ['between', [strtotime($param['start_time']), strtotime($param['end_time'])]]; } if (trim($param['name'])) { $map['name'] = ['like', '%' . trim($param['name']) . '%']; } switch ($param['type']) { case 1: // 商户 $map['type'] = ['in', [0, 1]]; break; case 2: // 门店 $map['store_id'] = ['in', [$param['store_id'], 0]]; $map['type'] = ['in', [0, 2]]; break; } return $map; } }