208 lines
6.4 KiB
PHP
208 lines
6.4 KiB
PHP
<?php
|
|
|
|
namespace app\api\logic;
|
|
|
|
use app\common\basics\Logic;
|
|
use app\common\model\localstore\LocalStoreGoods;
|
|
use app\common\model\localstore\LocalStoreGoodsPic;
|
|
use app\common\enum\LocalStoreFileEnum;
|
|
use think\facade\Config;
|
|
|
|
class LocalStoreGoodsLogic extends Logic
|
|
{
|
|
private static $STATUS = [
|
|
'stay' => 0, // 默认
|
|
'shelves' => 1, // 已上架
|
|
'status_sold_out' => 2 // 已下架
|
|
];
|
|
|
|
private static $AUDIT_STATUS = [
|
|
'audit_status_stay' => 0, // 待审核
|
|
'audit_status_ok' => 1, // 审核通过
|
|
'audit_status_refuse' => 2 // 审核失败
|
|
];
|
|
|
|
// 获取商品列表
|
|
public static function lists($get)
|
|
{
|
|
// 1 已上架 2 已下架
|
|
if ($get['type'] == 1 || $get['type'] == 2) {
|
|
$where[] = ['state', '=', $get['type']];
|
|
$where[] = ['audit_status', '=', self::$AUDIT_STATUS['audit_status_ok']]; // 审核成功
|
|
}
|
|
|
|
// 待审核
|
|
if ($get['type'] == 3) {
|
|
$where[] = ['audit_status', '=', self::$AUDIT_STATUS['audit_status_stay']];
|
|
}
|
|
|
|
// 审核失败
|
|
if ($get['type'] == 4) {
|
|
$where[] = ['audit_status', '=', self::$AUDIT_STATUS['audit_status_refuse']];
|
|
}
|
|
|
|
$m_where[] = ['lstore_id', '=', $get['lstore_id']];
|
|
$m_where[] = ['delete_time', '=', 0];
|
|
|
|
$list = LocalStoreGoods::with('pic')
|
|
->field('id, lstore_id, title, price')
|
|
->where($where)
|
|
->where($m_where)
|
|
->order('id', 'desc')
|
|
->page($get['page_no'], $get['page_size'])
|
|
->select()
|
|
->toArray();
|
|
|
|
$count = LocalStoreGoods::where($where)->where($m_where)->count();
|
|
|
|
foreach ($list as &$v) {
|
|
foreach ($v['pic'] as &$v1) {
|
|
$v1['url'] = Config::get('aliyunoss.domain') . $v1['url'];
|
|
}
|
|
}
|
|
|
|
// 统计审核失败的商品数量
|
|
$fail_goods_count = LocalStoreGoods::where($m_where)->where(['audit_status' => self::$AUDIT_STATUS['audit_status_refuse']])->count();
|
|
|
|
$result = [
|
|
'fail_goods_count' => $fail_goods_count,
|
|
'count' => $count,
|
|
'lists' => $list,
|
|
'more' => is_more($count, $get['page_no'], $get['page_size']),
|
|
'page_no' => $get['page_no'],
|
|
'page_size' => $get['page_size']
|
|
];
|
|
|
|
return $result;
|
|
}
|
|
|
|
// 添加商品
|
|
public static function saveGoods($form, $user_id)
|
|
{
|
|
try {
|
|
$len = strlen(Config::get('aliyunoss.domain'));
|
|
|
|
if ($form['type'] === 'add') {
|
|
$id = LocalStoreGoods::insertGetId([
|
|
'user_id' => $user_id,
|
|
'lstore_id' => $form['lstore_id'],
|
|
'title' => $form['title'],
|
|
'price' => $form['price'],
|
|
'desc' => $form['desc'] ?? '',
|
|
'details' => $form['details'] ?? '',
|
|
'state' => self::$STATUS['shelves'],
|
|
'create_time' => time(),
|
|
]);
|
|
} else if ($form['type'] === 'edit') {
|
|
LocalStoreGoods::where(['id' => $form['id']])->update([
|
|
'title' => $form['title'],
|
|
'price' => $form['price'],
|
|
'desc' => $form['desc'] ?? '',
|
|
'details' => $form['details'] ?? '',
|
|
'update_time' => time(),
|
|
]);
|
|
|
|
LocalStoreGoodsPic::where(['lsg_id' => $form['id']])->delete();
|
|
$id = $form['id'];
|
|
}
|
|
|
|
// 处理图片
|
|
$data = [];
|
|
foreach ($form['url'] as $k => &$v) {
|
|
$data[$k]['lsg_id'] = $id;
|
|
$data[$k]['url'] = substr($v, $len, strlen($v));
|
|
}
|
|
LocalStoreGoodsPic::insertAll($data);
|
|
return true;
|
|
} catch (\Exception $e) {
|
|
self::$error = $e->getMessage();
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public static function editGoods($form, $user_id)
|
|
{
|
|
try {
|
|
$form['user_id'] = $user_id;
|
|
$form['update'] = time();
|
|
$form['state'] = 1;
|
|
|
|
$pic = $form['url'];
|
|
unset($form['url']);
|
|
$id = LocalStoreGoods::update([
|
|
'title' => $form['title'],
|
|
'price' => $form['price'],
|
|
'desc' => $form['desc'],
|
|
'details' => $form['details'],
|
|
]);
|
|
|
|
$data = [];
|
|
foreach ($pic as $k => &$v) {
|
|
$data[$k]['lsg_id'] = $id;
|
|
$data[$k]['url'] = basename($v);
|
|
}
|
|
|
|
LocalStoreGoodsPic::insertAll($data);
|
|
|
|
return true;
|
|
} catch (\Exception $e) {
|
|
self::$error = $e->getMessage();
|
|
return false;
|
|
}
|
|
}
|
|
|
|
// 获取商家自身的商品详情
|
|
public static function shop_details($get)
|
|
{
|
|
$data = LocalStoreGoods::with('pic')
|
|
->where([
|
|
'id' => $get['id'],
|
|
'lstore_id' => $get['lstore_id'],
|
|
'delete_time' => 0,
|
|
'audit_status' => $get['audit_status']
|
|
])->find()->toArray();
|
|
|
|
if ($data) {
|
|
foreach ($data['pic'] as &$v) {
|
|
$v['url'] = Config::get('aliyunoss.domain') . $v['url'];
|
|
}
|
|
return $data;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
// 获取商品详情
|
|
public static function details($get)
|
|
{
|
|
$data = LocalStoreGoods::with('pic')
|
|
->where([
|
|
'id' => $get['id'],
|
|
'lstore_id' => $get['lstore_id'],
|
|
'delete_time' => 0,
|
|
'audit_status' => self::$AUDIT_STATUS['audit_status_ok'],
|
|
])->find()->toArray();
|
|
|
|
if ($data) {
|
|
foreach ($data['pic'] as &$v) {
|
|
$v['url'] = Config::get('aliyunoss.domain') . $v['url'];
|
|
}
|
|
return $data;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
// 设置状态
|
|
public static function setState($form, $user_id)
|
|
{
|
|
if (isset(self::$STATUS[$form['type']])) {
|
|
$state = self::$STATUS[$form['type']];
|
|
$result = LocalStoreGoods::where(['id' => $form['id'], 'user_id' => $user_id, 'lstore_id' => $form['lstore_id']])->update([
|
|
'state' => $state,
|
|
]);
|
|
return $result;
|
|
}
|
|
return false;
|
|
}
|
|
} |