Commit 9b167fca by 杨树贤

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

parent 5702eeaa
<?php <?php
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\Http\Filters\IntegralBillFilter;
use App\Http\Filters\IntegralBillFilter; use App\Http\Filters\IntegralFilter;
use App\Models\IntegralBill; use App\Models\IntegralBill;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
/**
/** * 用户红包获取流水(非兑现)
* 用户红包获取流水 * Class IntegralBillsController
* Class IntegralBillsController * @package App\Http\Controllers
* @package App\Http\Controllers */
*/ class IntegralBillsController extends Controller
class IntegralBillsController extends Controller {
{ /**
/** * 用户红包获取流水列表
* @param Request $request * @param Request $request
* @param IntegralBillFilter $filter * @param IntegralBill $integralBill
* @return array * @param IntegralBillFilter $filter
*/ * @return array
public function index(Request $request, IntegralBillFilter $filter) */
{ public function index(Request $request, IntegralBill $integralBill, IntegralBillFilter $filter)
$page = $request->has('page') ? $request->page : 1; {
$page_size = $request->has('page_size') ? $request->page_size : 10; $page = $request->has('page') ? $request->page : 1;
$bills = IntegralBill::with('integral')->filter($filter)->page($page, $page_size) $pageSize = $request->has('page_size') ? $request->page_size : 10;
->orderBy('id', 'desc') $res = $integralBill->getIntegralBillList($page, $pageSize, $filter);
->get()->toArray();
$count = IntegralBill::filter($filter)->count(); return $this->Export(0, 'ok', $res);
return $this->Export(0, 'ok', ['data' => $bills, 'count' => $count]); }
} /**
* 创建红包账单
/** * @param Request $request
* 创建红包账单 * @param IntegralBill $integralBill
* @param Request $request * @return array
* @return array */
*/ public function create(Request $request, IntegralBill $integralBill)
public function create(Request $request) {
{ $data = [
$res = DB::table('integral_bills')->insert([ 'user_id' => $request->user_id,
'user_id' => $request->user_id, 'amount' => $request->integral_amount,
'amount' => $request->amount, 'integral_id' => $request->integral_id,
'integral_id' => $request->integral_id, 'status' => 1,
'status' => 1, 'add_time' => time(),
'add_time' => time(), ];
]); $res = $integralBill->createIntegralBill($data);
if ($res) { if ($res) {
return $this->Export(0, 'ok'); return $this->Export(0, 'ok');
} else { } else {
return $this->Export(ErrorCode(021, 5), '新增红包账单失败'); return $this->Export(ErrorCode(021, 5), '新增红包兑换记录失败');
} }
} }
/** /**
* 更新红包账单 * 更新红包账单
* @param Request $request * @param Request $request
* @return array * @param IntegralBill $integralBill
*/ * @return array
public function update(Request $request) */
{ public function update(Request $request, IntegralBill $integralBill)
$id = $request->id; {
$res = DB::table('integral_bills')->where('id', $id) $id = $request->id;
->update([ $data = [
'user_id' => $request->user_id, 'user_id' => $request->user_id,
'amount' => $request->amount, 'amount' => $request->amount,
'integral_id' => $request->integral_id, 'integral_id' => $request->integral_id,
'status' => 1, 'status' => 1,
'update_time' => time(), 'update_time' => time(),
]); ];
if ($res) {
return $this->Export(0, 'ok'); $res = $integralBill->updateIntegralBill($id, $data);
} else { if ($res) {
return $this->Export(ErrorCode(022, 5), '更新红包账单失败'); return $this->Export(0, 'ok');
} } else {
} return $this->Export(ErrorCode(022, 5), '更新红包账单失败');
}
/** }
* 删除红包账单
* @param Request $request /**
* @return array * 删除红包账单
*/ * @param Request $request
public function destroy(Request $request) * @param IntegralBill $integralBill
{ * @return array
$ids = $request->ids; */
$ids = explode(',', trim($ids)); public function destroy(Request $request, IntegralBill $integralBill)
$res = DB::table('integral_bills')->whereIn('id', $ids)->delete(); {
if ($res) { $ids = $request->ids;
return $this->Export(0, 'ok'); $ids = explode(',', trim($ids));
} else { $res = $integralBill->deleteIntegralBill($ids);
return $this->Export(ErrorCode(023, 5), '删除红包账单失败'); 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; ...@@ -5,6 +5,7 @@ namespace App\Http\Controllers;
use App\Http\Filters\UserIntegralFilter; use App\Http\Filters\UserIntegralFilter;
use App\Models\IntegralBill;
use App\Models\UserIntegral; use App\Models\UserIntegral;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
...@@ -90,4 +91,37 @@ class UserIntegralsController extends Controller ...@@ -90,4 +91,37 @@ class UserIntegralsController extends Controller
return $this->Export(052, '批量修改用户是否可领取红包失败'); 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 <?php
namespace App\Models; namespace App\Models;
use App\Http\Filters\QueryFilter; use App\Http\Filters\IntegralBillFilter;
use Illuminate\Database\Eloquent\Model; use App\Http\Filters\QueryFilter;
use http\Env\Request;
class IntegralBill extends Model use Illuminate\Database\Eloquent\Model;
{ use Illuminate\Support\Facades\DB;
public $timestamps = false;
class IntegralBill extends Model
public function integral() {
{ public $timestamps = false;
return $this->belongsTo(Integral::class, 'integral_id', 'id');
}
public function integral()
public function scopePage($query, $page = 1, $pageSize = 10) {
{ return $this->belongsTo(Integral::class, 'integral_id', 'id');
return $query->offset(($page - 1) * $pageSize)->limit($pageSize); }
}
public function scopePage($query, $page = 1, $pageSize = 10)
public function scopeFilter($query, QueryFilter $filters) {
{ return $query->offset(($page - 1) * $pageSize)->limit($pageSize);
return $filters->apply($query); }
}
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'); ...@@ -45,6 +45,9 @@ $router->post('/user_integrals/info', 'UserIntegralsController@show');
$router->post('/user_integrals/list', 'UserIntegralsController@index'); $router->post('/user_integrals/list', 'UserIntegralsController@index');
$router->post('/user_integrals/update', 'UserIntegralsController@update'); $router->post('/user_integrals/update', 'UserIntegralsController@update');
$router->post('/user_integrals/batchUpdateStatus', 'UserIntegralsController@batchUpdateStatus'); $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