Renewal.php 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  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. if (!$product) {
  48. return ["msg" => "错误:该产品已停售"];
  49. }
  50. $userInfo = model('userinfo')->getInfo($userId);
  51. switch (intval($type)) {
  52. case 1:
  53. $money = $product->product_TypeOne;
  54. break;
  55. case 2:
  56. $money = $product->product_TypeTwo;
  57. break;
  58. case 3:
  59. $money = $product->product_TypeThree;
  60. break;
  61. default:
  62. $money = $product->product_TypeFour;
  63. }
  64. if ($userInfo->userInfo_money >= $money) {
  65. $findRenewal = model('renewal')->findRenewal(['renewal_status' => 1, 'renewal_identity' => $type]);
  66. } else {
  67. return ["msg" => "错误:您的余额不足"];
  68. }
  69. if (!$findRenewal) {
  70. return ["msg" => "错误:该期限已不支持购买"];
  71. }
  72. $day = $findRenewal->renewal_day;
  73. $cashMoney = $userInfo->userInfo_money - $money;
  74. $dbUserInfo = model('Userinfo');
  75. $dbUserProduct = model('Userproduct');
  76. $dbOrder = model('Order');
  77. $dbUserInfo->startTrans();
  78. $dbUserProduct->startTrans();
  79. $dbOrder->startTrans();
  80. try {
  81. $dbUserInfo->updateInfo($userId, ['userInfo_money' => $cashMoney]);
  82. $nowDate = date('Y-m-d');
  83. $userProduct = model('Userproduct')->findUserProduct(['userProduct_id' => $userProduct_id]);
  84. $data['userProduct_dayNumber'] = $userProduct->userProduct_dayNumber + $day;
  85. $orderID = OrderID();
  86. $data['userproduct_identity'] = $orderID;
  87. $data['userProduct_buyTime'] = $nowDate;
  88. if ($userProduct->userProduct_maturityTime > $nowDate) {
  89. $data['userProduct_maturityTime'] = date('Y-m-d', strtotime(intval($day) . " day", strtotime($userProduct->userProduct_maturityTime)));
  90. } else {
  91. $data['userProduct_maturityTime'] = date('Y-m-d', strtotime(intval($day) . " day"));
  92. }
  93. $dbUserProduct->updateUserProduct(['userProduct_id' => $userProduct_id], $data);
  94. $addOrderData = [
  95. 'order_identity' => $orderID,
  96. 'user_id' => $userId,
  97. 'product_id' => $product_id,
  98. 'order_dayNumber' => $day,
  99. 'order_buyTime' => $nowDate,
  100. 'order_money' => $money,
  101. ];
  102. $dbOrder->addOrder($addOrderData);
  103. // 提交事务
  104. $dbUserInfo->commit();
  105. $dbUserProduct->commit();
  106. $dbOrder->commit();
  107. return ["msg" => "续费成功"];
  108. } catch (\Exception $e) {
  109. // 回滚事务
  110. $dbUserInfo->rollBack();
  111. $dbUserProduct->rollBack();
  112. $dbOrder->rollBack();
  113. return ["msg" => "操作失败"];
  114. }
  115. }
  116. }
  117. ?>