AllwinShopOrder.php 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. <?php
  2. /**
  3. * @copyright Copyright (c) 2017 https://www.sapixx.com All rights reserved.
  4. * @license Licensed (http://www.apache.org/licenses/LICENSE-2.0).
  5. * @author pillar<ltmn@qq.com>
  6. * 订单数据
  7. */
  8. namespace app\allwin\model;
  9. use think\Model;
  10. class AllwinShopOrder extends Model{
  11. protected $pk = 'id';
  12. /**
  13. * @return \think\model\relation\HasOne
  14. * 商品
  15. */
  16. public function shop(){
  17. return $this->hasOne('AllwinShop','id','shop_id');
  18. }
  19. /**
  20. * @return \think\model\relation\HasOne
  21. * 店铺
  22. */
  23. public function store(){
  24. return $this->hasOne('AllwinStore','id','store_id');
  25. }
  26. /**
  27. * @return \think\model\relation\hasMany
  28. * 店铺管理员类别
  29. */
  30. public function storeWorker(){
  31. return $this->hasMany('StoreWorker','store_id','store_id');
  32. }
  33. /**
  34. * @return \think\model\relation\HasOne
  35. * 用户
  36. */
  37. public function user(){
  38. return $this->hasOne('app\common\model\SystemUser','id','user_id');
  39. }
  40. /**
  41. * @param $data
  42. * @param $order_no
  43. * 购买商品生成订单数据
  44. */
  45. public static function insertOrder($param,$order_no){
  46. $order = [
  47. 'store_id' => $param['store_id'],
  48. 'shop_id' => $param['shop_id'],
  49. 'member_miniapp_id' => $param['member_miniapp_id'],
  50. 'phone' => $param['telphone'],
  51. 'message' => $param['message'],
  52. 'share_uid' => $param['share_uid']?:0,
  53. 'user_id' => $param['user_id'],
  54. 'order_no' => $order_no,
  55. 'points' => $param['points'],
  56. 'amount' => $param['amount'],
  57. 'sell_price' => $param['sell_price'],
  58. 'thrifty' => $param['thrifty'],
  59. 'shop_cache' => $param['shop_cache'],
  60. 'status' => 0,
  61. 'is_del' => 0,
  62. 'paid_at' => 0,
  63. 'create_time' => time()
  64. ];
  65. return self::create($order);
  66. }
  67. public static function income(array $order,float $allMoney,float $prorateMoney){
  68. $store = AllwinStore::where(['id' => $order['store_id']])->field('id,member_miniapp_id,charges,manage_uid,mch_id,name')->find();
  69. if(empty($store)){
  70. return;
  71. }
  72. $setting = AllwinConfig::getConfig($store->member_miniapp_id);
  73. if($prorateMoney > 0){
  74. $queen = []; //分账队列参数
  75. //服务商模式 有商户号 并且开启分帐 钱够分的情况下
  76. if($setting->is_psp == 1 && $store->mch_id && $setting->is_wechat_profitsharing){
  77. //分给商户
  78. $queen[] = [
  79. 'member_miniapp_id' => $store->member_miniapp_id,
  80. 'store_id' => $store->id,
  81. 'uid' => 0,
  82. 'mch_id' => $store->mch_id,
  83. 'amount' => $prorateMoney * 100,
  84. 'transaction_id' => $order['paid_no'],
  85. 'out_order_no' => $order['order_no'],
  86. 'is_finish' => 0,
  87. 'types' => 1,
  88. 'msg' => '结算到商户号',
  89. ];
  90. //分给平台
  91. $queen[] = [
  92. 'member_miniapp_id' => $store->member_miniapp_id,
  93. 'store_id' => $store->id,
  94. 'uid' => 0,
  95. 'mch_id' => 0,
  96. 'amount' => ($allMoney - $prorateMoney) * 100,
  97. 'transaction_id' => $order['paid_no'],
  98. 'out_order_no' => $order['order_no'],
  99. 'is_finish' => 0,
  100. 'types' => 2,
  101. 'msg' =>'结算到平台',
  102. ];
  103. MchIdQueen::createQueen($queen);
  104. }else{
  105. Bank::dueMoney($store->member_miniapp_id,$store->manage_uid,$prorateMoney);
  106. }
  107. StoreBill::add(['miniapp_id' => $store->member_miniapp_id,'uid' => $store->manage_uid,'store_id' => $store->id,'pay_uid' => $order['user_id'],'money' => $prorateMoney],'优选下单结算到商户号'); //商家账单
  108. BankBill::add(['miniapp_id' => $store->member_miniapp_id,'uid' => $store->manage_uid,'store_id' => $store->id,'pay_uid' => $order['user_id'],'money' => $prorateMoney],'优选下单结算到商户号'); //个人账单
  109. model('StoreStats')->payment($store, $prorateMoney); //增加统计
  110. }
  111. }
  112. }