AgentOrderIncomeLogic.php 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  1. <?php
  2. /**
  3. * AgentOrderLogic.php UTF-8
  4. * 小游戏玩家渠道收益逻辑
  5. *
  6. * @date : 2018/8/16 14:09
  7. *
  8. * @license 这不是一个自由软件,未经授权不许任何使用和传播。
  9. * @author : luowei <lw@huosdk.com>
  10. * @version : HuoMP 1.0
  11. */
  12. namespace huomp\logic\finance;
  13. use huo\controller\agent\AgentCache;
  14. use huo\controller\agent\AgentWallet;
  15. use huo\controller\finance\AoRequest;
  16. use huo\controller\game\GameCache;
  17. use huo\controller\member\MemCache;
  18. use huo\controller\wap\Option;
  19. use huo\model\agent\AgentGameModel;
  20. use huo\model\agent\AgentOrderModel;
  21. use huo\model\common\CommonModel;
  22. use huo\model\user\UserModel;
  23. use huolib\constant\AgentConst;
  24. use huolib\constant\OptionConst;
  25. use huolib\constant\SettleConst;
  26. use huolib\constant\WalletConst;
  27. use huolib\tool\StrUtils;
  28. use huomp\logic\member\MemInvitedLogLogic;
  29. use think\Log;
  30. class AgentOrderIncomeLogic extends CommonModel {
  31. /**
  32. * 注册收益
  33. *
  34. * @param $agent_id
  35. *
  36. * @return bool
  37. */
  38. public function register($agent_id) {
  39. $_agent_info = (new AgentCache())->getInfoByAgentId($agent_id);
  40. if (empty($_agent_info['mem_id']) || $_agent_info['role_id'] != AgentConst::AGENT_ROLE_MP_MEMBER) {
  41. Log::write('不是小游戏玩家渠道', 'agent_order_debug', true);
  42. return false;
  43. }
  44. $_option = new Option();
  45. $_setting_name = OptionConst::REBATE_MP_TEXT_REWARD;
  46. $_mp_reward_item = $_option->getOptionData($_setting_name);
  47. if (!empty($_mp_reward_item['option_value'])) {
  48. $_mp_reward_item_value = json_decode($_mp_reward_item['option_value'], true);
  49. }
  50. if (empty($_mp_reward_item_value)) {
  51. Log::write('option未配置', 'agent_order_debug', true);
  52. return false;
  53. }
  54. $_mem_info = (new MemCache())->getInfoById($_agent_info['mem_id']);
  55. $_mem_id = $_mem_info['id'];
  56. //注册收益
  57. $_agent_gain = get_val($_mp_reward_item_value, 'mem_reward', 0);
  58. //某些记录 user 表 没有记录到 parent_id,所以用 member 表 parent_mem_id 来查询
  59. $_pmem_id = $_mem_info['parent_mem_id'];
  60. //邀请渠道
  61. $_parent_id = 0;
  62. if (!empty($_pmem_id)) {
  63. $_parent_id = (new UserModel())->getIdByMemId($_pmem_id);
  64. }
  65. //邀请注册收益
  66. $_parent_gain = 0;
  67. if (!empty($_parent_id)) {
  68. $_parent_gain = get_val($_mp_reward_item_value, 'mem_agent_reward', 0);
  69. }
  70. $_flag = AoRequest::FLAG_REGISTER;
  71. $_order_id = StrUtils::genOrderId($agent_id, $agent_id, 0, WalletConst::WALLET_ORDER_PREFIX_MP);
  72. $_data = [
  73. "order_id" => $_order_id,
  74. "mem_id" => $_mem_id,
  75. "agent_id" => $agent_id,
  76. "agent_gain" => $_agent_gain,
  77. "flag" => $_flag,
  78. "parent_id" => $_parent_id,
  79. "parent_gain" => $_parent_gain,
  80. "remark" => "新用户奖励",
  81. ];
  82. $_rs = (new AgentOrderModel())->createOrder($_data);
  83. if (!$_rs) {
  84. Log::write('创建订单失败', 'agent_order_debug', true);
  85. return false;
  86. }
  87. //增加余额
  88. $_aw_class = new AgentWallet();
  89. $_rs = $_aw_class->updateWallet($agent_id, $_agent_gain, SettleConst::SETTLE_WALLET_ADD);
  90. if (!$_rs) {
  91. Log::write('增加余额失败', 'agent_order_debug', true);
  92. return false;
  93. }
  94. if (!empty($_parent_id)) {
  95. //计算 邀请渠道收益
  96. $_parent_agent_info = (new AgentCache())->getInfoByAgentId($_parent_id);
  97. if (empty($_parent_agent_info['mem_id'])
  98. || $_parent_agent_info['role_id'] != AgentConst::AGENT_ROLE_MP_MEMBER) {
  99. Log::write('父级不是小游戏玩家渠道', 'agent_order_debug', true);
  100. return false;
  101. }
  102. $_parent_mem_id = $_parent_agent_info['mem_id'];
  103. $_flag = AoRequest::FLAG_INVITE_REGISTER;
  104. $_order_id = StrUtils::genOrderId($_parent_id, $_parent_id, $agent_id, WalletConst::WALLET_ORDER_PREFIX_MP);
  105. $_data = [
  106. "order_id" => $_order_id,
  107. "mem_id" => $_parent_mem_id,
  108. "from_id" => $agent_id,
  109. "agent_id" => $_parent_id,
  110. "agent_gain" => $_parent_gain,
  111. "flag" => $_flag,
  112. "remark" => "授权成功获得奖励",
  113. ];
  114. $_rs = (new AgentOrderModel())->createOrder($_data);
  115. if (!$_rs) {
  116. Log::write('创建订单失败', 'agent_order_debug', true);
  117. return false;
  118. }
  119. //增加余额
  120. $_aw_class = new AgentWallet();
  121. $_rs = $_aw_class->updateWallet($_parent_id, $_parent_gain, SettleConst::SETTLE_WALLET_ADD);
  122. if (!$_rs) {
  123. Log::write('增加余额失败', 'agent_order_debug', true);
  124. return false;
  125. }
  126. //累计收益
  127. (new MemInvitedLogLogic())->cumulativeIncome($_parent_mem_id, $_mem_id, $_parent_gain);
  128. }
  129. return true;
  130. }
  131. /**
  132. * 打开游戏收益
  133. *
  134. * @param $agent_id
  135. * @param $agent_app_id
  136. *
  137. * @return bool|int
  138. */
  139. public function openGame($agent_id, $agent_app_id) {
  140. $_agent_info = (new AgentCache())->getInfoByAgentId($agent_id);
  141. if (empty($_agent_info['mem_id']) || $_agent_info['role_id'] != AgentConst::AGENT_ROLE_MP_MEMBER) {
  142. Log::write('不是小游戏玩家渠道', 'agent_order_debug', true);
  143. return false;
  144. }
  145. $_mem_id = $_agent_info['mem_id'];
  146. $_mem_info = (new MemCache())->getInfoById($_mem_id);
  147. $_ag_info = (new AgentGameModel())->getInfoById($agent_app_id);
  148. $_app_info = (new GameCache())->getInfoByAppId($_ag_info['app_id']);
  149. //打开游戏收益
  150. $_agent_gain = get_val($_ag_info, 'mem_reward', 0);
  151. //某些记录 user 表 没有记录到 parent_id,所以用 member 表 parent_mem_id 来查询
  152. $_pmem_id = $_mem_info['parent_mem_id'];
  153. //邀请渠道
  154. $_parent_id = 0;
  155. if (!empty($_pmem_id)) {
  156. $_parent_id = (new UserModel())->getIdByMemId($_pmem_id);
  157. }
  158. //邀请打开游戏收益
  159. $_parent_gain = 0;
  160. if (!empty($_parent_id)) {
  161. $_parent_gain = get_val($_ag_info, 'mem_agent_reward', 0);
  162. }
  163. $_flag = AoRequest::FLAG_OPEN_GAME;
  164. $_order_id = StrUtils::genOrderId($agent_id, $agent_id, 0, WalletConst::WALLET_ORDER_PREFIX_MP);
  165. $_data = [
  166. "order_id" => $_order_id,
  167. "agent_id" => $agent_id,
  168. "app_id" => $_app_info['id'],
  169. "agent_gain" => $_agent_gain,
  170. "flag" => $_flag,
  171. "parent_id" => $_parent_id,
  172. "parent_gain" => $_parent_gain,
  173. "remark" => "打开".$_app_info['name']."获得奖励",
  174. ];
  175. $_rs = (new AgentOrderModel())->createOrder($_data);
  176. if (!$_rs) {
  177. Log::write('创建订单失败', 'agent_order_debug', true);
  178. return false;
  179. }
  180. //增加余额
  181. $_aw_class = new AgentWallet();
  182. $_rs = $_aw_class->updateWallet($agent_id, $_agent_gain, SettleConst::SETTLE_WALLET_ADD);
  183. if (!$_rs) {
  184. Log::write('增加余额失败', 'agent_order_debug', true);
  185. return false;
  186. }
  187. if (!empty($_parent_id)) {
  188. //计算 邀请打开游戏收益
  189. $_parent_agent_info = (new AgentCache())->getInfoByAgentId($_parent_id);
  190. if (empty($_parent_agent_info['mem_id'])
  191. || $_parent_agent_info['role_id'] != AgentConst::AGENT_ROLE_MP_MEMBER) {
  192. Log::write('父级不是小游戏玩家渠道', 'agent_order_debug', true);
  193. return false;
  194. }
  195. $_parent_mem_id = $_parent_agent_info['mem_id'];
  196. $_flag = AoRequest::FLAG_INVITE_OPEN_GAME;
  197. $_order_id = StrUtils::genOrderId($_parent_id, $_parent_id, $agent_id, WalletConst::WALLET_ORDER_PREFIX_MP);
  198. $_data = [
  199. "order_id" => $_order_id,
  200. "mem_id" => $_parent_mem_id,
  201. "from_id" => $agent_id,
  202. "app_id" => $_app_info['id'],
  203. "agent_id" => $_parent_id,
  204. "agent_gain" => $_parent_gain,
  205. "flag" => $_flag,
  206. "remark" => "打开".$_app_info['name']."获得奖励",
  207. ];
  208. $_rs = (new AgentOrderModel())->createOrder($_data);
  209. if (!$_rs) {
  210. Log::write('创建订单失败', 'agent_order_debug', true);
  211. return false;
  212. }
  213. //增加余额
  214. $_aw_class = new AgentWallet();
  215. $_rs = $_aw_class->updateWallet($_parent_id, $_parent_gain, SettleConst::SETTLE_WALLET_ADD);
  216. if (!$_rs) {
  217. Log::write('增加余额失败', 'agent_order_debug', true);
  218. return false;
  219. }
  220. //累计收益
  221. (new MemInvitedLogLogic())->cumulativeIncome($_parent_mem_id, $_mem_id, $_parent_gain);
  222. }
  223. return true;
  224. }
  225. }