diff --git a/app/data/command/UserLevel.php b/app/data/command/UserUpgrade.php similarity index 97% rename from app/data/command/UserLevel.php rename to app/data/command/UserUpgrade.php index 24d3f4d72..73ca1c31c 100644 --- a/app/data/command/UserLevel.php +++ b/app/data/command/UserUpgrade.php @@ -13,7 +13,7 @@ use think\console\Output; * Class UserLevel * @package app\data\command */ -class UserLevel extends Command +class UserUpgrade extends Command { protected function configure() { diff --git a/app/data/controller/ShopGoods.php b/app/data/controller/ShopGoods.php index 8dab25c7b..06c905ae1 100644 --- a/app/data/controller/ShopGoods.php +++ b/app/data/controller/ShopGoods.php @@ -51,7 +51,7 @@ class ShopGoods extends Controller elseif ($this->type === 'recycle') $query->where(['deleted' => 1]); else $this->error("无法加载 {$this->type} 数据列表!"); // 列表排序并显示 - $query->like('code,name,mark')->equal('status,cate'); + $query->like('code,name,marks,cateids')->equal('status'); $query->order('sort desc,id desc')->page(); } @@ -65,7 +65,7 @@ class ShopGoods extends Controller public function select() { $query = $this->_query($this->table); - $query->equal('status,cate')->like('code,name,mark'); + $query->equal('status')->like('code,name,marks')->in('cates'); $query->where(['deleted' => 0])->order('sort desc,id desc')->page(); } @@ -78,13 +78,9 @@ class ShopGoods extends Controller */ protected function _page_filter(array &$data) { - $this->marks = GoodsService::instance()->getMarkList(); - $this->clist = GoodsService::instance()->getCateList('arr2table'); - $clist = $this->app->db->name('ShopGoodsCate')->whereIn('id', array_column($data, 'cate'))->column('pid,name,status', 'id'); - foreach ($data as &$vo) { - $vo['cate'] = $clist[$vo['cate']] ?? $vo['cate']; - $vo['mark'] = str2arr($vo['mark'] ?: '', ',', $this->marks); - } + $this->marks = GoodsService::instance()->getMarkData(); + $this->cates = GoodsService::instance()->getCateData(); + GoodsService::instance()->buildItemData($data, false); } /** @@ -153,12 +149,15 @@ class ShopGoods extends Controller $data['code'] = CodeExtend::uniqidNumber(14, 'G'); } if ($this->request->isGet()) { - $data['mark'] = str2arr($data['mark'] ?? ''); - $this->marks = GoodsService::instance()->getMarkList(); - $this->cates = GoodsService::instance()->getCateList('arr2table'); - $this->levels = $this->app->db->name('DataUserLevel')->where(['status' => 1])->order('number asc,id desc')->select()->toArray(); - $this->trucks = $this->app->db->name('ShopTruckTemplate')->where(['status' => 1, 'deleted' => 0])->order('sort desc,id desc')->column('code,name'); - $this->discounts = $this->app->db->name('DataUserDiscount')->where(['status' => 1, 'deleted' => 0])->order('sort desc,id desc')->select()->toArray(); + $data['marks'] = str2arr($data['marks'] ?? ''); + $data['payment'] = str2arr($data['payment'] ?? ''); + $data['cateids'] = str2arr($data['cateids'] ?? ''); + $this->marks = GoodsService::instance()->getMarkData(); + $this->cates = GoodsService::instance()->getCateData(); + $this->trucks = $this->app->db->name('ShopTruckTemplate')->where(['status' => 1, 'deleted' => 0])->order('sort desc,id desc')->column('code,name', 'code'); + $this->payments = $this->app->db->name('ShopPayment')->where(['status' => 1, 'deleted' => 0])->order('sort desc,id desc')->column('type,code,name', 'code'); + $this->upgrades = $this->app->db->name('DataUserUpgrade')->where(['status' => 1, 'deleted' => 0])->order('number asc,id desc')->column('number,name', 'id'); + $this->discounts = $this->app->db->name('DataUserDiscount')->where(['status' => 1, 'deleted' => 0])->order('sort desc,id desc')->column('id,name,items', 'id'); // 商品规格处理 $fields = 'goods_sku `sku`,goods_code,goods_spec `key`,price_selling `selling`,price_market `market`,number_virtual `virtual`,number_express `express`,reward_balance `balance`,reward_integral `integral`,status'; $data['data_items'] = json_encode($this->app->db->name('ShopGoodsItem')->where(['goods_code' => $data['code']])->column($fields, 'goods_spec'), JSON_UNESCAPED_UNICODE); @@ -169,7 +168,8 @@ class ShopGoods extends Controller [$count, $items] = [0, array_column(json_decode($data['data_items'], true), 0)]; foreach ($items as $item) $count += intval($item['status']); if (empty($count)) $this->error('无效的的商品价格信息!'); - $data['mark'] = arr2str($data['mark'] ?? []); + $data['marks'] = arr2str($data['marks'] ?? []); + $data['payment'] = arr2str($data['payment'] ?? []); if (empty($data['price_market'])) $data['price_market'] = min(array_column($items, 'market')); if (empty($data['price_selling'])) $data['price_selling'] = min(array_column($items, 'selling')); $this->app->db->name('ShopGoodsItem')->where(['goods_code' => $data['code']])->update(['status' => 0]); diff --git a/app/data/controller/UserDiscount.php b/app/data/controller/UserDiscount.php index 4f6cbb167..801ba2ac0 100644 --- a/app/data/controller/UserDiscount.php +++ b/app/data/controller/UserDiscount.php @@ -84,7 +84,7 @@ class UserDiscount extends Controller } $vo['items'] = json_encode($rule, JSON_UNESCAPED_UNICODE); } else { - $query = $this->app->db->name('DataUserLevel'); + $query = $this->app->db->name('DataUserUpgrade'); $this->levels = $query->where(['status' => 1])->order('number asc')->select()->toArray(); if (empty($this->levels)) $this->error('未配置用户等级!'); if (!empty($vo['items'])) foreach (json_decode($vo['items'], true) as $item) { diff --git a/app/data/controller/UserLevel.php b/app/data/controller/UserUpgrade.php similarity index 97% rename from app/data/controller/UserLevel.php rename to app/data/controller/UserUpgrade.php index 717a317ae..8593696a9 100644 --- a/app/data/controller/UserLevel.php +++ b/app/data/controller/UserUpgrade.php @@ -7,16 +7,16 @@ use think\admin\Controller; /** * 用户等级管理 - * Class UserLevel + * Class UserUpgrade * @package app\data\controller */ -class UserLevel extends Controller +class UserUpgrade extends Controller { /** * 绑定数据表 * @var string */ - private $table = 'DataUserLevel'; + private $table = 'DataUserUpgrade'; /** * 用户等级管理 diff --git a/app/data/controller/api/Auth.php b/app/data/controller/api/Auth.php index 032c7298e..083619aed 100644 --- a/app/data/controller/api/Auth.php +++ b/app/data/controller/api/Auth.php @@ -43,7 +43,7 @@ abstract class Auth extends Controller protected function initialize() { // 接口数据类型 - $this->type = input('api') ?: $this->request->header('api-name'); + $this->type = $this->request->header('api-name') ?: input('api'); $this->type = $this->type ?: $this->request->header('api-type'); if (empty($this->type) || empty(UserService::TYPES[$this->type])) { $this->error("接口通道未定义!"); diff --git a/app/data/controller/api/Goods.php b/app/data/controller/api/Goods.php index 6511b2eb3..2f33fc9ff 100644 --- a/app/data/controller/api/Goods.php +++ b/app/data/controller/api/Goods.php @@ -29,7 +29,7 @@ class Goods extends Controller */ public function getMark() { - $this->success('获取标签成功', GoodsService::instance()->getMarkList()); + $this->success('获取标签成功', GoodsService::instance()->getMarkData()); } /** diff --git a/app/data/service/GoodsService.php b/app/data/service/GoodsService.php index 84008e2bf..0012b20a6 100644 --- a/app/data/service/GoodsService.php +++ b/app/data/service/GoodsService.php @@ -74,11 +74,39 @@ class GoodsService extends Service return $cates; } + /** + * 获取分类数据 + * @param boolean $simple 简化数据 + * @return array + */ + public function getCateData($simple = true): array + { + $cates = $this->app->db->name('ShopGoodsCate')->column('id,pid,name', 'id'); + foreach ($cates as $cate) if (isset($cates[$cate['pid']])) { + $cates[$cate['id']]['parent'] =& $cates[$cate['pid']]; + } + foreach ($cates as $key => $cate) { + $id = $cate['id']; + $cates[$id]['ids'][] = $cate['id']; + $cates[$id]['names'][] = $cate['name']; + while (isset($cate['parent']) && $cate = $cate['parent']) { + $cates[$id]['ids'][] = $cate['id']; + $cates[$id]['names'][] = $cate['name']; + } + $cates[$id]['ids'] = array_reverse($cates[$id]['ids']); + $cates[$id]['names'] = array_reverse($cates[$id]['names']); + if ($simple && count($cates[$id]['names']) !== $this->getCateLevel()) { + unset($cates[$key]); + } + } + return $cates; + } + /** * 获取商品标签数据 * @return array */ - public function getMarkList(): array + public function getMarkData(): array { $map = ['status' => 1]; $query = $this->app->db->name('ShopGoodsMark'); @@ -88,29 +116,24 @@ class GoodsService extends Service /** * 商品数据绑定 * @param array $data 商品主数据 + * @param boolean $simple 简化数据 * @return array * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ - public function buildItemData(array &$data = []): array + public function buildItemData(array &$data = [], $simple = true): array { - $cates = $this->app->db->name('ShopGoodsCate')->column('id,pid,name', 'id'); - foreach ($cates as $cate) if (isset($cates[$cate['pid']])) { - $cates[$cate['id']]['parent'] =& $cates[$cate['pid']]; - } - $codes = array_unique(array_column($data, 'code')); - $query = $this->app->db->name('ShopGoodsItem')->withoutField('id,status,create_at'); - $items = $query->whereIn('goods_code', $codes)->where(['status' => 1])->select()->toArray(); + $cates = $this->getCateData(); $marks = $this->app->db->name('ShopGoodsMark')->where(['status' => 1])->column('name'); + $query = $this->app->db->name('ShopGoodsItem')->withoutField('id,status,create_at'); + $items = $query->whereIn('goods_code', array_unique(array_column($data, 'code')))->where(['status' => 1])->select()->toArray(); foreach ($data as &$vo) { - $vo['marks'] = str2arr($vo['mark'], ',', $marks); - $vo['cates'] = $cates[$vo['cate']] ?? []; - $vo['slider'] = explode('|', $vo['slider']); - $vo['specs'] = json_decode($vo['data_specs'], true); - $vo['items'] = []; + [$vo['marks'], $vo['cateids'], $vo['cateinfo']] = [str2arr($vo['marks'], ',', $marks), str2arr($vo['cateids']), []]; + foreach ($cates as $cate) if (in_array($cate['id'], $vo['cateids'])) $vo['cateinfo'] = $cate; + [$vo['slider'], $vo['specs'], $vo['items']] = [str2arr($vo['slider'], '|'), json_decode($vo['data_specs'], true), []]; foreach ($items as $item) if ($item['goods_code'] === $vo['code']) $vo['items'][] = $item; - unset($vo['mark'], $vo['sort'], $vo['status'], $vo['deleted'], $vo['data_items'], $vo['data_specs']); + if ($simple) unset($vo['marks'], $vo['sort'], $vo['status'], $vo['deleted'], $vo['data_items'], $vo['data_specs']); } return $data; } diff --git a/app/data/service/RebateCurrentService.php b/app/data/service/RebateCurrentService.php index 4a9dee09a..7e9966ba5 100644 --- a/app/data/service/RebateCurrentService.php +++ b/app/data/service/RebateCurrentService.php @@ -221,7 +221,7 @@ class RebateCurrentService extends Service $pids = array_reverse(explode('-', trim($this->user['path'], '-'))); if (empty($pids)) return false; // 获取拥有差额奖励的等级 - $query = $this->app->db->name('DataUserLevel'); + $query = $this->app->db->name('DataUserUpgrade'); $numbs = $query->whereLike('rule', '%,' . self::PRIZE_05 . ',%')->column('number'); // 获取可以参与奖励的代理 $query = $this->app->db->name('DataUser')->whereIn('vip_number', $numbs); @@ -275,6 +275,6 @@ class RebateCurrentService extends Service protected function checkLevelPrize(string $prize, int $level): bool { $map = [['number', '=', $level], ['rebate_rule', 'like', "%,{$prize},%"]]; - return $this->app->db->name('DataUserLevel')->where($map)->count() > 0; + return $this->app->db->name('DataUserUpgrade')->where($map)->count() > 0; } } \ No newline at end of file diff --git a/app/data/service/UserService.php b/app/data/service/UserService.php index 68ce9cbd4..cd8b78c25 100644 --- a/app/data/service/UserService.php +++ b/app/data/service/UserService.php @@ -229,7 +229,7 @@ class UserService extends Service $teamsUsers = $this->app->db->name('DataUser')->whereLike('path', "%-{$uid}-%")->count(); $orderAmount = $this->app->db->name('ShopOrder')->where(['uid' => $uid])->whereIn('status', [3, 4, 5])->sum('amount_total'); // 计算用户级别 - foreach ($this->app->db->name('DataUserLevel')->where(['status' => 1])->order('number desc')->cursor() as $item) { + foreach ($this->app->db->name('DataUserUpgrade')->where(['status' => 1])->order('number desc')->cursor() as $item) { $l1 = empty($item['goods_vip_status']) || $user['buy_vip_entry'] > 0; $l2 = empty($item['teams_users_status']) || $item['teams_users_number'] <= $teamsUsers; $l3 = empty($item['order_amount_status']) || $item['order_amount_number'] <= $orderAmount; @@ -249,7 +249,7 @@ class UserService extends Service $tmpNumber = $query->whereRaw("a.uid={$uid} and a.payment_status=1 and a.status in (3,4,5) and b.vip_entry=1")->max('b.vip_number'); if ($tmpNumber > $vipNumber) { $map = ['number' => $tmpNumber, 'status' => 1]; - $levelInfo = $this->app->db->name('DataUserLevel')->where($map)->find(); + $levelInfo = $this->app->db->name('DataUserUpgrade')->where($map)->find(); if (!empty($levelInfo)) [$vipNumber, $vipName] = [$levelInfo['number'], $levelInfo['name']]; } // 统计订单统计 diff --git a/app/data/sys.php b/app/data/sys.php index d1fd22ed9..45d8b4aa1 100644 --- a/app/data/sys.php +++ b/app/data/sys.php @@ -2,15 +2,15 @@ use app\data\command\OrderClear; use app\data\command\UserBalance; -use app\data\command\UserLevel; +use app\data\command\UserUpgrade; use app\data\command\UserTransfer; use think\Console; if (app()->request->isCli()) { Console::starting(function (Console $console) { - $console->addCommand(UserLevel::class); $console->addCommand(OrderClear::class); $console->addCommand(UserBalance::class); + $console->addCommand(UserUpgrade::class); $console->addCommand(UserTransfer::class); }); } else { diff --git a/app/data/view/shop_goods/form.html b/app/data/view/shop_goods/form.html index 785abeda1..2a9464469 100644 --- a/app/data/view/shop_goods/form.html +++ b/app/data/view/shop_goods/form.html @@ -5,33 +5,47 @@
- {notempty name='marks'} -
- 商品标签 - Mark Name -
- {foreach $marks as $mark}{if isset($vo.mark) && is_array($vo.mark) && in_array($mark, $vo.mark)} - - {else} - - {/if}{/foreach} -
-
- {/notempty} - - {notempty name='cates'} + - {/notempty} + + + +
+ 商品标签 + Goods Mark Name +
+ {foreach $marks as $mark}{if isset($vo.marks) && is_array($vo.marks) && in_array($mark, $vo.marks)} + + {else} + + {/if}{/foreach} +
+
+ + + +
+ 支付方式 + Goods Pyament Name +
+ {foreach $payments as $payment}{if isset($vo.payment) && is_array($vo.payment) && in_array($payment.code, $vo.payment)} + + {else} + + {/if}{/foreach} +
+
+
-
- -
- 物流配送发货 -
- {foreach ['虚拟商品,无需物流配送','实物商品,需要物流配送'] as $k=>$v} - {if (isset($vo.truck_type) and $vo.truck_type eq $k) or (empty($vo.truck_type) and $k eq 0)} - - {else} - - {/if}{/foreach} -
-
- -
- 入会礼包配置 -
- {foreach ['非入会礼包,购买后不会影响等级','是入会礼包,购买后升级会员级别'] as $k=>$v} - {if (isset($vo.vip_entry) and $vo.vip_entry eq $k) or (empty($vo.vip_entry) and $k eq 0)} - - {else} - - {/if}{/foreach} -
-
- - {notempty name='levels'} -
- 升级用户级别 - -
- {/notempty} - - {notempty name='discounts'} -
- 用户折扣方案 - -
- {/notempty} +
+ + +
+ 升级用户级别 + +
+ + - {notempty name='levels'} -
- 限制最低购买等级 - -
- {/notempty} - -
- 商品限购数量 - -
- + + + +
+ 用户购买折扣方案 + +
+ + +
+ 限制最低购买等级 + +
+ +
+ 商品限购数量 + +
+
@@ -260,7 +282,7 @@
diff --git a/app/data/view/shop_goods/index.html b/app/data/view/shop_goods/index.html index 16a2b1526..b3995855a 100644 --- a/app/data/view/shop_goods/index.html +++ b/app/data/view/shop_goods/index.html @@ -67,20 +67,24 @@ 商品名称:{$vo.name|default='--'}
- +
- - 所属分类:{$vo.cate.name|default='-'}
- -
-
- {notempty name='vo.mark'}{foreach $vo.mark as $mark} - {$mark} + {notempty name='vo.marks'}{foreach $vo.marks as $mark} + {$mark} {/foreach}{/notempty}
+
+ {notempty name='vo.cateinfo'} + {:join('', $vo.cateinfo.names)}
+ {/notempty} +
-
销售状态:{eq name='vo.status' value='0'}已下架{else}销售中{/eq}
+
+ {eq name='vo.status' value='0'}已下架{else}销售中{/eq} + {eq name='vo.vip_entry' value='0'}非入会礼包{else}是入会礼包{/eq} + {eq name='vo.truck_type' value='0'}无需快递配送{else}需要快递配送{/eq} +
创建时间:{$vo.create_at|format_datetime}
diff --git a/app/data/view/shop_goods/index_search.html b/app/data/view/shop_goods/index_search.html index e2e93bb40..c8877b50c 100644 --- a/app/data/view/shop_goods/index_search.html +++ b/app/data/view/shop_goods/index_search.html @@ -21,26 +21,26 @@
{/notempty} - {notempty name='clist'} + {notempty name='cates'}
diff --git a/app/data/view/shop_goods/stock.html b/app/data/view/shop_goods/stock.html index cd7d4ee51..0b8f4decc 100644 --- a/app/data/view/shop_goods/stock.html +++ b/app/data/view/shop_goods/stock.html @@ -9,7 +9,7 @@
库存数据 - Stock Data + Goods Stock Data diff --git a/app/data/view/user_level/form.html b/app/data/view/user_upgrade/form.html similarity index 100% rename from app/data/view/user_level/form.html rename to app/data/view/user_upgrade/form.html diff --git a/app/data/view/user_level/index.html b/app/data/view/user_upgrade/index.html similarity index 100% rename from app/data/view/user_level/index.html rename to app/data/view/user_upgrade/index.html diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php index 871a3b4d1..6a7033398 100644 --- a/vendor/composer/autoload_classmap.php +++ b/vendor/composer/autoload_classmap.php @@ -242,7 +242,10 @@ return array( 'app\\data\\service\\NewsService' => $baseDir . '/app/data/service/NewsService.php', 'app\\data\\service\\OrderService' => $baseDir . '/app/data/service/OrderService.php', 'app\\data\\service\\PaymentService' => $baseDir . '/app/data/service/PaymentService.php', - 'app\\data\\service\\PrizeService' => $baseDir . '/app/data/service/PrizeService.php', + 'app\\data\\service\\RebateCurrentService' => $baseDir . '/app/data/service/RebateCurrentService.php', + 'app\\data\\service\\RebateMonthService' => $baseDir . '/app/data/service/RebateMonthService.php', + 'app\\data\\service\\RebateQuarterService' => $baseDir . '/app/data/service/RebateQuarterService.php', + 'app\\data\\service\\RebateYearService' => $baseDir . '/app/data/service/RebateYearService.php', 'app\\data\\service\\TruckService' => $baseDir . '/app/data/service/TruckService.php', 'app\\data\\service\\UserService' => $baseDir . '/app/data/service/UserService.php', 'app\\data\\service\\payment\\AlipayPaymentService' => $baseDir . '/app/data/service/payment/AlipayPaymentService.php', diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index 1a2ecad55..312990dab 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -371,7 +371,10 @@ class ComposerStaticInit4f89fd0e0503ccf740f2fa5757825d7b 'app\\data\\service\\NewsService' => __DIR__ . '/../..' . '/app/data/service/NewsService.php', 'app\\data\\service\\OrderService' => __DIR__ . '/../..' . '/app/data/service/OrderService.php', 'app\\data\\service\\PaymentService' => __DIR__ . '/../..' . '/app/data/service/PaymentService.php', - 'app\\data\\service\\PrizeService' => __DIR__ . '/../..' . '/app/data/service/PrizeService.php', + 'app\\data\\service\\RebateCurrentService' => __DIR__ . '/../..' . '/app/data/service/RebateCurrentService.php', + 'app\\data\\service\\RebateMonthService' => __DIR__ . '/../..' . '/app/data/service/RebateMonthService.php', + 'app\\data\\service\\RebateQuarterService' => __DIR__ . '/../..' . '/app/data/service/RebateQuarterService.php', + 'app\\data\\service\\RebateYearService' => __DIR__ . '/../..' . '/app/data/service/RebateYearService.php', 'app\\data\\service\\TruckService' => __DIR__ . '/../..' . '/app/data/service/TruckService.php', 'app\\data\\service\\UserService' => __DIR__ . '/../..' . '/app/data/service/UserService.php', 'app\\data\\service\\payment\\AlipayPaymentService' => __DIR__ . '/../..' . '/app/data/service/payment/AlipayPaymentService.php', diff --git a/vendor/services.php b/vendor/services.php index 56250ed8a..7293b49cb 100644 --- a/vendor/services.php +++ b/vendor/services.php @@ -1,5 +1,5 @@ 'think\\admin\\Library',