Ptb.php 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. <?php
  2. /**
  3. * Ptb.php UTF-8
  4. * 平台币充值
  5. *
  6. * @date : 2018/5/16 21:12
  7. *
  8. * @license 这不是一个自由软件,未经授权不许任何使用和传播。
  9. * @author : wuyonghong <wyh@huosdk.com>
  10. * @version : HUOSDK 8.0
  11. */
  12. namespace huo\controller\wallet;
  13. use huo\controller\common\Base;
  14. use huo\controller\common\CommonFunc;
  15. use huo\controller\member\MemCache;
  16. use huo\controller\member\MemWallet;
  17. use huo\logic\finance\PtbChargeLogic;
  18. use huo\logic\finance\PtbOrderLogic;
  19. use huo\model\finance\PtbChargeModel;
  20. use huolib\constant\WalletConst;
  21. use huolib\status\CommonStatus;
  22. use huolib\status\MemberStatus;
  23. use huolib\status\OrderStatus;
  24. use huolib\status\SettleStatus;
  25. use huolib\tool\StrUtils;
  26. class Ptb extends Base {
  27. protected function retSucMsg($code, $data = []) {
  28. $_msg = OrderStatus::getMsg($code);
  29. return $this->huoSuccess($code, $_msg, $data);
  30. }
  31. protected function retErrMsg($code) {
  32. $_err_msg = OrderStatus::getMsg($code);
  33. return $this->huoError($code, $_err_msg);
  34. }
  35. /**
  36. *
  37. * @param $mem_id
  38. * @param array $param
  39. * @param string $page
  40. * @param string $order
  41. *
  42. * @return array
  43. */
  44. public function getMemChargeList($mem_id, $param = [], $page = '1,10', $order = '-create_time') {
  45. $_data = (new PtbChargeLogic())->getMemList($mem_id, $param, $page, $order);
  46. return $this->retSucMsg(CommonStatus::NO_ERROR, $_data);
  47. }
  48. public function getMemConsumeList($mem_id, $param = [], $page = '1,10', $order = '-create_time') {
  49. $_data = (new PtbOrderLogic())->getMemList($mem_id, $param, $page, $order);
  50. return $this->retSucMsg(CommonStatus::NO_ERROR, $_data);
  51. }
  52. /**
  53. * 预下单
  54. *
  55. * @param $mem_id
  56. * @param $amount
  57. *
  58. * @param $type
  59. * @param $payway
  60. *
  61. * @return array|bool|string
  62. */
  63. public function preorder($mem_id, $amount, $type, $payway) {
  64. if (empty($mem_id)) {
  65. $_code = MemberStatus::LOGIN_IS_OUT;
  66. return $this->huoError($_code, MemberStatus::getMsg($_code));
  67. }
  68. if (empty($amount) || $amount < 1) {
  69. $_code = OrderStatus::ORDER_AMOUNT_MINIMUM_IS_1;
  70. return $this->huoError($_code, OrderStatus::getMsg($_code));
  71. }
  72. $_mc_class = MemCache::ins();
  73. $_mem_data = $_mc_class->getInfoById($mem_id);
  74. $_me_data = $_mc_class->getMeInfoById($mem_id);
  75. if (empty($_mem_data) || empty($_me_data)) {
  76. $_code = MemberStatus::UID_INVALID;
  77. return $this->huoError($_code, MemberStatus::getMsg($_code));
  78. }
  79. $_wr_class = new WalletRequest();
  80. $_order_id = StrUtils::genOrderId($_mem_data['agent_id'], $_mem_data['agent_id'], $mem_id, WalletConst::WALLET_ORDER_PREFIX_PC);
  81. $_wr_class->setOrderId($_order_id);
  82. $_wr_class->setRealAmount($amount);
  83. $_wr_class->setType($type);
  84. $_wr_class->setPayway($payway);
  85. $_wr_class->setMemId($mem_id);
  86. // TODO: wuyonghong 2018/4/27 折扣处理
  87. $_wr_class->setAmount($amount);
  88. $_ptb_cnt = floor($amount * CommonFunc::getPtbRmbRate());
  89. $_wr_class->setPtbCnt($_ptb_cnt);
  90. $_rs = (new MemWallet())->createPcOrder($_wr_class);
  91. if (SettleStatus::NO_ERROR != $_rs) {
  92. return $this->huoError($_rs, SettleStatus::getMsg($_rs));
  93. }
  94. $_rdata['order_id'] = $_order_id;
  95. return $this->retSucMsg(OrderStatus::NO_ERROR, $_rdata);
  96. }
  97. /**
  98. * @param $order_id
  99. *
  100. * @return bool
  101. */
  102. public function getStatus($order_id = '') {
  103. if (empty($order_id)) {
  104. return false;
  105. }
  106. $_o_model = new PtbChargeModel();
  107. $_rs = $_o_model->getStatus($order_id);
  108. if (false == $_rs) {
  109. return false;
  110. }
  111. return $_rs;
  112. }
  113. /**
  114. * @param string $app_id
  115. *
  116. * @return array
  117. */
  118. public function getPayWays($app_id) {
  119. // TODO: wuyonghong 2018/4/28 从数据库读取
  120. if (empty($app_id)) {
  121. /* 获取支付方式 */
  122. $_rdata[0]['payway'] = 'alipay';
  123. $_rdata[0]['name'] = '支付宝';
  124. $_rdata[0]['icon'] = '';
  125. $_rdata[0]['url'] = STATICSITE.'/h5sdk/images/arwec.png';
  126. $_rdata[1]['payway'] = 'wxpay';
  127. $_rdata[1]['name'] = '微信';
  128. $_rdata[1]['icon'] = STATICSITE.'/h5sdk/images/wergcder.png';
  129. $_rdata[1]['url'] = '支付宝';
  130. }
  131. /* 获取支付方式 */
  132. $_rdata[0]['payway'] = 'alipay';
  133. $_rdata[0]['name'] = '支付宝';
  134. $_rdata[0]['icon'] = STATICSITE.'/h5sdk/images/arwec.png';
  135. $_rdata[0]['url'] = '支付宝';
  136. $_rdata[1]['payway'] = 'wxpay';
  137. $_rdata[1]['name'] = '微信';
  138. $_rdata[1]['icon'] = STATICSITE.'/h5sdk/images/wergcder.png';
  139. $_rdata[1]['url'] = '支付宝';
  140. $_rdata[2]['payway'] = 'shengpay';
  141. $_rdata[2]['name'] = '银行卡';
  142. $_rdata[2]['icon'] = STATICSITE.'/h5sdk/images/upcash.png';
  143. $_rdata[2]['url'] = '银行卡';
  144. return $_rdata;
  145. }
  146. /**
  147. * 查询微信订单
  148. *
  149. * @param $order_id
  150. */
  151. public function queryWxOrder($order_id) {
  152. // TODO: wuyonghong 2018/5/7 查询订单完成情况
  153. }
  154. }