添加:预支积分功能
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{
|
||||
$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']);
|
||||
})
|
||||
->when(isset($params['source']) && $params['source'] !== '',function($query) use ($params){
|
||||
$query->where('source', (int)$params['source']);
|
||||
})
|
||||
->with([
|
||||
'user' => function($query){
|
||||
$query->field('uid,nickname,avatar')->bind(['nickname','avatar']);
|
||||
|
|
|
|||
|
|
@ -37,14 +37,19 @@ class UserMerchantRepository extends BaseRepository
|
|||
$count = $query->count();
|
||||
$make = app()->make(UserLabelRepository::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')
|
||||
->page($page, $limit)->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"));
|
||||
$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,B.advance_exchange_integral')
|
||||
->page($page,$limit)
|
||||
->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->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;
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -112,7 +112,7 @@ class ExchangeQuota extends BaseController
|
|||
*/
|
||||
public function integralRecordList(){
|
||||
[$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);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,14 +1,14 @@
|
|||
<?php
|
||||
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\IntegralRepository;
|
||||
use app\common\repositories\user\UserBillRepository;
|
||||
use app\common\repositories\user\UserMerchantRepository;
|
||||
use app\common\repositories\user\UserRepository;
|
||||
use crmeb\basic\BaseController;
|
||||
use EasyWeChat\Support\Log;
|
||||
use Exception;
|
||||
use think\App;
|
||||
use think\facade\Db;
|
||||
|
||||
|
|
@ -104,10 +104,62 @@ class UserMerchant extends BaseController{
|
|||
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 = [];
|
||||
foreach($groupOrder->orderList as $orderInfo){
|
||||
// 赠送 支付的金额=赠送的酒水卡积分
|
||||
$changeFront = (float)$userHoldInfo->exchange_integral;
|
||||
$userHoldInfo->exchange_integral += (float)$orderInfo->pay_price;// 总额度
|
||||
// 记录
|
||||
$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)$orderInfo->pay_price,
|
||||
'change_front' => $changeFront,
|
||||
'change_after' => (float)$userHoldInfo->exchange_integral,
|
||||
'remark' => "消费赠送酒水卡积分",
|
||||
];
|
||||
// 判断:存在预支积分时 当前订单赠送积分抵消预支积分后是否存在结余
|
||||
$surplus = (float)$orderInfo->pay_price;
|
||||
if((float)$userHoldInfo->advance_exchange_integral > 0){
|
||||
// 抵消减少的积分 预支积分 小于等于 赠送积分,减少预支积分,否则减少赠送积分
|
||||
$reduceIntegral = (float)$userHoldInfo->advance_exchange_integral <= $surplus ? (float)$userHoldInfo->advance_exchange_integral : $surplus;
|
||||
// 存在预支积分 减少预支积分,赠送积分为0
|
||||
$changeFront = (float)$userHoldInfo->advance_exchange_integral;
|
||||
$userHoldInfo->advance_exchange_integral -= (float)$reduceIntegral;// 总额度
|
||||
$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' => 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();
|
||||
|
|
|
|||
|
|
@ -438,13 +438,13 @@ Route::group(function () {
|
|||
]);
|
||||
// 兑换积分相关
|
||||
Route::get('integral_title','.ExchangeQuota/integralTitle')->name('systemUserExchangeIntegralTitle')->option([
|
||||
'_alias' => '额度统计',
|
||||
'_alias' => '积分统计',
|
||||
]);
|
||||
Route::get('integral_list', '.ExchangeQuota/integralList')->name('systemUserExchangeIntegralList')->option([
|
||||
'_alias' => '额度持有信息',
|
||||
'_alias' => '积分持有信息',
|
||||
]);
|
||||
Route::get('integral_record_list', '.ExchangeQuota/integralRecordList')->name('systemUserExchangeIntegralRecordList')->option([
|
||||
'_alias' => '额度变更记录',
|
||||
'_alias' => '积分变更记录',
|
||||
]);
|
||||
// 提货点管理
|
||||
Route::get('pickup_point_edit', '.ExchangeQuota/pickupPointEdit')->name('systemUserExchangePickupPointEdit')->option([
|
||||
|
|
|
|||
|
|
@ -49,6 +49,7 @@ Route::group('api/', function () {
|
|||
Route::group('custom', function () {
|
||||
Route::get('list/:merId', 'api.store.user.UserMerchant/getList');
|
||||
Route::post('integral_change/:merId', 'api.store.user.UserMerchant/integralChange');
|
||||
Route::post('advance_exchange_integral', 'api.store.user.UserMerchant/advanceExchangeIntegral');
|
||||
});
|
||||
//订单
|
||||
Route::group('order', function () {
|
||||
|
|
|
|||
Loading…
Reference in New Issue