Commit 9b167fca by 杨树贤

用户红包兑换账单的详情改成统计而不是直接取数据库

parent 5702eeaa
<?php
namespace App\Http\Controllers;
use App\Http\Filters\IntegralBillFilter;
use App\Models\IntegralBill;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
/**
* 用户红包获取流水
* Class IntegralBillsController
* @package App\Http\Controllers
*/
class IntegralBillsController extends Controller
{
/**
* @param Request $request
* @param IntegralBillFilter $filter
* @return array
*/
public function index(Request $request, IntegralBillFilter $filter)
{
$page = $request->has('page') ? $request->page : 1;
$page_size = $request->has('page_size') ? $request->page_size : 10;
$bills = IntegralBill::with('integral')->filter($filter)->page($page, $page_size)
->orderBy('id', 'desc')
->get()->toArray();
$count = IntegralBill::filter($filter)->count();
return $this->Export(0, 'ok', ['data' => $bills, 'count' => $count]);
}
/**
* 创建红包账单
* @param Request $request
* @return array
*/
public function create(Request $request)
{
$res = DB::table('integral_bills')->insert([
'user_id' => $request->user_id,
'amount' => $request->amount,
'integral_id' => $request->integral_id,
'status' => 1,
'add_time' => time(),
]);
if ($res) {
return $this->Export(0, 'ok');
} else {
return $this->Export(ErrorCode(021, 5), '新增红包账单失败');
}
}
/**
* 更新红包账单
* @param Request $request
* @return array
*/
public function update(Request $request)
{
$id = $request->id;
$res = DB::table('integral_bills')->where('id', $id)
->update([
'user_id' => $request->user_id,
'amount' => $request->amount,
'integral_id' => $request->integral_id,
'status' => 1,
'update_time' => time(),
]);
if ($res) {
return $this->Export(0, 'ok');
} else {
return $this->Export(ErrorCode(022, 5), '更新红包账单失败');
}
}
/**
* 删除红包账单
* @param Request $request
* @return array
*/
public function destroy(Request $request)
{
$ids = $request->ids;
$ids = explode(',', trim($ids));
$res = DB::table('integral_bills')->whereIn('id', $ids)->delete();
if ($res) {
return $this->Export(0, 'ok');
} else {
return $this->Export(ErrorCode(023, 5), '删除红包账单失败');
}
}
<?php
namespace App\Http\Controllers;
use App\Http\Filters\IntegralBillFilter;
use App\Http\Filters\IntegralFilter;
use App\Models\IntegralBill;
use Illuminate\Http\Request;
/**
* 用户红包获取流水(非兑现)
* Class IntegralBillsController
* @package App\Http\Controllers
*/
class IntegralBillsController extends Controller
{
/**
* 用户红包获取流水列表
* @param Request $request
* @param IntegralBill $integralBill
* @param IntegralBillFilter $filter
* @return array
*/
public function index(Request $request, IntegralBill $integralBill, IntegralBillFilter $filter)
{
$page = $request->has('page') ? $request->page : 1;
$pageSize = $request->has('page_size') ? $request->page_size : 10;
$res = $integralBill->getIntegralBillList($page, $pageSize, $filter);
return $this->Export(0, 'ok', $res);
}
/**
* 创建红包账单
* @param Request $request
* @param IntegralBill $integralBill
* @return array
*/
public function create(Request $request, IntegralBill $integralBill)
{
$data = [
'user_id' => $request->user_id,
'amount' => $request->integral_amount,
'integral_id' => $request->integral_id,
'status' => 1,
'add_time' => time(),
];
$res = $integralBill->createIntegralBill($data);
if ($res) {
return $this->Export(0, 'ok');
} else {
return $this->Export(ErrorCode(021, 5), '新增红包兑换记录失败');
}
}
/**
* 更新红包账单
* @param Request $request
* @param IntegralBill $integralBill
* @return array
*/
public function update(Request $request, IntegralBill $integralBill)
{
$id = $request->id;
$data = [
'user_id' => $request->user_id,
'amount' => $request->amount,
'integral_id' => $request->integral_id,
'status' => 1,
'update_time' => time(),
];
$res = $integralBill->updateIntegralBill($id, $data);
if ($res) {
return $this->Export(0, 'ok');
} else {
return $this->Export(ErrorCode(022, 5), '更新红包账单失败');
}
}
/**
* 删除红包账单
* @param Request $request
* @param IntegralBill $integralBill
* @return array
*/
public function destroy(Request $request, IntegralBill $integralBill)
{
$ids = $request->ids;
$ids = explode(',', trim($ids));
$res = $integralBill->deleteIntegralBill($ids);
if ($res) {
return $this->Export(0, 'ok');
} else {
return $this->Export(ErrorCode(023, 5), '删除红包账单失败');
}
}
}
\ No newline at end of file
......@@ -5,6 +5,7 @@ namespace App\Http\Controllers;
use App\Http\Filters\UserIntegralFilter;
use App\Models\IntegralBill;
use App\Models\UserIntegral;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
......@@ -90,4 +91,37 @@ class UserIntegralsController extends Controller
return $this->Export(052, '批量修改用户是否可领取红包失败');
}
}
/**
* 修改用户红包的已兑换值
* @param Request $request
* @return array
*/
public function updateExchangedIntegral(Request $request)
{
// DB::transaction(function () use ($request) {
$userId = $request->user_id;
$exchangeAmount = $request->exchange_amount;
$oldAmount = DB::table('user_integrals')->where('user_id', $userId)->value('exchanged_integral');
$res = DB::table('user_integrals')->where('user_id', $userId)->update([
'exchanged_integral' => $oldAmount + $exchangeAmount,
'update_time' => time(),
]);
if ($res) {
return $this->Export(0, 'ok');
} else {
return $this->Export(053, '批量修改用户是否可领取红包失败');
}
// });
}
public function statistics(Request $request, IntegralBill $integralBill)
{
$userId = $request->user_id;
$result = $integralBill->getUserIntegralStatistics($userId);
return $result;
}
}
\ No newline at end of file
<?php
namespace App\Models;
use App\Http\Filters\QueryFilter;
use Illuminate\Database\Eloquent\Model;
class IntegralBill extends Model
{
public $timestamps = false;
public function integral()
{
return $this->belongsTo(Integral::class, 'integral_id', 'id');
}
public function scopePage($query, $page = 1, $pageSize = 10)
{
return $query->offset(($page - 1) * $pageSize)->limit($pageSize);
}
public function scopeFilter($query, QueryFilter $filters)
{
return $filters->apply($query);
}
<?php
namespace App\Models;
use App\Http\Filters\IntegralBillFilter;
use App\Http\Filters\QueryFilter;
use http\Env\Request;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\DB;
class IntegralBill extends Model
{
public $timestamps = false;
public function integral()
{
return $this->belongsTo(Integral::class, 'integral_id', 'id');
}
public function scopePage($query, $page = 1, $pageSize = 10)
{
return $query->offset(($page - 1) * $pageSize)->limit($pageSize);
}
public function scopeFilter($query, QueryFilter $filters)
{
return $filters->apply($query);
}
//获取用户兑换红包列表
public function getIntegralBillList($page, $pageSize, $filter)
{
$request = new \Illuminate\Http\Request();
$bills = IntegralBill::with('integral')->filter($filter)->page($page, $pageSize)
->orderBy('id', 'desc')
->get()->toArray();
$count = IntegralBill::filter($filter)->count();
return ['data' => $bills, 'count' => $count];
}
public function createIntegralBill($data = [])
{
$res = DB::transaction(function () use ($data) {
DB::table('integral_bills')->insert($data);
});
return $res;
}
//更新用户红包兑换列表
public function updateIntegralBill($id, $data = [])
{
$res = DB::table('integral_bills')->where('id', $id)
->update($data);
return $res;
}
//删除
public function deleteIntegralBill($ids = [])
{
$res = DB::table('integral_bills')->whereIn('id', $ids)->delete();
return $res;
}
//获取用户红包统计信息
public function getUserIntegralStatistics($userId)
{
//一共获得的积分金额
$totalAmount = DB::table('integral_bills')
->leftJoin('integrals', 'integral_bills.integral_id', 'integrals.id')
->where('user_id', $userId)
->sum('amount');
//已经兑换的金额
$exchangedAmount = DB::table('user_exchanges')
->leftJoin('exchange_settings', 'user_exchanges.exchange_id', 'exchange_settings.id')
->where('user_id', $userId)
->sum('amount');
//剩余可兑换积分金额
$integral = DB::table('user_integrals')
->where('user_id', $userId)->value('integral');
return [
'total_amount' => $totalAmount,
'exchanged_amount' => $exchangedAmount,
'integral' => $integral,
];
}
}
\ No newline at end of file
......@@ -45,6 +45,9 @@ $router->post('/user_integrals/info', 'UserIntegralsController@show');
$router->post('/user_integrals/list', 'UserIntegralsController@index');
$router->post('/user_integrals/update', 'UserIntegralsController@update');
$router->post('/user_integrals/batchUpdateStatus', 'UserIntegralsController@batchUpdateStatus');
$router->post('/user_integrals/updateExchangedIntegral', 'UserIntegralsController@updateExchangedIntegral');
$router->post('/user_integrals/statistics', 'UserIntegralsController@statistics');
//兑换配置
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment