UserRebateService.php 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. <?php
  2. namespace app\data\service;
  3. use app\data\model\DataUser;
  4. use app\data\model\DataUserRebate;
  5. use app\data\model\DataUserTransfer;
  6. use app\data\model\ShopOrder;
  7. use think\admin\Service;
  8. /**
  9. * 用户返利数据服务
  10. * Class UserRebateService
  11. * @package app\data\service
  12. */
  13. class UserRebateService extends Service
  14. {
  15. /**
  16. * 同步刷新用户返利
  17. * @param integer $uuid
  18. * @return array [total, count, lock]
  19. */
  20. public static function amount(int $uuid): array
  21. {
  22. if ($uuid > 0) {
  23. $count = DataUserTransfer::mk()->whereRaw("uuid='{$uuid}' and status>0")->sum('amount');
  24. $total = DataUserRebate::mk()->whereRaw("uuid='{$uuid}' and status=1 and deleted=0")->sum('amount');
  25. $locks = DataUserRebate::mk()->whereRaw("uuid='{$uuid}' and status=0 and deleted=0")->sum('amount');
  26. DataUser::mk()->where(['id' => $uuid])->update(['rebate_total' => $total, 'rebate_used' => $count, 'rebate_lock' => $locks]);
  27. } else {
  28. $count = DataUserTransfer::mk()->whereRaw("status>0")->sum('amount');
  29. $total = DataUserRebate::mk()->whereRaw("status=1 and deleted=0")->sum('amount');
  30. $locks = DataUserRebate::mk()->whereRaw("status=0 and deleted=0")->sum('amount');
  31. }
  32. return [$total, $count, $locks];
  33. }
  34. /**
  35. * 确认收货订单处理
  36. * @param string $orderNo
  37. * @return array [status, message]
  38. * @throws \think\db\exception\DataNotFoundException
  39. * @throws \think\db\exception\DbException
  40. * @throws \think\db\exception\ModelNotFoundException
  41. */
  42. public static function confirm(string $orderNo): array
  43. {
  44. $map = [['status', '>=', 4], ['order_no', '=', $orderNo]];
  45. $order = ShopOrder::mk()->where($map)->findOrEmpty()->toArray();
  46. if (empty($order)) return [0, '需处理的订单状态异常!'];
  47. $map = [['status', '=', 0], ['order_no', 'like', "{$orderNo}%"]];
  48. DataUserRebate::mk()->where($map)->update(['status' => 1]);
  49. if (UserUpgradeService::upgrade($order['uuid'])) {
  50. return [1, '重新计算用户金额成功!'];
  51. } else {
  52. return [0, '重新计算用户金额失败!'];
  53. }
  54. }
  55. }