DiagnosisOrder.php 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. <?php
  2. /**
  3. *
  4. * @author: xaboy<365615158@qq.com>
  5. * @day: 2017/11/02
  6. */
  7. namespace app\admin\model\diagnosis;
  8. use app\admin\model\store\StoreProduct;
  9. use app\admin\model\system\SystemAdmin;
  10. use app\models\article\ArticleContent;
  11. use app\models\user\User;
  12. use app\models\user\UserBill;
  13. use crmeb\traits\ModelTrait;
  14. use crmeb\basic\BaseModel;
  15. use think\model\concern\SoftDelete;
  16. /**
  17. * 图文管理 Model
  18. * Class WechatNews
  19. * @package app\admin\model\wechat
  20. */
  21. class DiagnosisOrder extends BaseModel
  22. {
  23. use ModelTrait;
  24. protected $pk = 'id';
  25. protected $name = 'diagnosis_order';
  26. protected $autoWriteTimestamp = true;
  27. use SoftDelete;
  28. protected $deleteTime = 'delete_time';
  29. public static function list($where)
  30. {
  31. $model = self::alias('a')
  32. ->field('a.*,b.nickname,c.nickname as re_nickname')
  33. ->leftJoin('user b', 'a.uid = b.uid')
  34. ->leftJoin('user c', 'a.order_receiving = c.uid')
  35. ->order('a.id DESC');
  36. if ($where['name'])$model->where('a.uid|b.nickname' , 'like', '%'.$where['name'].'%');
  37. if ($where['order_id'])$model->where('a.order_id' , 'like', '%'.$where['order_id'].'%');
  38. if ($where['rece'])$model->where('a.order_receiving|c.nickname' , 'like', '%'.$where['rece'].'%');
  39. if ($where['type'])$model->where('a.type' , $where['type']);
  40. if ($where['pay_type']) $model->where('a.pay_type', $where['pay_type']);
  41. if ($where['status'] == 0 && $where['status'] != ''){
  42. $model->where('a.status', 0);
  43. }elseif ($where['status'] == 1){
  44. $model->where('a.status', 1);
  45. }elseif ($where['status'] == 2){
  46. $model->where('a.status', 2);
  47. }elseif ($where['status'] == 3){
  48. $model->where('a.status', 3);
  49. }elseif ($where['status'] == 4){
  50. $model->where('a.after_sales', 1);
  51. }elseif ($where['status'] == 5){
  52. $model->where('a.status', -1);
  53. }
  54. if (isset($where['data']) && $where['data'] !== '') {
  55. $model = self::getModelTime($where, $model, 'create_time');
  56. }
  57. $data['count'] = $model->count();
  58. if ($where['page'] && $where['limit']){
  59. $model->page($where['page'], $where['limit']);
  60. }else{
  61. $model->page(20, 1);
  62. }
  63. $list = $model->select()->toArray();
  64. foreach ($list as &$item)
  65. {
  66. if ($item['paid'] == 0){
  67. $item['paid'] = '未支付';
  68. $item['status'] = '未支付';
  69. } else{
  70. if ($item['status'] == 0){
  71. $item['status'] = '待接单';
  72. }elseif ($item['status'] == 1){
  73. $item['status'] = '已接单';
  74. }elseif ($item['status'] == 2){
  75. $item['status'] = '待确认';
  76. }elseif ($item['status'] == 3){
  77. if ($item['after_sales'] == 1){
  78. $item['status'] = '申请售后';
  79. }else{
  80. $item['status'] = '已完成';
  81. }
  82. }elseif ($item['status'] == -1){
  83. if ($item['refund_status'] == 0){
  84. $item['status'] = '待退款';
  85. }elseif ($item['refund_status'] == 1){
  86. $item['status'] = '已退款';
  87. }
  88. }
  89. }
  90. if ($item['paid'] == 1) $item['paid'] = '已支付';
  91. if ($item['pay_type'] == 1) $item['pay_type'] = '余额';
  92. if ($item['pay_type'] == 2) $item['pay_type'] = '微信';
  93. if ($item['pay_type'] == 3) $item['pay_type'] = '支付宝';
  94. $item['cate'] = implode(',',DiagnosisCate::where('id', 'in', $item['cate_id'])->column('name'));
  95. if ($item['type'] == 1){
  96. $item['type'] = '陪诊';
  97. }elseif ($item['type'] == 2){
  98. $item['type'] = '代办';
  99. }
  100. }
  101. $data['data'] = $list;
  102. return $data;
  103. }
  104. /**
  105. * 生成订单
  106. * @param $order
  107. * @param $pay_type
  108. * @param $uid
  109. * @return DiagnosisOrder|\think\Model
  110. */
  111. public static function create_order($order, $pay_type, $uid)
  112. {
  113. $res1 = self::create([
  114. 'cate_id' => $order['cate_id'],
  115. 'order_id' => self::getNewOrderId(),
  116. 'uid' => $uid,
  117. 'ot_price' => $order['ot_price'],
  118. 'pay_price' => $order['pay_price'],
  119. 'commission' => $order['commission'],
  120. 'pay_type' => $pay_type,
  121. 'type' => $order['type'],
  122. ]);
  123. $order['attr']['oid'] = $res1['id'];
  124. $res2 = DiagnosisOrderAttr::create($order['attr']);
  125. return $res1;
  126. }
  127. /**
  128. * 生成订单唯一id
  129. * @param $uid 用户uid
  130. * @return string
  131. */
  132. public static function getNewOrderId()
  133. {
  134. do {
  135. list($msec, $sec) = explode(' ', microtime());
  136. $msectime = number_format((floatval($msec) + floatval($sec)) * 1000, 0, '', '');
  137. $orderId = 'wx' . $msectime . mt_rand(10000, 99999);
  138. } while (self::be(['order_id' => $orderId]));// $orderId = 'wx' . $msectime . mt_rand(10000, 99999);
  139. return $orderId;
  140. }
  141. public static function yuPay($orderId)
  142. {
  143. $order = self::where('order_id', $orderId)->find();
  144. if ($order['pay_price'] == 0){
  145. $res = self::paySuccess($orderId);
  146. }else{
  147. if (!$order)return self::setErrorInfo('订单不存在!');
  148. $user = User::where('uid', $order['uid'])->find();
  149. if ($user['now_money'] < $order['pay_price']) return self::setErrorInfo('余额不足!', true);
  150. $res = User::where('uid', $order['uid'])->dec('now_money', $order['pay_price'])->update();
  151. if ($res){
  152. $res = self::paySuccess($orderId);
  153. }else{
  154. return false;
  155. }
  156. }
  157. return $res;
  158. }
  159. public static function paySuccess($orderId, $paytype = 'weixin', $formId = '')
  160. {
  161. $order = self::where('order_id', $orderId)->find();
  162. if (!$order)return self::setErrorInfo('订单不存在!');
  163. if ($order['paid'] == 1) return self::setErrorInfo('订单已支付!');
  164. self::where('order_id', $orderId)->update(['paid' => 1, 'pay_time' => time()]);
  165. $now_money = User::where('uid', $order['uid'])->value('now_money');
  166. UserBill::expend('创建订单', $order['uid'], 'now_money', 'pay_money', $order['pay_price'], $order['id'], $now_money, '支付' . floatval($order['pay_price']) . '元创建订单');
  167. return true;
  168. }
  169. }