添加:预支积分功能
This commit is contained in:
parent
2f3acf42d9
commit
779f871171
|
|
@ -26,9 +26,12 @@ class ExchangeIntegralRecordRepository extends BaseRepository{
|
||||||
*/
|
*/
|
||||||
public function getList(array $params,int $page,int $limit):array{
|
public function getList(array $params,int $page,int $limit):array{
|
||||||
$query = $this->dao->getSearch([])
|
$query = $this->dao->getSearch([])
|
||||||
->when((int)$params['uid'] > 0,function($query) use ($params){
|
->when(isset($params['uid']) && $params['uid'] !== '',function($query) use ($params){
|
||||||
$query->where('uid', (int)$params['uid']);
|
$query->where('uid', (int)$params['uid']);
|
||||||
})
|
})
|
||||||
|
->when(isset($params['source']) && $params['source'] !== '',function($query) use ($params){
|
||||||
|
$query->where('source', (int)$params['source']);
|
||||||
|
})
|
||||||
->with([
|
->with([
|
||||||
'user' => function($query){
|
'user' => function($query){
|
||||||
$query->field('uid,nickname,avatar')->bind(['nickname','avatar']);
|
$query->field('uid,nickname,avatar')->bind(['nickname','avatar']);
|
||||||
|
|
|
||||||
|
|
@ -37,14 +37,19 @@ class UserMerchantRepository extends BaseRepository
|
||||||
$count = $query->count();
|
$count = $query->count();
|
||||||
$make = app()->make(UserLabelRepository::class);
|
$make = app()->make(UserLabelRepository::class);
|
||||||
$integralMake = app()->make(IntegralRepository::class);
|
$integralMake = app()->make(IntegralRepository::class);
|
||||||
$list = $query->setOption('field', [])->field('A.uid,A.user_merchant_id,B.avatar,B.nickname,B.user_type,A.last_pay_time,A.first_pay_time,A.label_id,A.create_time,A.last_time,A.pay_num,A.pay_price,B.phone,B.is_svip,B.svip_endtime')
|
$list = $query->setOption('field',[])
|
||||||
->page($page, $limit)->order('A.user_merchant_id DESC')->select()->each(function ($item) use ($where, $make, $integralMake) {
|
->field('A.uid,A.user_merchant_id,B.avatar,B.nickname,B.user_type,A.last_pay_time,A.first_pay_time,A.label_id,A.create_time,A.last_time,A.pay_num,A.pay_price,B.phone,B.is_svip,B.svip_endtime,B.advance_exchange_integral')
|
||||||
$item->label = count($item['label_id']) ? $make->labels($item['label_id'], $where['mer_id']) : [];
|
->page($page,$limit)
|
||||||
$item->svip_endtime = date('Y-m-d H:i:s', strtotime("+100 year"));
|
->order('A.user_merchant_id DESC')
|
||||||
|
->select()
|
||||||
|
->each(function($item) use ($where,$make,$integralMake){
|
||||||
|
$item->label = count($item['label_id']) ? $make->labels($item['label_id'],$where['mer_id']) : [];
|
||||||
|
$item->svip_endtime = date('Y-m-d H:i:s',strtotime("+100 year"));
|
||||||
$item->merchant_integral = $integralMake->getMerIntegral((int)$item->uid,(int)$where['mer_id']);
|
$item->merchant_integral = $integralMake->getMerIntegral((int)$item->uid,(int)$where['mer_id']);
|
||||||
// 当前用户是否已经绑定店员身份
|
// 当前用户是否已经绑定店员身份
|
||||||
$item->is_store_service = (int)app()->make(StoreServiceRepository::class)->isService((int)$item->uid, 0, 1);
|
$item->is_store_service = (int)app()
|
||||||
|
->make(StoreServiceRepository::class)
|
||||||
|
->isService((int)$item->uid,0,1);
|
||||||
return $item;
|
return $item;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -112,7 +112,7 @@ class ExchangeQuota extends BaseController
|
||||||
*/
|
*/
|
||||||
public function integralRecordList(){
|
public function integralRecordList(){
|
||||||
[$page, $limit] = $this->getPage();
|
[$page, $limit] = $this->getPage();
|
||||||
$params = $this->request->params(['uid']);
|
$params = $this->request->params(['uid','source']);
|
||||||
|
|
||||||
$data = app()->make(ExchangeIntegralRecordRepository::class)->getList((array)$params,(int)$page,(int)$limit);
|
$data = app()->make(ExchangeIntegralRecordRepository::class)->getList((array)$params,(int)$page,(int)$limit);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,14 @@
|
||||||
<?php
|
<?php
|
||||||
namespace app\controller\api\store\user;
|
namespace app\controller\api\store\user;
|
||||||
|
|
||||||
|
use app\common\model\user\ExchangeIntegralRecord;
|
||||||
|
use app\common\model\user\User;
|
||||||
use app\common\repositories\user\IntegralGiveRecordRepository;
|
use app\common\repositories\user\IntegralGiveRecordRepository;
|
||||||
use app\common\repositories\user\IntegralRepository;
|
use app\common\repositories\user\IntegralRepository;
|
||||||
use app\common\repositories\user\UserBillRepository;
|
use app\common\repositories\user\UserBillRepository;
|
||||||
use app\common\repositories\user\UserMerchantRepository;
|
use app\common\repositories\user\UserMerchantRepository;
|
||||||
use app\common\repositories\user\UserRepository;
|
use app\common\repositories\user\UserRepository;
|
||||||
use crmeb\basic\BaseController;
|
use crmeb\basic\BaseController;
|
||||||
use EasyWeChat\Support\Log;
|
|
||||||
use Exception;
|
|
||||||
use think\App;
|
use think\App;
|
||||||
use think\facade\Db;
|
use think\facade\Db;
|
||||||
|
|
||||||
|
|
@ -104,10 +104,62 @@ class UserMerchant extends BaseController{
|
||||||
return app('json')->fail($e->getMessage());
|
return app('json')->fail($e->getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Common: 预支积分
|
||||||
|
* Author: wu-hui
|
||||||
|
* Time: 2024/02/05 15:01
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
public function advanceExchangeIntegral(){
|
||||||
|
$params = $this->request->params(['uid','integral','mer_id']);
|
||||||
|
// 变更操作
|
||||||
|
try {
|
||||||
|
Db::transaction(function () use ($params) {
|
||||||
|
$integral = $params['integral'] ?? 0;
|
||||||
|
// 获取用户当前持有
|
||||||
|
$userHoldInfo = User::where('uid',$params['uid'])->findOrEmpty();
|
||||||
|
// 赠送 预支酒水卡积分
|
||||||
|
$changeFront = (float)$userHoldInfo->exchange_integral;
|
||||||
|
$advanceChangeFront = (float)$userHoldInfo->advance_exchange_integral;
|
||||||
|
$userHoldInfo->exchange_integral += (float)$integral;// 总额度
|
||||||
|
$userHoldInfo->advance_exchange_integral += (float)$integral;// 总额度
|
||||||
|
// 记录
|
||||||
|
$insertData[] = [
|
||||||
|
'uid' => $params['uid'],
|
||||||
|
'product_id' => 0,
|
||||||
|
'order_id' => 0,
|
||||||
|
'order_product_id' => 0,
|
||||||
|
'change_type' => 1,
|
||||||
|
'change_quantity' => (float)$integral,
|
||||||
|
'change_front' => $advanceChangeFront,
|
||||||
|
'change_after' => (float)$userHoldInfo->advance_exchange_integral,
|
||||||
|
'remark' => "预支酒水卡积分",
|
||||||
|
'source' => 1
|
||||||
|
];
|
||||||
|
$insertData[] = [
|
||||||
|
'uid' => $params['uid'],
|
||||||
|
'product_id' => 0,
|
||||||
|
'order_id' => 0,
|
||||||
|
'order_product_id' => 0,
|
||||||
|
'change_type' => 1,
|
||||||
|
'change_quantity' => (float)$integral,
|
||||||
|
'change_front' => $changeFront,
|
||||||
|
'change_after' => (float)$userHoldInfo->exchange_integral,
|
||||||
|
'remark' => "预支酒水卡积分,增加积分",
|
||||||
|
'source' => 0
|
||||||
|
];
|
||||||
|
|
||||||
|
// 修改用户持有
|
||||||
|
$userHoldInfo->save();
|
||||||
|
// 记录酒卡额度信息
|
||||||
|
if(count($insertData) > 0) ExchangeIntegralRecord::insertAll($insertData);
|
||||||
|
});
|
||||||
|
|
||||||
|
return app('json')->success('操作成功');
|
||||||
|
} catch (\Throwable $e) {
|
||||||
|
return app('json')->fail($e->getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -102,21 +102,48 @@ class OrderPaySuccessEvent{
|
||||||
// 循环处理单个商品
|
// 循环处理单个商品
|
||||||
$insertData = [];
|
$insertData = [];
|
||||||
foreach($groupOrder->orderList as $orderInfo){
|
foreach($groupOrder->orderList as $orderInfo){
|
||||||
// 赠送 支付的金额=赠送的酒水卡积分
|
// 判断:存在预支积分时 当前订单赠送积分抵消预支积分后是否存在结余
|
||||||
$changeFront = (float)$userHoldInfo->exchange_integral;
|
$surplus = (float)$orderInfo->pay_price;
|
||||||
$userHoldInfo->exchange_integral += (float)$orderInfo->pay_price;// 总额度
|
if((float)$userHoldInfo->advance_exchange_integral > 0){
|
||||||
// 记录
|
// 抵消减少的积分 预支积分 小于等于 赠送积分,减少预支积分,否则减少赠送积分
|
||||||
$insertData[] = [
|
$reduceIntegral = (float)$userHoldInfo->advance_exchange_integral <= $surplus ? (float)$userHoldInfo->advance_exchange_integral : $surplus;
|
||||||
'uid' => $orderInfo->uid,
|
// 存在预支积分 减少预支积分,赠送积分为0
|
||||||
'product_id' => $orderInfo->product_id ?? 0,
|
$changeFront = (float)$userHoldInfo->advance_exchange_integral;
|
||||||
'order_id' => $orderInfo->order_id ?? 0,
|
$userHoldInfo->advance_exchange_integral -= (float)$reduceIntegral;// 总额度
|
||||||
'order_product_id' => $orderInfo->order_product_id ?? 0,
|
$insertData[] = [
|
||||||
'change_type' => 1,
|
'uid' => $orderInfo->uid,
|
||||||
'change_quantity' => (float)$orderInfo->pay_price,
|
'product_id' => $orderInfo->product_id ?? 0,
|
||||||
'change_front' => $changeFront,
|
'order_id' => $orderInfo->order_id ?? 0,
|
||||||
'change_after' => (float)$userHoldInfo->exchange_integral,
|
'order_product_id' => $orderInfo->order_product_id ?? 0,
|
||||||
'remark' => "消费赠送酒水卡积分",
|
'change_type' => 0,
|
||||||
];
|
'change_quantity' => (float)$reduceIntegral,
|
||||||
|
'change_front' => $changeFront,
|
||||||
|
'change_after' => (float)$userHoldInfo->advance_exchange_integral,
|
||||||
|
'remark' => "消费抵消预支积分" . (float)$reduceIntegral,
|
||||||
|
'source' => 1
|
||||||
|
];
|
||||||
|
// 是否存在结余
|
||||||
|
$surplus = (float)sprintf("%.2f",$surplus - $reduceIntegral);
|
||||||
|
}
|
||||||
|
// 判断:抵消预支积分后 是否存在结余,存在则未抵消完成,进行赠送操作
|
||||||
|
if((float)$surplus > 0){
|
||||||
|
// 无预支积分 正常赠送
|
||||||
|
$changeFront = (float)$userHoldInfo->exchange_integral;
|
||||||
|
$userHoldInfo->exchange_integral += (float)$surplus;// 总额度
|
||||||
|
// 记录
|
||||||
|
$insertData[] = [
|
||||||
|
'uid' => $orderInfo->uid,
|
||||||
|
'product_id' => $orderInfo->product_id ?? 0,
|
||||||
|
'order_id' => $orderInfo->order_id ?? 0,
|
||||||
|
'order_product_id' => $orderInfo->order_product_id ?? 0,
|
||||||
|
'change_type' => 1,
|
||||||
|
'change_quantity' => (float)$surplus,
|
||||||
|
'change_front' => $changeFront,
|
||||||
|
'change_after' => (float)$userHoldInfo->exchange_integral,
|
||||||
|
'remark' => "消费赠送酒水卡积分",
|
||||||
|
'source' => 0
|
||||||
|
];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// 修改用户持有
|
// 修改用户持有
|
||||||
$userHoldInfo->save();
|
$userHoldInfo->save();
|
||||||
|
|
|
||||||
|
|
@ -438,13 +438,13 @@ Route::group(function () {
|
||||||
]);
|
]);
|
||||||
// 兑换积分相关
|
// 兑换积分相关
|
||||||
Route::get('integral_title','.ExchangeQuota/integralTitle')->name('systemUserExchangeIntegralTitle')->option([
|
Route::get('integral_title','.ExchangeQuota/integralTitle')->name('systemUserExchangeIntegralTitle')->option([
|
||||||
'_alias' => '额度统计',
|
'_alias' => '积分统计',
|
||||||
]);
|
]);
|
||||||
Route::get('integral_list', '.ExchangeQuota/integralList')->name('systemUserExchangeIntegralList')->option([
|
Route::get('integral_list', '.ExchangeQuota/integralList')->name('systemUserExchangeIntegralList')->option([
|
||||||
'_alias' => '额度持有信息',
|
'_alias' => '积分持有信息',
|
||||||
]);
|
]);
|
||||||
Route::get('integral_record_list', '.ExchangeQuota/integralRecordList')->name('systemUserExchangeIntegralRecordList')->option([
|
Route::get('integral_record_list', '.ExchangeQuota/integralRecordList')->name('systemUserExchangeIntegralRecordList')->option([
|
||||||
'_alias' => '额度变更记录',
|
'_alias' => '积分变更记录',
|
||||||
]);
|
]);
|
||||||
// 提货点管理
|
// 提货点管理
|
||||||
Route::get('pickup_point_edit', '.ExchangeQuota/pickupPointEdit')->name('systemUserExchangePickupPointEdit')->option([
|
Route::get('pickup_point_edit', '.ExchangeQuota/pickupPointEdit')->name('systemUserExchangePickupPointEdit')->option([
|
||||||
|
|
|
||||||
|
|
@ -49,6 +49,7 @@ Route::group('api/', function () {
|
||||||
Route::group('custom', function () {
|
Route::group('custom', function () {
|
||||||
Route::get('list/:merId', 'api.store.user.UserMerchant/getList');
|
Route::get('list/:merId', 'api.store.user.UserMerchant/getList');
|
||||||
Route::post('integral_change/:merId', 'api.store.user.UserMerchant/integralChange');
|
Route::post('integral_change/:merId', 'api.store.user.UserMerchant/integralChange');
|
||||||
|
Route::post('advance_exchange_integral', 'api.store.user.UserMerchant/advanceExchangeIntegral');
|
||||||
});
|
});
|
||||||
//订单
|
//订单
|
||||||
Route::group('order', function () {
|
Route::group('order', function () {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue