Test.php 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. <?php
  2. namespace app\api\controller\v1;
  3. use AlibabaCloud\SDK\OSS\OSS\DeleteMultipleObjectsRequest\body\delete;
  4. use app\admin\controller\coupon\Couponarea;
  5. use app\admin\service\ConfigService;
  6. use app\api\services\ThirdPayServices;
  7. use app\api\services\UserAuthServices;
  8. use app\api\services\UserServices;
  9. use app\common\model\BoxMidHandleModel;
  10. use app\common\model\BoxHandleModel;
  11. use app\common\model\CouponAreaModel;
  12. use app\common\model\CouponPlanLogModel;
  13. use app\common\model\CouponPlanModel;
  14. use app\common\model\MachineListModel;
  15. use app\common\model\MachineModel;
  16. use app\common\model\ShopGoodsModel;
  17. use app\common\model\User;
  18. use app\common\model\UserDataModel;
  19. use app\common\model\UserFansModel;
  20. use app\common\model\UserModel;
  21. use app\common\model\YgOrderModel;
  22. use app\common\service\SystemConfigService;
  23. use Grpc\Timeval;
  24. use jobs\CouponPlanJob;
  25. use jobs\JpOrderJob;
  26. use jobs\ShopOrderJob;
  27. use jobs\SystemMiddleOpenBox;
  28. use PhpOffice\PhpSpreadsheet\IOFactory;
  29. use PhpOffice\PhpSpreadsheet\Reader\Xls\MD5;
  30. use Rsa\RsaClient;
  31. use services\CacheServices;
  32. use think\cache\driver\Redis;
  33. use think\db\Where;
  34. use think\Exception;
  35. use think\facade\Cache;
  36. use think\facade\Db;
  37. use think\facade\Filesystem;
  38. use think\Request;
  39. use utils\Queue;
  40. use jianyan\excel\Excel;
  41. use utils\RedisCache;
  42. class Test
  43. {
  44. public function test(Request $request)
  45. {
  46. $list = [
  47. 5351304 => 503.5,
  48. 5352276 => 266,
  49. 5350677 => 285,
  50. 5352212 => 380,
  51. 5352211 => 1045,
  52. 5352210 => 760,
  53. 5352209 => 380,
  54. 5352208 => 760,
  55. 5350403 => 114,
  56. 5349123 => 285,
  57. 5349372 => 285,
  58. 5346924 => 285,
  59. 5352433 => 760,
  60. 5349713 => 95,
  61. 5348017 => 199.5,
  62. 5351411 => 1463,
  63. 5352535 => 665,
  64. 5346982 => 769.5,
  65. 5345774 => 313.5,
  66. 5352523 => 665,
  67. 5346478 => 1187.5,
  68. 5349879 => 475,
  69. 5352233 => 760,
  70. 5348700 => 2584,
  71. 5344662 => 969,
  72. 5345278 => 209,
  73. 5351904 => 551,
  74. 5345493 => 275.5,
  75. 5349688 => 1748,
  76. 5351924 => 380,
  77. 5348026 => 332.5,
  78. 5348962 => 4750,
  79. 5346159 => 693.5,
  80. 5351619 => 1045,
  81. 5351807 => 2831,
  82. 5350426 => 95,
  83. 5344610 => 608,
  84. 5344515 => 1197,
  85. 5350443 => 361,
  86. 5346094 => 950,
  87. 5350358 => 1187.5,
  88. 5347725 => 361,
  89. 5352458 => 1045,
  90. 5351189 => 361,
  91. 5348630 => 522.5,
  92. 5349709 => 1748,
  93. 5351373 => 684,
  94. 5345879 => 950,
  95. 5350359 => 370.5,
  96. 5351923 => 1045,
  97. 5345919 => 579.5,
  98. 5344810 => 237.5,
  99. 5352455 => 674.5,
  100. 5348947 => 133,
  101. 5348622 => 95,
  102. 5349735 => 1653,
  103. 5351621 => 380,
  104. 5349987 => 95,
  105. 5350010 => 380,
  106. 5347898 => 114,
  107. 5344563 => 893,
  108. 5344861 => 1881,
  109. 5351491 => 855];
  110. $ids = array_keys($list);
  111. echo "共要处理记录:".count($list).'个,'.count($ids).'个ID<br>';
  112. $users = UserModel::whereIn('id', $ids)->field('id,mobile,money,score')->select();
  113. echo "实际用户记录:".count($users).'个<br>';
  114. $moneyLogs = [];
  115. $scoreLogs = [];
  116. $noCatchUsers = [];
  117. Db::startTrans();
  118. foreach($list as $key => $catchMoney){
  119. $userInfo = UserModel::where('id', $key)->field('id,mobile,money,score')->find();
  120. $userId = isset($userInfo['id'])? $userInfo['id'] : 0;
  121. $money = isset($userInfo['money'])? $userInfo['money'] : 0;
  122. $score = isset($userInfo['score'])? $userInfo['score'] : 0;
  123. $mobile = isset($userInfo['mobile'])? $userInfo['mobile'] : '';
  124. if($userId && $catchMoney>0){
  125. if($money>=$catchMoney){
  126. echo "【扣除余额】用户[{$userId}][{$mobile}],处理金额 {$catchMoney},账户余额[{$money}]-积分[{$score}],扣除后余额 ".max(0,$money-$catchMoney).'<br>';
  127. $moneyLogs[] = [
  128. 'uid'=> $userId,
  129. 'money'=> $catchMoney,
  130. 'type'=> 17,
  131. 'create_at'=> date('Y-m-d H:i:s'),
  132. 'state'=> 2,
  133. 'from_id'=>0,
  134. 'before_money'=> $money,
  135. 'after_money'=> max(0,$money-$catchMoney),
  136. 'remark'=> '提现打款重复扣除',
  137. ];
  138. // 扣除
  139. /*if(!UserModel::where('id', $userId)->dec('money', $catchMoney)->update()){
  140. DB::rollback();
  141. return 'fail';
  142. }*/
  143. }elseif($score>=$catchMoney){
  144. echo "【扣除积分】用户[{$userId}][{$mobile}],处理金额 {$catchMoney},账户余额[{$money}]-积分[{$score}],扣除后余额 ".($money-$catchMoney).'<br>';
  145. $scoreLogs[] = [
  146. 'uid'=> $userId,
  147. 'score'=> $catchMoney,
  148. 'type'=> 13,
  149. 'create_at'=> date('Y-m-d H:i:s'),
  150. 'state'=> 2,
  151. 'from_id'=>0,
  152. 'before_score'=> $score,
  153. 'after_score'=> max(0,$score-$catchMoney),
  154. 'remark'=> '提现打款重复扣除',
  155. ];
  156. // 处理账户
  157. /*if(!UserModel::where('id', $userId)->dec('score', $catchMoney)->update()){
  158. DB::rollback();
  159. return 'fail';
  160. }*/
  161. }elseif(($score+$money)>=$catchMoney){
  162. // 扣除余额后剩余的钱
  163. $money1 = max(0,$catchMoney - $money);
  164. echo "【扣除积分和余额】用户[{$userId}][{$mobile}],处理金额 {$catchMoney},账户余额[{$money}]-积分[{$score}],扣除后余额 ".max(0,$catchMoney-$money).",扣除后积分 ".($score-$money1).'<br>';
  165. $moneyLogs[] = [
  166. 'uid'=> $userId,
  167. 'money'=> $money,
  168. 'type'=> 17,
  169. 'create_at'=> date('Y-m-d H:i:s'),
  170. 'state'=> 2,
  171. 'from_id'=>0,
  172. 'before_money'=> $money,
  173. 'after_money'=> 0,
  174. 'remark'=> '提现打款重复扣除',
  175. ];
  176. // 扣积分
  177. $scoreLogs[] = [
  178. 'uid'=> $userId,
  179. 'score'=> $money1,
  180. 'type'=> 13,
  181. 'create_at'=> date('Y-m-d H:i:s'),
  182. 'state'=> 2,
  183. 'from_id'=>0,
  184. 'before_score'=> $score,
  185. 'after_score'=> max(0,$score-$money1),
  186. 'remark'=> '提现打款重复扣除',
  187. ];
  188. // 处理账户
  189. /*if(!UserModel::where('id', $userId)->dec('money', $money)->dec('score',$money1)->update()){
  190. DB::rollback();
  191. return 'fail';
  192. }*/
  193. }else{
  194. echo "【账户不足】用户[{$userId}][{$mobile}],处理金额 {$catchMoney},账户余额[{$money}]-积分[{$score}],账户不够<br>";
  195. $noCatchUsers[$userId] = "【账户不足】用户[{$userId}][{$mobile}],账户余额[{$money}]-积分[{$score}],处理金额 {$catchMoney},账户不够";
  196. }
  197. }else{
  198. echo "【未做处理】用户[{$userId}][{$mobile}],处理金额 {$catchMoney},账户积分[{$money}]-积分[{$score}],数据错误未处理<br>";
  199. }
  200. }
  201. Db::commit();
  202. return 'success';
  203. }
  204. }