Renewal.php 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. <?php
  2. namespace app\user\controller;
  3. use think\Lang;
  4. class Renewal extends UserControl
  5. {
  6. public function _initialize()
  7. {
  8. parent::_initialize(); // TODO: Change the autogenerated stub
  9. Lang::load(APP_PATH . 'admin/lang/' . config('default_lang') . '/db.lang.php');
  10. }
  11. public function index()
  12. {
  13. $condition['user_id'] = session('user_id');
  14. $type = input('get.type');
  15. $nowDate = date('Y-m-d');
  16. if (strlen($type)) {
  17. if ($type > 0) {
  18. $maturityTime = date('Y-m-d', strtotime($type . " day"));
  19. $condition['userProduct_maturityTime'] = array('between', array($nowDate, $maturityTime));
  20. } else {
  21. $condition['userProduct_maturityTime'] = array('<', $nowDate);
  22. }
  23. }
  24. $userProduct = model('Userproduct')->getUserProduct($condition);
  25. $fatherProduct = model('product')->getProduct($condition);
  26. $productData = [];
  27. foreach ($fatherProduct as $v) {
  28. $productData[$v->product_id] = $v->product_name;
  29. }
  30. foreach ($userProduct as $key => $v) {
  31. $userProduct[$key]->fatherProduct = $productData[$v->product_pid];
  32. $userProduct[$key]->status = $nowDate > $v->userProduct_maturityTime ? '已过期' : '正常';
  33. }
  34. $this->assign('userProduct', $userProduct);
  35. $this->assign('show_page', $userProduct->render());
  36. $getRenewal = model('renewal')->getRenewal();
  37. $this->assign('renewalType', $getRenewal);
  38. return $this->fetch('index');
  39. }
  40. public function renewal()
  41. {
  42. $userId = session('user_id');
  43. $type = input('post.type');
  44. $userProduct_id = input('post.renewal_id');
  45. $product_id = input('post.product_id');
  46. $product = model('product')->getProductWhere(['product_id' => $product_id, 'product_status' => 1]);
  47. $fartherProduct = model('product')->getProductWhere(['product_id' => $product->product_pid]);
  48. if (!$product) {
  49. return ["msg" => "错误:该产品已停售"];
  50. }
  51. $userInfo = model('userinfo')->getInfo($userId);
  52. switch (intval($type)) {
  53. case 1:
  54. $money = $product->product_TypeOne;
  55. break;
  56. case 2:
  57. $money = $product->product_TypeTwo;
  58. break;
  59. case 3:
  60. $money = $product->product_TypeThree;
  61. break;
  62. default:
  63. $money = $product->product_TypeFour;
  64. }
  65. if ($userInfo->userInfo_money >= $money) {
  66. $findRenewal = model('renewal')->findRenewal(['renewal_status' => 1, 'renewal_identity' => $type]);
  67. } else {
  68. return ["msg" => "错误:您的余额不足"];
  69. }
  70. if (!$findRenewal) {
  71. return ["msg" => "错误:该期限已不支持购买"];
  72. }
  73. $day = $findRenewal->renewal_day;
  74. $cashMoney = $userInfo->userInfo_money - $money;
  75. $dbUserInfo = model('Userinfo');
  76. $dbUserProduct = model('Userproduct');
  77. $dbOrder = model('Order');
  78. $capitalMovements = model('CapitalMovements');
  79. $dbUserInfo->startTrans();
  80. $dbUserProduct->startTrans();
  81. $dbOrder->startTrans();
  82. $capitalMovements->startTrans();
  83. try {
  84. $dbUserInfo->updateInfo($userId, ['userInfo_money' => $cashMoney]);
  85. $nowDate = date('Y-m-d');
  86. $userProduct = model('Userproduct')->findUserProduct(['userProduct_id' => $userProduct_id]);
  87. $data['userProduct_dayNumber'] = $userProduct->userProduct_dayNumber + $day;
  88. $orderID = OrderID();
  89. $data['userProduct_identity'] = $orderID;
  90. $data['userProduct_buyTime'] = $nowDate;
  91. if ($userProduct->userProduct_maturityTime > $nowDate) {
  92. $data['userProduct_maturityTime'] = date('Y-m-d', strtotime(intval($day) . " day", strtotime($userProduct->userProduct_maturityTime)));
  93. } else {
  94. $data['userProduct_maturityTime'] = date('Y-m-d', strtotime(intval($day) . " day"));
  95. }
  96. $dbUserProduct->updateUserProduct(['userProduct_id' => $userProduct_id], $data);
  97. $addOrderData = [
  98. 'order_identity' => $orderID,
  99. 'user_id' => $userId,
  100. 'product_id' => $product_id,
  101. 'order_dayNumber' => $day,
  102. 'order_buyTime' => $nowDate,
  103. 'order_money' => $money,
  104. ];
  105. $dbOrder->addOrder($addOrderData);
  106. $cplMvtData = [
  107. 'user_id' => $userId,
  108. 'capitalMovements_describe' => '购买服务:' . $fartherProduct->product_name . ' ▪ ' . $product->product_name,
  109. 'capitalMovements_identity' => $orderID,
  110. 'capitalMovements_create' => $nowDate,
  111. 'capitalMovements_update' => $nowDate,
  112. 'capitalMovements_money' => $money,
  113. 'capitalMovements_type' => 2,
  114. 'capitalMovements_cash' => $cashMoney,
  115. 'capitalMovements_operator' => $userId,
  116. ];
  117. $capitalMovements->add($cplMvtData);
  118. // 提交事务
  119. $dbUserInfo->commit();
  120. $dbUserProduct->commit();
  121. $dbOrder->commit();
  122. $capitalMovements->commit();
  123. return ["msg" => "续费成功"];
  124. } catch (\Exception $e) {
  125. // 回滚事务
  126. $dbUserInfo->rollBack();
  127. $dbUserProduct->rollBack();
  128. $dbOrder->rollBack();
  129. $capitalMovements->rollBack();
  130. return ["msg" => "操作失败"];
  131. }
  132. }
  133. }
  134. ?>