PointExchangeLoveController.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * Name: 芸众商城系统
  5. * Author: 广州市芸众信息科技有限公司
  6. * Profile: 广州市芸众信息科技有限公司位于国际商贸中心的广州,专注于移动电子商务生态系统打造,拥有芸众社交电商系统、区块链数字资产管理系统、供应链管理系统、电子合同等产品/服务。官网 :www.yunzmall.com www.yunzshop.com
  7. * Date: 2021/10/28
  8. * Time: 13:37
  9. */
  10. namespace app\frontend\modules\finance\controllers;
  11. use app\common\components\ApiController;
  12. use app\common\exceptions\ShopException;
  13. use app\common\facades\Setting;
  14. use app\common\services\finance\PointService;
  15. use app\frontend\models\Member;
  16. use Illuminate\Support\Facades\DB;
  17. class PointExchangeLoveController extends ApiController
  18. {
  19. /**
  20. * @return \Illuminate\Http\JsonResponse
  21. * @throws \app\common\exceptions\AppException
  22. * 积分手动转入爱心值
  23. */
  24. public function index()
  25. {
  26. $this->validate([
  27. 'exchange_num' => 'required|numeric|min:0.01',
  28. ], null, [], [
  29. 'exchange_num' => '转换积分',
  30. ]);
  31. $setting = Setting::get('point.set');
  32. $exchange_percent = bcdiv(floatval($setting['transfer_integral_love']) ?: 1, floatval($setting['transfer_integral']) ?: 1, 4);
  33. if (bccomp($exchange_percent, 0, 2) != 1) {
  34. return $this->errorJson('转换比例异常');
  35. }
  36. $point = bcadd(request()->exchange_num, 0, 2);
  37. $love = bcmul($point, $exchange_percent, 2);
  38. if (bccomp($love, 0, 2) != 1) {
  39. return $this->errorJson('转换的爱心值小于0.01');
  40. }
  41. $point_name = Setting::get('shop.shop.credit1') ?: '积分';
  42. $love_name = defined('LOVE_NAME') ? LOVE_NAME : '爱心值';
  43. if (bccomp(Member::current()->credit1, $point, 2) == -1) {
  44. return $this->errorJson('积分不足');
  45. }
  46. try {
  47. DB::beginTransaction();
  48. $data = [
  49. 'point_income_type' => PointService::POINT_INCOME_LOSE,
  50. 'member_id' => \YunShop::app()->getMemberId(),
  51. 'point_mode' => PointService::POINT_MODE_POINT_EXCHANGE_LOVE,
  52. 'point' => bcsub(0, $point, 2),
  53. 'remark' => "{$point}{$point_name}手动转成{$love}{$love_name}"
  54. ];
  55. $pointService = new PointService($data);
  56. $res = $pointService->changePoint();
  57. if ($res === false) {
  58. throw new ShopException('扣除积分异常,未知错误');
  59. }
  60. $data = [
  61. 'member_id' => \YunShop::app()->getMemberId(),
  62. 'change_value' => $love,
  63. 'operator' => 0,
  64. 'operator_id' => 0,
  65. 'relation' => '',
  66. 'remark' => "{$point}{$point_name}手动转成{$love}{$love_name}",
  67. ];
  68. $res = (new \Yunshop\Love\Common\Services\LoveChangeService())->exchangePointToLove($data);
  69. if ($res !== true) {
  70. throw new ShopException('增加爱心值异常,未知错误');
  71. }
  72. DB::commit();
  73. return $this->successJson('转换成功');
  74. } catch (ShopException $e) {
  75. DB::rollBack();
  76. return $this->errorJson($e->getMessage());
  77. }
  78. }
  79. }