MemberMergeService.php 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * Name: 芸众商城系统
  5. * Author: 广州市芸众信息科技有限公司
  6. * Profile: 广州市芸众信息科技有限公司位于国际商贸中心的广州,专注于移动电子商务生态系统打造,拥有芸众社交电商系统、区块链数字资产管理系统、供应链管理系统、电子合同等产品/服务。官网 :www.yunzmall.com www.yunzshop.com
  7. * Date: 2022-10-12
  8. * Time: 16:43
  9. */
  10. namespace app\common\services\member;
  11. use app\common\facades\Setting;
  12. use app\common\models\CouponLog;
  13. use app\common\models\member\MemberMerge;
  14. use app\common\models\MemberCoupon;
  15. use app\common\services\credit\ConstService;
  16. use app\common\services\finance\BalanceChange;
  17. use app\common\services\finance\PointService;
  18. use Illuminate\Support\Facades\DB;
  19. use Yunshop\Love\Common\Models\MemberLove;
  20. use Yunshop\Love\Common\Services\LoveChangeService;
  21. class MemberMergeService
  22. {
  23. public $merge_data;
  24. public $hold_uid;
  25. public $give_up_uid;
  26. public function __construct($hold_uid, $give_up_uid, $merge_data)
  27. {
  28. $this->hold_uid = $hold_uid;
  29. $this->give_up_uid = $give_up_uid;
  30. $this->merge_data = $merge_data;
  31. }
  32. public function handel()
  33. {
  34. $this->changePoint();
  35. $this->changeLove();
  36. $this->changeAmount();
  37. $this->changeCoupon();
  38. $this->changeProductMarket();
  39. \Log::debug('---会员合并服务处理---数据---', $this->merge_data);
  40. MemberMerge::create($this->merge_data);//合并记录
  41. }
  42. public function changePoint()
  43. {
  44. //积分
  45. $change_point = $this->merge_data['before_point'];
  46. $point_data = [
  47. 'point_mode' => PointService::POINT_MODE_MEMBER_MERGE,
  48. 'member_id' => $this->hold_uid,
  49. 'point' => $change_point,
  50. 'remark' => '[会员合并转入:会员ID:'. $this->hold_uid . '积分' . $change_point .']',
  51. 'point_income_type' => PointService::POINT_INCOME_GET
  52. ];
  53. $pointService = new PointService($point_data);
  54. $pointService->changePoint();
  55. }
  56. public function changeAmount()
  57. {
  58. //余额
  59. $change_amount = $this->merge_data['before_amount'];
  60. $data = [
  61. 'member_id' => $this->hold_uid,
  62. 'remark' => '[会员合并转入:会员ID:' . $this->hold_uid . '余额' . $change_amount . '元]',
  63. 'source' => ConstService::MEMBER_MERGE,
  64. 'relation' => '',
  65. 'operator' => ConstService::OPERATOR_SHOP,
  66. 'operator_id' => $this->hold_uid,
  67. 'change_value' => $change_amount,
  68. ];
  69. (new BalanceChange())->memberMerge($data);
  70. }
  71. public function changeLove()
  72. {
  73. if (app('plugins')->isEnabled('love')) {
  74. $hold_member_love_usable = MemberLove::uniacid()->where('member_id', $this->hold_uid)->value('usable');
  75. $give_up_member_love_usable = MemberLove::uniacid()->where('member_id', $this->give_up_uid)->value('usable');
  76. $hold_member_love_froze = MemberLove::uniacid()->where('member_id', $this->hold_uid)->value('froze');
  77. $give_up_member_love_froze = MemberLove::uniacid()->where('member_id', $this->give_up_uid)->value('froze');
  78. $after_love_usable = bcadd($hold_member_love_usable, $give_up_member_love_usable, 2);
  79. $after_love_froze = bcadd($hold_member_love_froze, $give_up_member_love_froze, 2);
  80. $this->merge_data = array_merge($this->merge_data, [
  81. 'before_love_usable' => $give_up_member_love_usable?:0.00,
  82. 'after_love_usable' => $after_love_usable?:0.00,
  83. 'before_love_froze' => $give_up_member_love_froze?:0.00,
  84. 'after_love_froze' => $after_love_froze?:0.00,
  85. ]);
  86. //可用
  87. $change_usable_love = $this->merge_data['before_love_usable'];
  88. $love_set = Setting::get('love');
  89. if ($change_usable_love > 0) {
  90. $usable_love_name = $love_set['usable_name'] ?: $love_set['name'] ?: '爱心值';
  91. $usable_love_data = [
  92. 'member_id' => $this->hold_uid,
  93. 'change_value' => $change_usable_love,
  94. 'operator' => 0,
  95. 'operator_id' => 0,
  96. 'remark' => '[会员合并转入:会员ID:'.$this->hold_uid.$usable_love_name.$change_usable_love.']',
  97. 'relation' => ''
  98. ];
  99. (new LoveChangeService('usable'))->memberMerge($usable_love_data);
  100. }
  101. //冻结
  102. $change_froze_love = $this->merge_data['before_love_froze'];
  103. if ($change_froze_love > 0) {
  104. $froze_love_name = $love_set['unable_name'] ?: $love_set['name'] ? '白'.$love_set['name'] : '白爱心值';
  105. $froze_love_data = [
  106. 'member_id' => $this->hold_uid,
  107. 'change_value' => $change_froze_love,
  108. 'operator' => 0,
  109. 'operator_id' => 0,
  110. 'remark' => '[会员合并转入:会员ID:'.$this->hold_uid.$froze_love_name.$change_froze_love.']',
  111. 'relation' => ''
  112. ];
  113. (new LoveChangeService('froze'))->memberMerge($froze_love_data);
  114. }
  115. }
  116. }
  117. public function changeCoupon()
  118. {
  119. $give_up_coupons = MemberCoupon::uniacid()->where(['uid'=>$this->give_up_uid])->get();
  120. foreach ($give_up_coupons as $coupon) {
  121. $coupon->update(['uid'=>$this->hold_uid]);
  122. CouponLog::create([
  123. 'uniacid' => $coupon->uniacid,
  124. 'logno' => '会员合并转入: 会员【ID:' . $this->hold_uid . '】获得优惠券 1张【优惠券ID:' . $coupon->coupon_id . '】',
  125. 'member_id' => $this->hold_uid,
  126. 'couponid' => $coupon->coupon_id,
  127. 'paystatus' => 0,
  128. 'creditstatus' => 0,
  129. 'paytype' => 0,
  130. 'getfrom' => CouponLog::MEMBER_MERGE,
  131. 'status' => 0,
  132. 'createtime' => time(),
  133. ]);
  134. }
  135. }
  136. //处理应用市场客户管理数据
  137. private function changeProductMarket()
  138. {
  139. if (app('plugins')->isEnabled('product-market')) {
  140. DB::table('yz_product_market_client')->where('member_id', $this->give_up_uid)->update(['member_id'=>$this->hold_uid]);
  141. }
  142. }
  143. }