Przeglądaj źródła

封装成长值方法

15954078560 2 lat temu
rodzic
commit
8f8393208b

+ 1 - 1
application/admin/model/User.php

@@ -49,7 +49,7 @@ class User extends Model
             $changedata = $row->getChangedData();
             $origin = $row->getOriginData();
             if (isset($changedata['money']) && (function_exists('bccomp') ? bccomp($changedata['money'], $origin['money'], 2) !== 0 : (double)$changedata['money'] !== (double)$origin['money'])) {
-                MoneyLog::create(['user_id' => $row['id'], 'money' => $changedata['money'] - $origin['money'], 'before' => $origin['money'], 'after' => $changedata['money'], 'memo' => '管理员变更金额']);
+                MoneyLog::create(['user_id' => $row['id'], 'type' => 3, 'money' => $changedata['money'] - $origin['money'], 'before' => $origin['money'], 'after' => $changedata['money'], 'memo' => '管理员变更金额']);
             }
 //            if (isset($changedata['score']) && (int)$changedata['score'] !== (int)$origin['score']) {
 //                ScoreLog::create(['user_id' => $row['id'], 'score' => $changedata['score'] - $origin['score'], 'before' => $origin['score'], 'after' => $changedata['score'], 'memo' => '管理员变更积分']);

+ 3 - 3
application/admin/view/user/user/edit.html

@@ -39,12 +39,12 @@
             <ul class="row list-inline faupload-preview" id="p-avatar"></ul>
         </div>
     </div>
-    <div class="form-group">
+    <!--<div class="form-group">
         <label for="c-money" class="control-label col-xs-12 col-sm-2">{:__('Money')}:</label>
         <div class="col-xs-12 col-sm-4">
-            <input id="c-money" data-rule="required" class="form-control" name="row[money]" type="number" value="{$row.money}" min="0">
+            <input id="c-money" data-rule="required" disabled class="form-control" type="number" value="{$row.money}" min="0">
         </div>
-    </div>
+    </div>-->
     <div class="form-group">
         <label for="c-successions" class="control-label col-xs-12 col-sm-2">{:__('Successions')}:</label>
         <div class="col-xs-12 col-sm-4">

+ 2 - 2
application/api/controller/Index.php

@@ -500,7 +500,7 @@ class Index extends Api
         }
         //扣款 支付方式:0=余额,1=微信
         if ($paytype == 0) {
-            $res = create_log(-$total_amount, '支付活动订单', $this->auth->id, 2);
+            $res = create_log(-$total_amount, '支付活动订单', $this->auth->id, 2, $rs);
             if ($res != 1) {
                 Db::rollback();
                 $this->error('余额资金异常,请联系管理员');
@@ -805,7 +805,7 @@ class Index extends Api
             $this->error('开通失败');
         }
         //扣除余额
-        $result = create_log(-$info['price'], '开通会员', $this->auth->id, 4);
+        $result = create_log(-$info['price'], '开通会员', $this->auth->id, 4, $rs);
         if ($result != 1) {
             Db::rollback();
             $this->error('资金异常,请联系管理员');

+ 1 - 1
application/api/controller/User.php

@@ -1545,7 +1545,7 @@ class User extends Api
             $this->error('开通失败');
         }
         //扣除余额
-        $result = create_log(-$info['price'], '开通会员', $this->auth->id, 4);
+        $result = create_log(-$info['price'], '开通会员', $this->auth->id, 4, $rs);
         if ($result != 1) {
             Db::rollback();
             $this->error('资金异常,请联系管理员');

+ 99 - 4
application/common.php

@@ -690,9 +690,10 @@ function httpRequest($url, $method, $postfields = null, $headers = array(), $deb
  * param string $desc 描述
  * param int $user_id 登录用户id
  * $type    类型:1=充值,2=支付,3=后台
+ * $relation_id 充值ID/订单ID/会员ID
  * return int
  */
-function create_log($balance = 0, $desc = '', $user_id = 0, $type = 0) {
+function create_log($balance = 0, $desc = '', $user_id = 0, $type = 0, $relation_id = 0) {
     $map['id'] = $user_id;
     $user = Db::name('user');
     $user_info = $user->where($map)->field('id, money')->find();
@@ -751,17 +752,111 @@ function create_log($balance = 0, $desc = '', $user_id = 0, $type = 0) {
     $log['before'] = $user_info['money'];
     $log['after'] = $user_info['money'] + $balance;
     $log['memo'] = $desc;
+    $log['relation_id'] = $relation_id;
     $log['createtime'] = time();
 
     $data['money'] = $log['after'];
-    if ($data['after'] < 0) {
+    if ($data['money'] < 0) {
         return -12;
     }
 
     if ($balance != 0) {
-        $change_result = $user->where($map)->save($data); // 更改用户余额
+        $change_result = $user->where($map)->where(['money' => $user_info['money']])->setField($data); // 更改用户余额
         if ($change_result !== false) {
-            $rows = $user_account->add($log);
+            $rows = $user_account->insertGetId($log);
+            if ($rows > 0) {
+                return 1;
+            } else {
+                return -10;
+            }
+        } else {
+            return -11;
+        }
+    }
+
+    return 1;
+}
+
+/**
+ * 成长值记录
+ * param int $balance 变动的数量,减少时传:-$balance,增加时直接传:$balance
+ * param string $desc 描述
+ * param int $user_id 登录用户id
+ * $type    类型:1=登录,2=充值,3=微信支付活动,4=活动取消扣除
+ * $relation_id 充值记录ID/订单ID
+ * return int
+ */
+function create_growth_log($balance = 0, $desc = '', $user_id = 0, $type = 0, $relation_id = 0) {
+    $map['id'] = $user_id;
+    $user = Db::name('user');
+    $user_info = $user->where($map)->field('id, growthvalue')->find();
+
+    if ($user_info['growthvalue'] < 0) {
+        return -3;
+    }
+
+    // 查询log日志
+    $user_account = Db::name('user_growth_log');
+    $data = array();
+    $log = array();
+
+    $silver_logs = $user_account->where(['user_id' => $user_id])->order('id desc')->limit(10)->select();
+
+    $all_count = count($silver_logs); //日志记录数量
+
+    if ($all_count < 1) {
+        if ($user_info['growthvalue'] > 0) {
+            return -7;
+        }
+    } else {
+        $all_change_silver = array();
+        if ($all_count == 1) {  // 只有一条日志  变动金额=余额
+            if ($silver_logs[0]['after'] != $silver_logs[0]['growthvalue']) {
+//                add_error_user($silver_logs[0]['user_id'], 0);
+                return -8;
+            }
+        }
+        $log_count = $all_count - 1;
+        $last_user_silver = '';
+        foreach ($silver_logs as $key => $value) {
+            if ($key == $log_count) {
+                $last_user_silver = $value['after'];
+                break;
+            }
+            $all_change_silver[] = $value['growthvalue'];
+        }
+
+        //变动金额+最初余额=最新余额
+//        $new_silver = $last_user_silver + array_sum($all_change_silver); // 最新余额+变动总金额
+//        $silver_difference = abs($new_silver - $silver_logs[0]['user_diamond']);
+
+        $new_silver = $last_user_silver + array_sum($all_change_silver); // 最新余额+变动总金额
+        $silver_difference = abs(number_format($new_silver, 2, '.', '') - number_format($silver_logs[0]['after'], 2, '.', ''));
+//        p($silver_difference);die;
+        if ($silver_difference > 1) {
+//            add_error_user($silver_logs[0]['user_id'], 0);
+            return -9;
+        }
+    }
+
+    $log['user_id'] = $user_id;
+    $log['type'] = $type;
+    $log['growthvalue'] = $balance;
+    $log['before'] = $user_info['growthvalue'];
+    $log['after'] = $user_info['growthvalue'] + $balance;
+    $log['memo'] = $desc;
+    $log['relation_id'] = $relation_id;
+    $log['createtime'] = time();
+
+    $data['growthvalue'] = $log['after'];
+    if ($data['growthvalue'] < 0) {
+        return -12;
+    }
+
+    if ($balance != 0) {
+        $change_result = $user->where($map)->where(['growthvalue' => $user_info['growthvalue']])->setField($data); // 更改用户余额
+        if ($change_result !== false) {
+            $rows = $user_account->insertGetId($log);
             if ($rows > 0) {
                 return 1;
             } else {

+ 10 - 2
application/common/controller/Api.php

@@ -357,7 +357,15 @@ class Api
             if ($logingrowth) {
                 $growth_log = Db::name('user_growth_log')->where(['user_id' => $user_info['id'], 'type' => 1])->order('id', 'desc')->find();
                 if (!$growth_log || ($growth_log['after'] == $user_info['growthvalue'] && $growth_log['createtime'] < $time)) {
-                    $growth_data['user_id'] = $user_info['id'];
+                    Db::startTrans();
+                    $rs = create_growth_log($logingrowth, '登录', $id, 1);
+                    if ($rs != 1) {
+                        Db::rollback();
+                    } else {
+                        Db::commit();
+                    }
+
+                    /*$growth_data['user_id'] = $user_info['id'];
                     $growth_data['growth'] = $logingrowth;
                     $growth_data['before'] = $user_info['growthvalue'];
                     $growth_data['after'] = $user_info['growthvalue'] + $logingrowth;
@@ -371,7 +379,7 @@ class Api
                         Db::commit();
                     } else {
                         Db::rollback();
-                    }
+                    }*/
                 }
             }
         }