第一次更新,完成了初版调整

This commit is contained in:
2026-09-07 22:05:51 +08:00
parent b5a26a8848
commit 4d6a7e7aac
198 changed files with 6142 additions and 3856 deletions
-14
View File
@@ -8,10 +8,8 @@ use think\Session;
use app\common\model\Partners as PartnersModel;
use app\store\model\Order as OrderModel;
use app\store\model\store\User as UserModel;
use app\store\model\PartnersGoods as PartnersGoodsModel;
use app\store\model\partners\BalanceLog as BalanceLogModel;
use app\store\model\partners\StockLog as StockLogModel;
use app\store\service\store\User as StoreUserService;
use app\common\enum\partners\balanceLog\Scene as SceneEnum;
use app\common\library\helper;
@@ -51,8 +49,6 @@ class Partners extends PartnersModel
$this->error = '请填写商户名称';
return false;
}
// 检查商品数据
$goodsList = PartnersGoodsModel::checkGoodsData($data['goodsList']);
$this->startTrans();
try {
$data['orgNo'] = $this->createNo();
@@ -75,10 +71,6 @@ class Partners extends PartnersModel
$userModel->save($newData);
// 新增角色关系记录
UserRole::increased((int)$userModel['store_user_id'], [10014]);
// 新增商品关系记录
PartnersGoodsModel::increased((int)$this['partners_id'], $goodsList);
// 新增合作商商品库存变动记录
StockLogModel::increased((int)$this['partners_id'], $goodsList);
$this->commit();
return true;
} catch (\Exception $e) {
@@ -146,16 +138,10 @@ class Partners extends PartnersModel
$this->error = '请填写商户名称';
return false;
}
// 检查商品数据
$goodsList = PartnersGoodsModel::checkGoodsData($data['goodsList']);
$this->startTrans();
try {
// 更新管理员记录
$this->save($data);
// 更新商品关系记录
PartnersGoodsModel::updates((int)$this['partners_id'], $goodsList);
// 新增合作商商品库存变动记录
StockLogModel::increased((int)$this['partners_id'], $goodsList);
$this->commit();
return true;
} catch (\Exception $e) {
@@ -1,85 +0,0 @@
<?php
// +----------------------------------------------------------------------
// | 萤火商城系统 [ 致力于通过产品和服务,帮助商家高效化开拓市场 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2017~2023 https://www.yiovo.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed 这不是一个自由软件,不允许对程序代码以任何形式任何目的的再发行
// +----------------------------------------------------------------------
// | Author: 萤火科技 <admin@yiovo.com>
// +----------------------------------------------------------------------
declare (strict_types=1);
namespace app\store\model;
use app\common\library\helper;
use app\common\model\PartnersGoods as PartnersGoodsModel;
use cores\exception\BaseException;
/**
* 合作商商品关系模型
* Class PartnersGoods
* @package app\store\model
*/
class PartnersGoods extends PartnersGoodsModel
{
/**
* 验证商品是否合法
* @param array $goodsList
* @throws BaseException
*/
public static function checkGoodsData(array $goodsList)
{
$values = helper::getArrayColumn($goodsList, 'goods_id');
if (count($goodsList) != count(array_unique($values))) {
throwError('很抱歉,不能存在重复的商品 请检查您的选择');
}
foreach ($goodsList as &$item) {
if($item['allot_num'] < 0 && abs($item['allot_num']) > $item['stock_num']){
throwError('很抱歉,分配数量减少不能低于库存数量 请检查您的输入');
}elseif($item['allot_num'] > 100){
throwError('很抱歉,分配数量不能大于100 请检查您的输入');
}
$item['before_num'] = $item['stock_num'];
$item['stock_num'] += $item['allot_num'];
$item['after_num'] = $item['stock_num'];
$item['change_type'] = $item['allot_num'] < 0 ? 2 : 1;
}
unset($item);
return $goodsList;
}
/**
* 批量写入合作商与商品关系记录
* @param int $partnersId
* @param array $goodsList
* @return array|false
*/
public static function increased(int $partnersId, array $goodsList)
{
$dataset = [];
foreach ($goodsList as $item) {
$dataset[] = [
'partners_id' => $partnersId,
'goods_id' => $item['goods_id'],
'stock_num' => $item['stock_num'],
'store_id' => self::$storeId
];
}
return (new static)->addAll($dataset);
}
/**
* 批量更新合作商和商品关系记录
* @param int $partnersId
* @param array $goodsList
* @return array|false
*/
public static function updates(int $partnersId, array $goodsList)
{
// 删除所有的记录
static::deleteAll(['partners_id' => $partnersId]);
// 批量新增记录
return static::increased($partnersId, $goodsList);
}
}
+20 -11
View File
@@ -31,13 +31,13 @@ class Order extends OrderModel
// 设置查询条件
$filter = $this->getFilter($param);
// 先查询总金额
$totalPayPrice = $this->with(['goods.images.file', 'partners'])
$totalPayPrice = $this->with(['partners'])
->alias('order')
->field('order.*')
->where($filter)
->sum('order.total_pay_price');
// 获取列表数据
$list = $this->with(['goods.images.file', 'partners'])
$list = $this->with(['partners'])
->alias('order')
->field('order.*')
->where($filter)
@@ -60,23 +60,32 @@ class Order extends OrderModel
// 设置默认的检索数据
$params = $this->setQueryDefaultValue($param, [
'partners_id' => 0, // 合作商ID
'search' => '', // 用户昵称
'goods_no' => '', // 商品编码
'oil_status' => -1, // 分油状态
'use_status' => -1, // 使用状态
'search' => '', // 司机手机号
'driver_name' => '', // 司机姓名
'orderNo' => '', // 单号:油卡编号/下单平台单号/批次号/运单号
'oil_status' => -1, // 分油(发放)状态
'oil_status_zsy' => -1, // 企油通发放态 0未提交 2成功 3失败
'use_status' => -1, // 加油核销状态
'betweenTime' => [] // 起止时间
]);
// 检索查询条件
$filter = [];
// 合作商ID
$params['partners_id'] > 0 && $filter[] = ['order.partners_id', '=', $params['partners_id']];
// 用户昵称
// 司机手机号
!empty($params['search']) && $filter[] = ['order.mobile', 'like', "%{$params['search']}%"];
// 商品编码
!empty($params['goods_no']) && $filter[] = ['order.goods_no', 'like', "%{$params['goods_no']}%"];
// 分油状态
// 司机姓名
!empty($params['driver_name']) && $filter[] = ['order.driver_name', 'like', "%{$params['driver_name']}%"];
// 单号模糊检索(油卡编号 / 下单平台销售单号 / 企油通批次号 / 运单号)
if (!empty($params['orderNo'])) {
$kw = $params['orderNo'];
$filter[] = ['order.oilCardNo|order.partners_order_no|order.batch_no|order.waybill_no', 'like', "%{$kw}%"];
}
// 分油(发放)状态
$params['oil_status'] > -1 && $filter[] = ['oil_status', '=', (int)$params['oil_status']];
// 使用状态
// 企油通发放态
$params['oil_status_zsy'] > -1 && $filter[] = ['oil_status_zsy', '=', (int)$params['oil_status_zsy']];
// 加油核销状态
$params['use_status'] > -1 && $filter[] = ['use_status', '=', (int)$params['use_status']];
// 起止时间
if (!empty($params['betweenTime'])) {
@@ -1,95 +0,0 @@
<?php
// +----------------------------------------------------------------------
// | 萤火商城系统 [ 致力于通过产品和服务,帮助商家高效化开拓市场 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2017~2023 https://www.yiovo.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed 这不是一个自由软件,不允许对程序代码以任何形式任何目的的再发行
// +----------------------------------------------------------------------
// | Author: 萤火科技 <admin@yiovo.com>
// +----------------------------------------------------------------------
declare (strict_types=1);
namespace app\store\model\partners;
use app\common\model\partners\StockLog as StockLogModel;
/**
* 合作商商品库存变动明细模型
* Class StockLog
* @package app\store\model\partners
*/
class StockLog extends StockLogModel
{
/**
* 获取合作商商品库存变动明细列表
* @param array $param
* @return \think\Paginator
*/
public function getList(array $param = [])
{
// 设置查询条件
$filter = $this->getFilter($param);
// 获取列表数据
return $this->alias('log')
->field('log.*,partners.name')
->where($filter)
->join('partners', 'partners.partners_id = log.partners_id')
->order(['log.create_time' => 'desc'])
->paginate(15);
}
/**
* 设置查询条件
* @param array $param
* @return array
*/
private function getFilter(array $param): array
{
// 设置默认的检索数据
$params = $this->setQueryDefaultValue($param, [
'partners_id' => 0, // 合作商ID
'search' => '', // 用户昵称
'betweenTime' => [] // 起止时间
]);
// 检索查询条件
$filter = [];
// 用户ID
$params['partners_id'] > 0 && $filter[] = ['log.partners_id', '=', $params['partners_id']];
// 用户昵称
!empty($params['search']) && $filter[] = ['partners.name', 'like', "%{$params['search']}%"];
// 起止时间
if (!empty($params['betweenTime'])) {
$times = between_time($params['betweenTime']);
$filter[] = ['log.create_time', '>=', $times['start_time']];
$filter[] = ['log.create_time', '<', $times['end_time'] + 86400];
}
return $filter;
}
/**
* 批量写入合作商与商品库存变动记录
* @param int $partnersId
* @param array $goodsList
* @return array|false
*/
public static function increased(int $partnersId, array $goodsList)
{
$dataset = [];
foreach ($goodsList as $item) {
if(!empty($item['allot_num'])) {
$dataset[] = [
'partners_id' => $partnersId,
'goods_id' => $item['goods_id'],
'before_num' => $item['before_num'],
'after_num' => $item['after_num'],
'change_type' => $item['change_type'],
'change_num' => $item['allot_num'],
'store_id' => self::$storeId
];
}
}
return (new static)->addAll($dataset);
}
}