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.

MembershipCard.php 7.9KB

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