PtbRate.php 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. <?php
  2. /**
  3. * PtbRate.php UTF-8
  4. *
  5. *
  6. * @date : 2018/5/18 22:34
  7. *
  8. * @license 这不是一个自由软件,未经授权不许任何使用和传播。
  9. * @author : wuyonghong <wyh@huosdk.com>
  10. * @version : HUOSDK 8.0
  11. */
  12. namespace huo\controller\rate;
  13. use huo\controller\agent\Agent;
  14. use huo\controller\agent\AgentCache;
  15. use huo\controller\common\Base;
  16. use huo\logic\agent\AgentRateLogic;
  17. use huo\model\agent\AgentRateModel;
  18. use huolib\constant\AgentConst;
  19. use huolib\status\CommonStatus;
  20. use huolib\status\MemberStatus;
  21. use huolib\status\RateStatus;
  22. use huolib\status\SettleStatus;
  23. class PtbRate extends Base {
  24. private $agent_rate = 1.0;
  25. private $sub_agent_rate = 1.0;
  26. private $agent_id;
  27. public function __construct($agent_id = 0) {
  28. $this->agent_id = $agent_id;
  29. $this->setRate();
  30. if (!empty($agent_id)) {
  31. $this->setARate($agent_id);
  32. }
  33. }
  34. /**
  35. * @return void
  36. */
  37. public function setRate() {
  38. $_data = (new AgentRateLogic())->getDefaultInfo();
  39. if (!empty($_data)) {
  40. $this->agent_rate = $_data['agent_rate'];
  41. $this->sub_agent_rate = $_data['sub_agent_rate'];
  42. }
  43. }
  44. /**
  45. *
  46. * @param int $agent_id
  47. *
  48. * @return false true 设置成功 false 设置失败
  49. */
  50. public function setARate($agent_id) {
  51. $_agent_logic = new AgentRateLogic();
  52. $_data = $_agent_logic->getInfoByAgentId($agent_id);
  53. if (!empty($_data)) {
  54. $this->agent_rate = $_data['agent_rate'];
  55. $this->sub_agent_rate = $_data['sub_agent_rate'];
  56. } else {
  57. $_agent_class = new Agent();
  58. $_role_type = $_agent_class->getRoleType($agent_id);
  59. if (AgentConst::isSubAgent($_role_type)) {
  60. $_parent_id = $_agent_class->getParentId($agent_id);
  61. $_data = $_agent_logic->getInfoByAgentId($_parent_id);
  62. if (!empty($_data)) {
  63. $this->agent_rate = $_data['sub_agent_rate'];
  64. } else {
  65. $this->agent_rate = $this->sub_agent_rate;
  66. }
  67. $this->sub_agent_rate = 1;
  68. }
  69. }
  70. return true;
  71. }
  72. /**
  73. * 获取折扣
  74. *
  75. * @param int $agent_id
  76. *
  77. * @return float
  78. *
  79. */
  80. public function getRate($agent_id = 0) {
  81. if (!empty($agent_id)) {
  82. $this->setARate($agent_id);
  83. }
  84. return $this->agent_rate;
  85. }
  86. /**
  87. * @return float
  88. */
  89. public function getAgentRate() {
  90. return $this->agent_rate;
  91. }
  92. /**
  93. * 修改渠道折扣,不存在则新增
  94. *
  95. * @param $agent_id
  96. * @param $agent_rate
  97. * @param float $agent_sub_rate
  98. *
  99. * @return array|bool
  100. */
  101. public function updateRate($agent_id, $agent_rate, $agent_sub_rate = 1.00) {
  102. $_agent_data = AgentCache::ins()->getInfoByAgentId($agent_id);
  103. if (empty($_agent_data)) {
  104. $_code = MemberStatus::INVALID_PARAMS;
  105. return $this->huoError($_code, MemberStatus::getMsg($_code));
  106. }
  107. $_data = [
  108. 'agent_id' => $agent_id,
  109. 'agent_rate' => $agent_rate,
  110. 'sub_agent_rate' => $agent_sub_rate,
  111. ];
  112. $_rate_check = new RateCheck();
  113. $_rs = $_rate_check->checkDataParam($_data);
  114. if (RateStatus::NO_ERROR != $_rs) {
  115. return $_rate_check->retMsg($_rs);
  116. }
  117. $_agent_rate = (new AgentRateModel())->getDetail($agent_id);
  118. if (!empty($_agent_rate)) {
  119. $_rs = (new AgentRateModel())->updateData($_data, $agent_id);
  120. if (false === $_rs) {
  121. $_code = SettleStatus::INNER_ERROR;
  122. return $this->huoError($_code, SettleStatus::getMsg($_code));
  123. }
  124. } else {
  125. $_rs = (new AgentRateModel())->addData($_data);
  126. if (false === $_rs) {
  127. $_code = SettleStatus::INNER_ERROR;
  128. return $this->huoError($_code, SettleStatus::getMsg($_code));
  129. }
  130. }
  131. $_code = CommonStatus::NO_ERROR;
  132. return $this->huoSuccess($_code, CommonStatus::getMsg($_code));
  133. }
  134. }