修复本地生活订单导出功能

This commit is contained in:
wangxiaowei 2024-08-15 15:32:07 +08:00
parent accb794394
commit 6f3efaf9a3
2 changed files with 31 additions and 14 deletions

@ -66,7 +66,6 @@ class LocalStore extends AdminBase
]);
}
public function del() {
if ($this->request->isAjax()) {
$post = $this->request->post();

@ -101,32 +101,42 @@ class LocalStoreLogic extends Logic
// 导出数据
public static function exportOrderData()
{
$time = date('Y-m-d H:i:s', strtotime('today 2:00:00'));
$today = date('Y-m-d H:i:s', strtotime('today 02:00:00'));
try {
$result = LocalStoreOrderRecord::where([ ['local_store_order_time', '<=', $time]])->field('local_store_order_id')->select()->toArray();
$localStoreOrder = new LocalStoreOrder();
if ($result) {
foreach ($result as &$v) {
$ids[] = $v['local_store_order_id'];
}
$lists = LocalStoreOrder::whereIn('id', $ids)
->field('payment_type, account_name, bank_name, bank_card, large_number, separate_account, sum(separate_account) as total, tips, notes')
// 先将之前已导出的数据状态为2,这样就不会在重复导出之前的数据了(如果昨天的日期导出的状态还是为1则立马转换为2)
$last_where[] = ['create_time', '<=', date('Y-m-d H:i:s', strtotime('yesterday 02:00:00'))];
$last_where[] = ['is_checkout', '=', 1];
$last_where[] = ['is_export', '=', 1];
$localStoreOrder->where($last_where)->update(['is_export' => 2]);
$l_where[] = ['is_checkout', '=', 1];
$l_where[] = ['create_time', '<=', $today];
$l_where[] = ['is_export', '=', 1];
$result = LocalStoreOrder::where($l_where)->limit(1)->select()->toArray();
if (!empty($result)) {
// 当天可以多次导出数据
$lists = LocalStoreOrder::where($l_where)
->field('lstore_id, payment_type, account_name, bank_name, bank_card, large_number, separate_account, sum(separate_account) as total, tips, notes')
->group('bank_card')
->select()
->toArray();
} else {
$where[] = ['is_checkout', '=', 0];
$where[] = ['create_time', '<=', $time];
$where[] = ['create_time', '<=', $today];
$where[] = ['is_export', '=', 0];
$localStoreOrder = new LocalStoreOrder();
// 获取导出结果的数据集
$lists = $localStoreOrder
->where($where)
->field('payment_type, account_name, bank_name, bank_card, large_number, separate_account, sum(separate_account) as total, tips, notes')
->field('lstore_id, payment_type, account_name, bank_name, bank_card, large_number, separate_account, sum(separate_account) as total, tips, notes')
->group('bank_card')
->select()
->toArray();
// 把导出的数据存放到记录表中
$data = $localStoreOrder->field('id, create_time')->where($where)->select()->toArray();
$record = [];
$insert_time = date('Y-m-d H:i:s');
@ -134,13 +144,21 @@ class LocalStoreLogic extends Logic
$record[] = ['local_store_order_id' => $v['id'], 'local_store_order_time' => $v['create_time'], 'export_time' => $insert_time];
}
LocalStoreOrderRecord::insertAll($record);
$localStoreOrder->where($where)->update(['is_checkout' => 1]);
// 更新状态数据为已结账和可以继续导出
$localStoreOrder->where($where)->update(['is_checkout' => 1, 'is_export' => 1]);
}
foreach ($lists as &$v) {
$v['bank_card'] = $v['bank_card'] . ' ';
$v['large_number'] = $v['large_number'] . ' ';
$v['payment_type'] = self::$PAYMENT_TYPE[$v['payment_type']];
if ($v['payment_type'] == 1) {
$v['payment_type'] = self::$PAYMENT_TYPE[$v['payment_type']];
} else {
// 对私银行账户
$res = LocalStore::where('lstore_id', $v['lstore_id'])->field('bank_user_name')->find();
$v['payment_type'] = $res['bank_user_name'];
}
}
$excelFields = [