| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217 |
- <?php
- namespace app\api\controller\v1;
- use AlibabaCloud\SDK\OSS\OSS\DeleteMultipleObjectsRequest\body\delete;
- use app\admin\controller\coupon\Couponarea;
- use app\admin\service\ConfigService;
- use app\api\services\ThirdPayServices;
- use app\api\services\UserAuthServices;
- use app\api\services\UserServices;
- use app\common\model\BoxMidHandleModel;
- use app\common\model\BoxHandleModel;
- use app\common\model\CouponAreaModel;
- use app\common\model\CouponPlanLogModel;
- use app\common\model\CouponPlanModel;
- use app\common\model\MachineListModel;
- use app\common\model\MachineModel;
- use app\common\model\ShopGoodsModel;
- use app\common\model\User;
- use app\common\model\UserDataModel;
- use app\common\model\UserFansModel;
- use app\common\model\UserModel;
- use app\common\model\YgOrderModel;
- use app\common\service\SystemConfigService;
- use Grpc\Timeval;
- use jobs\CouponPlanJob;
- use jobs\JpOrderJob;
- use jobs\ShopOrderJob;
- use jobs\SystemMiddleOpenBox;
- use PhpOffice\PhpSpreadsheet\IOFactory;
- use PhpOffice\PhpSpreadsheet\Reader\Xls\MD5;
- use Rsa\RsaClient;
- use services\CacheServices;
- use think\cache\driver\Redis;
- use think\db\Where;
- use think\Exception;
- use think\facade\Cache;
- use think\facade\Db;
- use think\facade\Filesystem;
- use think\Request;
- use utils\Queue;
- use jianyan\excel\Excel;
- use utils\RedisCache;
- class Test
- {
- public function test(Request $request)
- {
- $list = [
- 5351304 => 503.5,
- 5352276 => 266,
- 5350677 => 285,
- 5352212 => 380,
- 5352211 => 1045,
- 5352210 => 760,
- 5352209 => 380,
- 5352208 => 760,
- 5350403 => 114,
- 5349123 => 285,
- 5349372 => 285,
- 5346924 => 285,
- 5352433 => 760,
- 5349713 => 95,
- 5348017 => 199.5,
- 5351411 => 1463,
- 5352535 => 665,
- 5346982 => 769.5,
- 5345774 => 313.5,
- 5352523 => 665,
- 5346478 => 1187.5,
- 5349879 => 475,
- 5352233 => 760,
- 5348700 => 2584,
- 5344662 => 969,
- 5345278 => 209,
- 5351904 => 551,
- 5345493 => 275.5,
- 5349688 => 1748,
- 5351924 => 380,
- 5348026 => 332.5,
- 5348962 => 4750,
- 5346159 => 693.5,
- 5351619 => 1045,
- 5351807 => 2831,
- 5350426 => 95,
- 5344610 => 608,
- 5344515 => 1197,
- 5350443 => 361,
- 5346094 => 950,
- 5350358 => 1187.5,
- 5347725 => 361,
- 5352458 => 1045,
- 5351189 => 361,
- 5348630 => 522.5,
- 5349709 => 1748,
- 5351373 => 684,
- 5345879 => 950,
- 5350359 => 370.5,
- 5351923 => 1045,
- 5345919 => 579.5,
- 5344810 => 237.5,
- 5352455 => 674.5,
- 5348947 => 133,
- 5348622 => 95,
- 5349735 => 1653,
- 5351621 => 380,
- 5349987 => 95,
- 5350010 => 380,
- 5347898 => 114,
- 5344563 => 893,
- 5344861 => 1881,
- 5351491 => 855];
- $ids = array_keys($list);
- echo "共要处理记录:".count($list).'个,'.count($ids).'个ID<br>';
- $users = UserModel::whereIn('id', $ids)->field('id,mobile,money,score')->select();
- echo "实际用户记录:".count($users).'个<br>';
- $moneyLogs = [];
- $scoreLogs = [];
- $noCatchUsers = [];
- Db::startTrans();
- foreach($list as $key => $catchMoney){
- $userInfo = UserModel::where('id', $key)->field('id,mobile,money,score')->find();
- $userId = isset($userInfo['id'])? $userInfo['id'] : 0;
- $money = isset($userInfo['money'])? $userInfo['money'] : 0;
- $score = isset($userInfo['score'])? $userInfo['score'] : 0;
- $mobile = isset($userInfo['mobile'])? $userInfo['mobile'] : '';
- if($userId && $catchMoney>0){
- if($money>=$catchMoney){
- echo "【扣除余额】用户[{$userId}][{$mobile}],处理金额 {$catchMoney},账户余额[{$money}]-积分[{$score}],扣除后余额 ".max(0,$money-$catchMoney).'<br>';
- $moneyLogs[] = [
- 'uid'=> $userId,
- 'money'=> $catchMoney,
- 'type'=> 17,
- 'create_at'=> date('Y-m-d H:i:s'),
- 'state'=> 2,
- 'from_id'=>0,
- 'before_money'=> $money,
- 'after_money'=> max(0,$money-$catchMoney),
- 'remark'=> '提现打款重复扣除',
- ];
- // 扣除
- /*if(!UserModel::where('id', $userId)->dec('money', $catchMoney)->update()){
- DB::rollback();
- return 'fail';
- }*/
- }elseif($score>=$catchMoney){
- echo "【扣除积分】用户[{$userId}][{$mobile}],处理金额 {$catchMoney},账户余额[{$money}]-积分[{$score}],扣除后余额 ".($money-$catchMoney).'<br>';
- $scoreLogs[] = [
- 'uid'=> $userId,
- 'score'=> $catchMoney,
- 'type'=> 13,
- 'create_at'=> date('Y-m-d H:i:s'),
- 'state'=> 2,
- 'from_id'=>0,
- 'before_score'=> $score,
- 'after_score'=> max(0,$score-$catchMoney),
- 'remark'=> '提现打款重复扣除',
- ];
- // 处理账户
- /*if(!UserModel::where('id', $userId)->dec('score', $catchMoney)->update()){
- DB::rollback();
- return 'fail';
- }*/
- }elseif(($score+$money)>=$catchMoney){
- // 扣除余额后剩余的钱
- $money1 = max(0,$catchMoney - $money);
- echo "【扣除积分和余额】用户[{$userId}][{$mobile}],处理金额 {$catchMoney},账户余额[{$money}]-积分[{$score}],扣除后余额 ".max(0,$catchMoney-$money).",扣除后积分 ".($score-$money1).'<br>';
- $moneyLogs[] = [
- 'uid'=> $userId,
- 'money'=> $money,
- 'type'=> 17,
- 'create_at'=> date('Y-m-d H:i:s'),
- 'state'=> 2,
- 'from_id'=>0,
- 'before_money'=> $money,
- 'after_money'=> 0,
- 'remark'=> '提现打款重复扣除',
- ];
- // 扣积分
- $scoreLogs[] = [
- 'uid'=> $userId,
- 'score'=> $money1,
- 'type'=> 13,
- 'create_at'=> date('Y-m-d H:i:s'),
- 'state'=> 2,
- 'from_id'=>0,
- 'before_score'=> $score,
- 'after_score'=> max(0,$score-$money1),
- 'remark'=> '提现打款重复扣除',
- ];
- // 处理账户
- /*if(!UserModel::where('id', $userId)->dec('money', $money)->dec('score',$money1)->update()){
- DB::rollback();
- return 'fail';
- }*/
- }else{
- echo "【账户不足】用户[{$userId}][{$mobile}],处理金额 {$catchMoney},账户余额[{$money}]-积分[{$score}],账户不够<br>";
- $noCatchUsers[$userId] = "【账户不足】用户[{$userId}][{$mobile}],账户余额[{$money}]-积分[{$score}],处理金额 {$catchMoney},账户不够";
- }
- }else{
- echo "【未做处理】用户[{$userId}][{$mobile}],处理金额 {$catchMoney},账户积分[{$money}]-积分[{$score}],数据错误未处理<br>";
- }
- }
- Db::commit();
- return 'success';
- }
- }
|