You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

CoursePackage.php 7.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. <?php
  2. namespace app\controller\api\project\yoga;
  3. use app\controller\api\AuthController;
  4. use app\controller\store\project\yoga\logic\OrderLogic;
  5. use app\model\store\yoga\CoursePackageModel;
  6. use app\model\store\yoga\MemberCoursePackageModel;
  7. use app\model\store\yoga\CoursePackageItemModel;
  8. use app\model\store\logs\ProjectWriteOffModel;
  9. use think\facade\Db;
  10. class CoursePackage extends AuthController{
  11. //获取我的课程包列表
  12. public function getMemberCoursePackageList(){
  13. $type = $this->request->param('type/d');
  14. $page = $this->request->param('page/d',1);
  15. $limit = $this->request->param('limit/d',15);
  16. $where = [
  17. ['member_id','=', $this->request->memberId]
  18. ];
  19. $today = date('Y-m-d',time());
  20. if($type == 0){
  21. $where[] = ['status','=',1];
  22. $where[] = ['valid_end_time','>=',$today];
  23. $query = MemberCoursePackageModel::where($where);
  24. }else{
  25. $where1 = $where;
  26. $where2 = $where;
  27. $where1[] = ['status','=',8];
  28. $where2[] = ['valid_end_time','<',$today];
  29. $query = MemberCoursePackageModel::whereOr([$where1,$where2]);
  30. }
  31. $datas = $query->order(['member_course_package_id'=>'desc'])->page($page)->limit($limit)->select()->append(['status_another'])->toArray();
  32. return $this->success(['datas'=>$datas]);
  33. }
  34. public function getMemberCoursePackageDetail(){
  35. $member_course_package_id = $this->request->param('member_course_package_id/d');
  36. if(empty($member_course_package_id)){
  37. return $this->fail('请选择要查看的课程包');
  38. }
  39. if(null === $card = MemberCoursePackageModel::find($member_course_package_id)){
  40. return $this->fail('请选择要查看的课程包');
  41. }
  42. $card->items;
  43. $card->append(['status_means','status_another','pay_time_format','pay_type_mean'])->toArray();
  44. return $this->success([
  45. 'detail' => $card
  46. ]);
  47. }
  48. public function getMemberCoursePackageLogs(){
  49. $member_course_package_id = $this->request->param('member_course_package_id/d');
  50. if(empty($member_course_package_id)){
  51. return $this->fail('请选择要查看的课程包');
  52. }
  53. if(null === $card = MemberCoursePackageModel::find($member_course_package_id)){
  54. return $this->fail('请选择要查看的课程包');
  55. }
  56. $where = [
  57. ['member_id','=', $this->request->memberId],
  58. ['source','=','course_package'],
  59. ['member_course_package_id','=',$member_course_package_id]
  60. ];
  61. $datas = ProjectWriteOffModel::where($where)->select()->append(['add_time_format'])->toArray();
  62. return $this->success([
  63. 'datas' => $datas
  64. ]);
  65. }
  66. public function getCoursePackageList()
  67. {
  68. $where=[
  69. ['is_delete','=',0],
  70. ['status','=',1],
  71. ];
  72. $page = $this->request->param('page/d',1);
  73. $limit = $this->request->param('limit/d',15);
  74. $course_package_model = new CoursePackageModel();
  75. $order=['sort'=>'desc','add_time'=>'desc'];
  76. $field='course_package_id,name,cover_img,price,worth,is_flash_sale,flash_price,flash_num,start_time,end_time,fictitious_take_count';
  77. $append=['is_flash_sale_expire','flash_sale_djs','save_money'];
  78. $datas=$course_package_model->where($where)->order($order)
  79. ->field($field)
  80. ->limit($limit)
  81. ->page($page)
  82. ->select()
  83. ->append($append)
  84. ->toArray();
  85. $return['datas']=$datas;
  86. return $this->success($return);
  87. }
  88. public function getCoursePackageDetail()
  89. {
  90. $course_package_id=$this->request->param('course_package_id/d',0);
  91. if($course_package_id==0) return $this->fail('课程包不存在');
  92. if(null === $course_package = CoursePackageModel::find($course_package_id)) return $this->fail('课程包不存在');
  93. if($course_package->is_delete != 0) return $this->fail('课程包不存在');
  94. $items= CoursePackageItemModel::with(['project'=>function($query){
  95. $query->field('project_id,type,cover_img,abbreviation,market_price');
  96. }])->where([
  97. ['course_package_id','=',$course_package->course_package_id],
  98. ['is_delete','=',0]
  99. ])->field('project_id,num')->select()->toArray();
  100. $detail=[
  101. 'name'=>$course_package->name,
  102. 'price'=>$course_package->price,
  103. 'is_flash_sale'=>$course_package->is_flash_sale,
  104. 'flash_price'=>$course_package->flash_price,
  105. 'is_flash_sale_expire'=>$course_package->is_flash_sale_expire,
  106. 'flash_sale_djs'=>$course_package->flash_sale_djs,
  107. 'save_money'=>$course_package->save_money,
  108. 'valid_time'=>$course_package->valid_time,
  109. 'valid_unit'=>$course_package->valid_unit,
  110. 'fictitious_take_count'=>$course_package->fictitious_take_count,
  111. 'cover_img'=>$course_package->cover_img,
  112. 'rotation'=>$course_package->rotation,
  113. 'items'=>$items,
  114. 'use_info'=>$course_package->use_info,
  115. ];
  116. return $this->success(['detail'=>$detail]);
  117. }
  118. public function createOrder()
  119. {
  120. $course_package_id=$this->request->param('course_package_id/d',0);
  121. $total_price = $this->request->param('total_price/f',0);
  122. $use_integral = $this->request->param('use_integral/d',0);
  123. $coupon_id = $this->request->param('coupon_id/d',0);
  124. $params=[
  125. 'member_id'=>$this->request->memberId,
  126. 'total_price'=>$total_price,
  127. 'use_integral'=>$use_integral,
  128. 'coupon_id'=>$coupon_id,
  129. 'course_package_id'=>$course_package_id,
  130. ];
  131. Db::startTrans();
  132. try{
  133. $order_logic = OrderLogic::init();
  134. $order_id=$order_logic['course_package']->createOrder($params);
  135. Db::commit();
  136. return $this->success(['order_id'=>$order_id]);
  137. } catch (\Exception $e){
  138. Db::rollback();
  139. return $this->fail($e->getMessage());
  140. }
  141. }
  142. public function moneyPay()
  143. {
  144. $course_package_order_id=$this->request->param('course_package_order_id/d',0);
  145. $params=[
  146. 'member_id'=>$this->request->memberId,
  147. 'course_package_order_id'=>$course_package_order_id,
  148. ];
  149. Db::startTrans();
  150. try{
  151. $order_logic = OrderLogic::init();
  152. $order_logic['course_package']->moneyPay($params);
  153. Db::commit();
  154. return $this->success('余额支付成功');
  155. } catch (\Exception $e){
  156. Db::rollback();
  157. return $this->fail($e->getMessage());
  158. }
  159. }
  160. public function cancelOrder()
  161. {
  162. $course_package_order_id=$this->request->param('course_package_order_id/d',0);
  163. $params=[
  164. 'member_id'=>$this->request->memberId,
  165. 'course_package_order_id'=>$course_package_order_id,
  166. ];
  167. Db::startTrans();
  168. try{
  169. $order_logic = OrderLogic::init();
  170. $order_logic['course_package']->cancelOrder($params);
  171. Db::commit();
  172. return $this->success('取消订单成功');
  173. } catch (\Exception $e){
  174. Db::rollback();
  175. return $this->fail($e->getMessage());
  176. }
  177. }
  178. }