startTrans(); //开始保存记录 $data['uid'] = $uid; $data['coin'] = $coin; $data['source_uid'] = $source_uid; //开始增加币 $check = $Coin->where('uid', $uid)->field('coin')->find(); if ($check) { $data['now_coin'] = $coin + $check['coin']; $data['last_coin'] = $check['coin']; $Coin->where('uid', $uid)->update(['coin' => $data['now_coin']]); } else { //新建 $data['now_coin'] = $coin; $data2['uid'] = $uid; $data2['coin'] = $coin; $data2['create_time'] = date('Y-m-d H:i:s'); $data2['update_time'] = date('Y-m-d H:i:s'); $Coin->save($data2); } $CoinLog->save($data); $Coin->commit(); return true; } catch (\Exception $e) { $Coin->rollback(); return false; } catch (\Throwable $e) { $Coin->rollback(); return false; } } //微信商品扣款 public function operate($uid = 0, $coin = 0, $type = 0, $oid = 0, $cart_id = 0) { if (empty($uid) || empty($coin) || $type === null || $type === '') { return false; } try { $this->startTrans(); if ($type == 2) {//商品抵扣 //开始保存记录 $data['uid'] = $uid; $data['coin'] = $coin; $data['oid'] = $oid; $data['cart_id'] = $cart_id; //开始减少币 $Coin = new Coin(); $check = $Coin->where('uid', $uid)->field('coin')->find(); if ($check) { $data['now_coin'] = $check['coin'] - $coin; $data['last_coin'] = $check['coin']; $data['type'] = $type; $Coin->where('uid', $uid)->update(['coin' => $data['now_coin']]); $this->save($data); } } elseif ($type == 0) { //开始保存记录 $data['uid'] = $uid; $data['coin'] = $coin; //开始增加币 $Coin = new Coin(); $check = $Coin->where('uid', $uid)->field('coin')->find(); if ($check) { $data['now_coin'] = $coin + $check['coin']; $data['last_coin'] = $check['coin']; $Coin->where('uid', $uid)->update(['coin' => $data['now_coin']]); } else { //新建 $data2['uid'] = $coin; $data2['coin'] = $coin; $Coin->save($data2); } $this->save($data); } $this->commit(); return true; } catch (\Exception $e) { $this->rollback(); return false; } catch (\Throwable $e) { $this->rollback(); return false; } } public function getWechatUserOneData() { return $this->hasOne(WechatUser::class, 'uid', 'from_uid')->bind(['headimgurl' => 'headimgurl', 'nickname' => 'nickname']); } public function getWechatUserOneData2() { return $this->hasOne(WechatUser::class, 'uid', 'uid')->bind(['headimgurl2' => 'headimgurl', 'nickname2' => 'nickname']); } public function getUserOneData() { return $this->hasOne(User::class, 'uid', 'source_uid')->bind(['avatar2' => 'avatar', 'nickname2' => 'nickname']); } }