Orderimage.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. <?php
  2. namespace app\api\controller;
  3. use app\common\controller\Api;
  4. use think\Db;
  5. /**
  6. * 消息收费图片订单
  7. */
  8. class Orderimage extends Api
  9. {
  10. // 无需登录的接口,*表示全部
  11. protected $noNeedLogin = [];
  12. // 无需鉴权的接口,*表示全部
  13. protected $noNeedRight = ['*'];
  14. public function create()
  15. {
  16. $price = input('price',0);
  17. if($price <= 0){
  18. $this->error('价格不能小于零');
  19. }
  20. $message_id = input('message_id','','trim');
  21. $check = Db::name('order_image')->where('message_id',$message_id)->find();
  22. if($check){
  23. $this->error('消息重复');
  24. }
  25. $data = [
  26. 'user_id' => $this->auth->id,
  27. 'to_user_id' => input('to_user_id',0),
  28. 'message_id' => $message_id,
  29. 'image' => input('image',''),
  30. 'price' => $price,
  31. 'status' => 0,
  32. 'createtime' => time(),
  33. ];
  34. Db::name('order_image')->insertGetId($data);
  35. $this->success(1);
  36. }
  37. public function pay(){
  38. $message_id = input('message_id','','trim');
  39. $order = Db::name('order_image')->where('message_id',$message_id)->where('to_user_id',$this->auth->id)->find();
  40. if(!$order){
  41. $this->error('没有找到付费信息');
  42. }
  43. if($order['status'] != 0){
  44. $this->error('已经付费过了');
  45. }
  46. Db::startTrans();
  47. if($order['price'] > 0){
  48. //付钱
  49. $wallet_rs = model('wallet')->lockChangeAccountRemain($this->auth->id,$order['user_id'],'gold',-$order['price'],111,'解锁付费图片','order_image',$order['id']);
  50. if($wallet_rs['status'] === false){
  51. Db::rollback();
  52. $this->error($wallet_rs['msg']);
  53. }
  54. //收益
  55. $money_to_gold = config('site.money_to_gold') ?: 10;
  56. $money = bcdiv($order['price'],$money_to_gold,2);
  57. //平台手续费
  58. $platrate = config('site.order_image_platrate');
  59. $plat_money = bcdiv(bcmul($money,$platrate,2),100,2);
  60. //减去手续费,得收益金额
  61. $shouyi = bcsub($money,$plat_money,2);
  62. $wallet_rs = model('wallet')->lockChangeAccountRemain($order['user_id'],$this->auth->id,'money',$shouyi,112,'付费图片收益','order_image',$order['id'],2);
  63. if($wallet_rs['status'] === false){
  64. Db::rollback();
  65. $this->error($wallet_rs['msg']);
  66. }
  67. }
  68. $rs = Db::name('order_image')->where('id',$order['id'])->update([
  69. 'status' => 1,
  70. 'paytime' => time(),
  71. 'platrate' => $platrate,
  72. 'platmoney' => $plat_money,
  73. 'shouyi' => $shouyi,
  74. ]);
  75. if($rs === false){
  76. Db::rollback();
  77. $this->error('付款失败');
  78. }
  79. Db::commit();
  80. $this->success();
  81. }
  82. }