Parcourir la source

wes 多宝福袋

wesmiler il y a 3 ans
Parent
commit
816d27659e

+ 1 - 0
app/admin/controller/mall/Goods.php

@@ -70,6 +70,7 @@ class Goods extends AdminController
     {
         list($data, $hot_keywords, $shop_goods_type, $shop_supplier, $specAttrId) = ShopGoodsLogic::getGoodsBase($id);
 
+//        var_dump($data);
         $this->assign('shop_goods_type', $shop_goods_type);
         $this->assign('box_type', system_box_typesetting());
         $this->assign('hot_keywords', $hot_keywords);

+ 34 - 1
app/admin/controller/user/User.php

@@ -2,6 +2,7 @@
 
 namespace app\admin\controller\user;
 
+use app\admin\logic\GreenScoreLogLogic;
 use app\admin\logic\MoneyLogLogic;
 use app\admin\logic\ScoreLogLogic;
 use app\admin\logic\UserLogic;
@@ -10,6 +11,7 @@ use app\admin\traits\Curd;
 use app\common\controller\AdminController;
 use app\common\model\UserMoneyModel;
 use app\Request;
+use app\validate\admin\user\user\ModifyGreenScore;
 use app\validate\admin\user\user\ModifyMoney;
 use app\validate\admin\user\user\ModifyScore;
 use app\validate\admin\user\user\ModifyPid;
@@ -403,7 +405,6 @@ class User extends AdminController
         return Excel::exportData($list, $header, $fileName, 'xlsx');
     }
 
-
     /*
     * 修改积分
     * @return mixed
@@ -468,6 +469,38 @@ class User extends AdminController
         return $this->fetch();
     }
 
+    /*
+    * 修改余额
+    * @return mixed
+    */
+    public function modifygreenscore()
+    {
+        if ($this->request->isPost()) {
+            $post = $this->request->post();
+
+            try {
+
+                validate(ModifyGreenScore::class)->check($post);
+            } catch (ValidateException $e) {
+                $this->error($e->getMessage());
+            }
+
+            $userLogic = new UserLogic();
+            $result    = $userLogic->ModifyGreenScore($post);
+            if ($result !== true) {
+                $this->error($result);
+            }
+
+            $this->success('成功');
+        }
+        $user              = UserDao::getUserOrEmptyById($this->request['id']);
+        $user['type_map']  = GreenScoreLogLogic::getTypeMap();
+        $user['state_map'] = GreenScoreLogLogic::getStateMap();
+        $this->assign('info', $user);
+
+        return $this->fetch();
+    }
+
     /**
      * 注销用户
      * @param $id

+ 78 - 0
app/admin/logic/GreenScoreLogLogic.php

@@ -0,0 +1,78 @@
+<?php
+
+
+namespace app\admin\logic;
+
+use app\common\model\GreenScoreLogModel;
+use app\common\model\ScoreLogModel;
+
+class GreenScoreLogLogic
+{
+
+    // 预约福袋  2.预约福袋空盒退回  3.买商品送积分   4.提现多次返回  6.兑换商品,  12-平台充补,13-平台扣除
+    private static $typeMap = [
+        ['id' => 12, 'name' => '平台充值'],
+        ['id' => 13, 'name' => '平台扣除'],
+        ['id' => 0, 'name' => '其他'],
+    ];
+
+    private static $stateMap = [
+        ['id' => 1, 'name' => '增加'],
+        ['id' => 2, 'name' => '减少']
+    ];
+
+    /**
+     * @return array[]
+     */
+    public static function getStateMap(): array
+    {
+        return self::$stateMap;
+    }
+
+    /**
+     * @return array[]
+     */
+    public static function getTypeMap(): array
+    {
+        return self::$typeMap;
+    }
+
+    /**
+     * 绿色积分记录
+     * @param  $page
+     * @param  $limit
+     * @param  $where
+     * @param array $sort
+     * @return array
+     * @throws \think\db\exception\DataNotFoundException
+     * @throws \think\db\exception\DbException
+     * @throws \think\db\exception\ModelNotFoundException
+     */
+    public static function scoreLog($page, $limit, $where, $sort)
+    {
+        $model     = new GreenScoreLogModel();
+        $count     = $model
+            ->where($where)
+            ->count();
+        $type_conf = config('type.green_score');
+        $list      = $model
+            ->where($where)
+            ->withAttr('type', function ($value, $data) use ($type_conf) {
+                if (array_key_exists($value, $type_conf)) {
+                    return $type_conf[$value];
+                }
+                return '';
+            })
+            ->withAttr('score', function ($value, $data) {
+                if ($data['state'] == 2)
+                    $value = '-' . $value;
+                return $value;
+            })
+            ->page($page, $limit)
+            ->order($sort)
+            ->select();
+
+        return [$count, $list];
+    }
+
+}

+ 7 - 7
app/admin/logic/ScoreLogLogic.php

@@ -17,14 +17,14 @@ class ScoreLogLogic
 
     // 预约福袋  2.预约福袋空盒退回  3.买商品送积分   4.提现多次返回  6.兑换商品,  12-平台充补,13-平台扣除
     private static $typeMap = [
+//        ['id' => 1, 'name' => '预约福袋'],
+//        ['id' => 2, 'name' => '预约福袋空盒退回'],
+//        ['id' => 3, 'name' => '买商品送积分'],
+//        ['id' => 4, 'name' => '提现多次返回'],
+//        ['id' => 6, 'name' => '兑换商品'],
+        ['id' => 12, 'name' => '平台充值'],
+        ['id' => 13, 'name' => '平台扣除'],
         ['id' => 0, 'name' => '其他'],
-        ['id' => 1, 'name' => '预约福袋'],
-        ['id' => 2, 'name' => '预约福袋空盒退回'],
-        ['id' => 3, 'name' => '买商品送积分'],
-        ['id' => 4, 'name' => '提现多次返回'],
-        ['id' => 6, 'name' => '兑换商品'],
-        ['id' => 12, 'name' => '平台充补'],
-        ['id' => 13, 'name' => '平台扣除']
     ];
 
     private static $stateMap = [

+ 3 - 3
app/admin/logic/ShopGoodsLogic.php

@@ -76,9 +76,9 @@ class ShopGoodsLogic
         $model = new ShopGoods();
         $data  = $model->where(['goods_id' => $id])->findOrEmpty()->toArray();
 
-        if ($data['goods_img_banner']) {
-            $data['goods_img_banner'] = implode('|', json_decode($data['goods_img_banner'], true));
-        }
+//        if ($data['goods_img_banner']) {
+//            $data['goods_img_banner'] = implode('|', json_decode($data['goods_img_banner'], true));
+//        }
         $data['goods_img'] = $data['goods_img']? getPreviewUrl($data['goods_img']):'';
         $data['box_pic'] = $data['box_pic']? getPreviewUrl($data['box_pic']):'';
         $banners = $data['goods_img_banner']? json_decode($data['goods_img_banner'], true): [];

+ 65 - 8
app/admin/logic/UserLogic.php

@@ -7,6 +7,7 @@ namespace app\admin\logic;
 use app\admin\model\dao\MoneyLog;
 use app\admin\model\dao\ScoreLog;
 use app\admin\model\dao\User;
+use app\common\model\GreenScoreLogModel;
 use app\common\model\UserModel;
 use app\common\model\UserMoneyModel;
 use think\facade\Cache;
@@ -152,7 +153,9 @@ class UserLogic
             // 积分账户合计
             $item['score_total'] = $teamIds['score'];
             // 余额账户合计
-            $item['money_total'] = $teamIds['money'];
+//            $item['money_total'] = $teamIds['money'];
+            // 绿色积分合计
+            $item['green_score_total'] = $teamIds['green_score'];
         }
 
         $data = [
@@ -177,38 +180,41 @@ class UserLogic
             // 自身
             $user = Db::table(User::$table)
                 ->where('id', $uid)
-                ->field(['id', 'score', 'money'])
+                ->field(['id', 'score', 'money','green_score'])
                 ->find();
 
             $totalScore = $user['score'];
             $totalMoney = $user['money'];
+            $totalGreenScore = $user['green_score'];
 
 
             // 一级子用户
             Db::table(User::$table)
                 ->where('pid', $uid)
-                ->field(['id', 'score', 'money'])
-                ->chunk(100, function ($users) use (&$totalScore, &$totalMoney) {
+                ->field(['id', 'score', 'money','green_score'])
+                ->chunk(100, function ($users) use (&$totalScore, &$totalMoney, &$totalGreenScore) {
                     foreach ($users as $user) {
                         $uids[]     = $user['id'];
                         $totalScore += $user['score'];
                         $totalMoney += $user['money'];
+                        $totalGreenScore += $user['green_score'];
                     }
 
                     // 二级子用户
                     Db::table(User::$table)
                         ->whereIn('pid', $uids)
-                        ->field(['id', 'score', 'money'])
-                        ->chunk(100, function ($users) use (&$totalScore, &$totalMoney) {
+                        ->field(['id', 'score', 'money','green_score'])
+                        ->chunk(100, function ($users) use (&$totalScore, &$totalMoney, &$totalGreenScore) {
                             foreach ($users as $user) {
                                 $totalScore += $user['score'];
                                 $totalMoney += $user['money'];
+                                $totalGreenScore += $user['green_score'];
                             }
                         });
 
-                }, ['score', 'money']);
+                }, ['score', 'money','green_score']);
 
-            Cache::set($cacheKey, ['score' => $totalScore, 'money' => sprintf("%.2f", $totalMoney)], 5 * 60);
+            Cache::set($cacheKey, ['score' => $totalScore,'green_score'=>$totalGreenScore, 'money' => sprintf("%.2f", $totalMoney)], 5 * 60);
         }
 
         return Cache::get($cacheKey);
@@ -414,6 +420,57 @@ class UserLogic
     }
 
     /**
+     * 修改绿色积分
+     * @param  $post
+     */
+    public function ModifyGreenScore($post)
+    {
+
+        $user = User::getUserById($post['uid']);
+        if (empty($user)) {
+            return "用户不存在";
+        }
+        Db::startTrans();
+        try {
+
+
+            if ($post['state'] == 1) {
+                $afterScore = $user['green_score'] + $post['score'];
+            } else {
+                $afterScore = $user['green_score'] - $post['score'];
+                if ($afterScore < 0) {
+                    return "账号绿色积分不足";
+                }
+            }
+
+            $moneyLog = [
+                'uid'          => $post['uid'],
+                'type'         => $post['type'] ?? 0,
+                'score'        => $post['score'],
+                'create_at'    => date('Y-m-d H:i:s'),
+                'scene'        => $post['scene'] ?? 0,
+                'from_id'      => $post['from_id'] ?? '0',
+                'state'        => $post['state'] ?? '0',
+                'before_score' => $user['green_score'],
+                'after_score'  => $afterScore,
+                'uid2'         => $post['uid2'] ?? 0,
+                'remark'       => $post['remark'] ?? '',
+            ];
+            //
+            GreenScoreLogModel::insertgetId($moneyLog);
+
+            User::UpdateUserGreenScore($user['id'], $afterScore);
+
+            Db::commit();
+        } catch (\Exception $exception) {
+            Db::rollback();
+            return "失败:" . $exception->getMessage();
+        }
+
+        return true;
+    }
+
+    /**
      * 删除用户
      * @param $id
      */

+ 17 - 0
app/admin/model/dao/User.php

@@ -72,6 +72,23 @@ class User extends BaseDao
             ]);
     }
 
+    /**
+     * 更新用户绿色积分 by wes
+     * @param $id
+     * @param $score
+     * @return int
+     * @throws \think\db\exception\DbException
+     */
+    public static function UpdateUserGreenScore($id, $score)
+    {
+        return Db::table(self::$table)
+            ->where(['id' => $id])
+            ->update([
+                'green_score'       => $score,
+                'update_time' => sr_getcurtime(time())
+            ]);
+    }
+
     public static function updateStatus($id, int $status)
     {
         return Db::table(self::$table)

+ 116 - 0
app/admin/view/user/user/modifygreenscore.html

@@ -0,0 +1,116 @@
+<style>
+    .layui-iconpicker-body.layui-iconpicker-body-page .hide {
+        display: none;
+    }
+</style>
+<link rel="stylesheet" href="__STATIC__/plugs/lay-module/autocomplete/autocomplete.css?v={$version}" media="all">
+<div class="layuimini-container">
+    <form id="app-form" class="layui-form layuimini-form">
+
+
+        <div class="layui-form-item  layui-row layui-col-xs12">
+            <div class="layui-input-block">
+                当前账号绿色积分:{$info.green_score}
+            </div>
+        </div>
+
+        <div class="layui-form-item  layui-row layui-col-xs12">
+            <label class="layui-form-label required">增加/减少</label>
+            <div class="layui-input-block">
+                <select name="state" id="state" lay-verify="required">
+                    <option value="">请选择</option>
+                    {foreach $info.state_map as $v}
+                    <option value="{$v.id}">{$v.name}</option>
+                    {/foreach}
+                </select>
+            </div>
+        </div>
+
+        <div class="layui-form-item  layui-row layui-col-xs12">
+            <label class="layui-form-label required">所属变更类型</label>
+            <div class="layui-input-block">
+                <select name="type" id="type" lay-verify="required">
+                    <option value="">请选择</option>
+                    {foreach $info.type_map as $v}
+                    <option value="{$v.id}">{$v.name}</option>
+                    {/foreach}
+                </select>
+            </div>
+        </div>
+
+        <div class="layui-form-item  layui-row layui-col-xs12">
+            <label class="layui-form-label required">变更数量</label>
+            <div class="layui-input-block">
+                <input type="text" name="score" id="score" class="layui-input" lay-verify="required"
+                       lay-reqtext="请输入变更数量"
+                       placeholder="请输入变更数量" value="">
+            </div>
+        </div>
+
+        <div class="layui-form-item  layui-row layui-col-xs12">
+            <label class="layui-form-label required">备注</label>
+            <div class="layui-input-block">
+                <textarea name="remark" required lay-verify="required" placeholder="请输入备注" class="layui-textarea"></textarea>
+            </div>
+        </div>
+
+        <input type="hidden" name="uid" value="{$Request.param.id}">
+        <div class="hr-line"></div>
+        <div class="layui-form-item text-center">
+            <button type="button" data-id="{$Request.param.id}"
+                    class="layui-btn layui-btn-normal layui-btn-sm" lay-filter="modifygreenscore" lay-submit
+                    data-refresh="true">确认
+            </button>
+            <button type="reset" class="layui-btn layui-btn-primary layui-btn-sm">重置</button>
+        </div>
+    </form>
+</div>
+
+<script>
+    layui.use('form', function () {
+        var form = layui.form;
+        form.render();
+    })
+</script>
+
+
+<script>
+    layui.use(['jquery', 'layer'], function () {
+        var $ = layui.$ //重点处
+            , layer = layui.layer
+            , form = layui.form;
+
+        form.on('submit(modifygreenscore)', function(data){
+            layer.load(1);
+            layer.confirm('确定要修改该用户绿色积分吗?', {
+                btn: ['确定', '取消'] //按钮
+            }, function () {
+                layer.load(1);
+                $.post("{:url('user.user/modifygreenscore')}", data.field, function (result) {
+                    console.log(result)
+                    if (result.code == 1) {
+                        layer.closeAll();
+                        layer.alert(result.msg, {
+                            yes: function () {
+                                window.location.reload();
+                            }, cancel: function () {
+                                window.location.reload();
+                            }
+                        });
+                    } else {
+                        layer.alert(result.msg, function(index){
+                            window.location.reload();
+                            layer.close(index);
+                        });
+
+                    }
+                });
+            }, function(index, layero){
+                window.location.reload();
+                layer.close(index);
+            });
+            //return false; //阻止表单跳转。如果需要表单跳转,去掉这段即可。
+        });
+    });
+
+</script>

+ 1 - 1
app/admin/view/user/user/modifyscore.html

@@ -75,7 +75,7 @@
 
         form.on('submit(modifyscore)', function(data){
             layer.load(1);
-            layer.confirm('确定要修改积分吗?', {
+            layer.confirm('确定要修改该用户积分吗?', {
                 btn: ['确定', '取消'] //按钮
             }, function () {
                 layer.load(1);

+ 1 - 1
app/api/command/AutoSubmeter.php

@@ -20,7 +20,7 @@ class AutoSubmeter extends Command
     protected $cacheTime = 86400; // 一天
     protected $tables = [
         // time 备份分表周期,save_time 数据保存时间天,time_field 时间字段
-        'money_log' => ['time' => 2, 'save_time' => 14, 'time_field' => 'create_at'],
+//        'money_log' => ['time' => 2, 'save_time' => 14, 'time_field' => 'create_at'],
         'box_record' => ['time' => 2, 'save_time' => 10, 'time_field' => 'create_time'],
         'box_mid_handle' => ['time' => 2, 'save_time' => 10, 'time_field' => 'create_time'],
         'score_log' => ['time' => 2, 'save_time' => 10, 'time_field' => 'create_at'],

+ 3 - 0
app/api/command/SettleTeamAward.php

@@ -38,6 +38,9 @@ class SettleTeamAward extends Command
      */
     protected function execute(Input $input, Output $output)
     {
+        echo json_encode(['code'=>'error','msg'=>'功能暂未开放~','date'=>date('Y-m-d H:i:s')],256)."\n";
+        return false;
+
         $cacheKey = "caches:settleTeamAward:".date('Ymd').":";
         if(RedisCache::get($cacheKey.'lock')){
             echo json_encode(['code'=>'error','msg'=>'请不要频繁提交,正在结算中稍后再试~','date'=>date('Y-m-d H:i:s')],256)."\n";

+ 3 - 0
app/api/command/SettleUserTodayAward.php

@@ -33,6 +33,9 @@ class SettleUserTodayAward extends Command
      */
     protected function execute(Input $input, Output $output)
     {
+        echo json_encode(['code'=>'error','msg'=>'功能暂未开放~','date'=>date('Y-m-d H:i:s')],256)."\n";
+        return false;
+
         $cacheKey = "caches:settleTodayAward:".date('Ymd');
         if(RedisCache::get($cacheKey.'_lock')){
             echo json_encode(['code'=>500,'msg'=>'今日奖金已经结算过,请不要重复运行','date'=>date('Y-m-d H:i:s')], 256)."\n";

+ 7 - 5
app/api/controller/v1/Pay.php

@@ -14,13 +14,8 @@ use app\common\service\PaymentService;
 use app\common\service\SystemConfigService;
 use app\common\service\UserBankSignService;
 use app\common\service\YsBankService;
-use app\model\UserDataModel;
-use app\model\VipOrderModel;
 use app\Request;
 
-use app\services\balancePayServices;
-use app\services\OfflinePayServices;
-use jobs\VipOrderJob;
 use think\Exception;
 use think\facade\Db;
 use utils\RedisCache;
@@ -167,6 +162,13 @@ class Pay
                         $result = api_succ_return(['msg' => '余额支付调用成功', 'data' => ['type'=> 'account']]);
                     }
                     break;
+                case 5:
+                    // 积分支付
+                    getActionSecury($request->uid, $request->post('security_pass', ''));
+                    if(PaymentService::make()->AccountPayBack($request->uid, $request->post('order_id', ''), 5)){
+                        $result = api_succ_return(['msg' => '积分支付调用成功', 'data' => ['type'=> 'account']]);
+                    }
+                    break;
                 case 6:
                     // 绿色积分支付
                     getActionSecury($request->uid, $request->post('security_pass', ''));

+ 6 - 62
app/api/controller/v1/Test.php

@@ -1,49 +1,10 @@
 <?php
 
 namespace app\api\controller\v1;
-
-use AlibabaCloud\SDK\OSS\OSS\DeleteMultipleObjectsRequest\body\delete;
-use app\admin\controller\coupon\Couponarea;
-use app\admin\service\ConfigService;
-use app\api\services\ThirdPayServices;
-use app\api\services\UserAuthServices;
-use app\api\services\UserServices;
-use app\common\model\BoxMidHandleModel;
-use app\common\model\BoxHandleModel;
-use app\common\model\CouponAreaModel;
-use app\common\model\CouponPlanLogModel;
-use app\common\model\CouponPlanModel;
-use app\common\model\GreenScoreLogModel;
-use app\common\model\MachineListModel;
-use app\common\model\MachineModel;
-use app\common\model\ShopGoodsModel;
-use app\common\model\User;
-use app\common\model\UserDataModel;
-use app\common\model\UserFansModel;
+use app\common\model\ScoreLogModel;
 use app\common\model\UserModel;
-use app\common\model\YgOrderModel;
-use app\common\service\SystemConfigService;
-use Grpc\Timeval;
-use jobs\CouponPlanJob;
-use jobs\JpOrderJob;
-use jobs\ShopOrderJob;
-
-use jobs\SystemMiddleOpenBox;
-use PhpOffice\PhpSpreadsheet\IOFactory;
-use PhpOffice\PhpSpreadsheet\Reader\Xls\MD5;
-use Rsa\RsaClient;
-use services\CacheServices;
-use think\cache\driver\Redis;
-use think\db\Where;
-use think\Exception;
-use think\facade\Cache;
 use think\facade\Db;
-use think\facade\Filesystem;
 use think\Request;
-use utils\Queue;
-
-use jianyan\excel\Excel;
-use utils\RedisCache;
 
 class Test
 {
@@ -59,28 +20,11 @@ class Test
             $profit = isset($item['profit_money'])? $item['profit_money'] : 0;
             $greenScore = UserModel::where('id', $id)->value('green_score');
             $newGreenScore = $greenScore;
-            if($score>0){
-                echo "用户{$id} {$score}  积分转入<br>";
-                $logs[] = [
-                    'uid'=> $id,
-                    'type'=> 1,
-                    'score'=> $score,
-                    'create_at'=> date('Y-m-d H:i:s'),
-                    'from_id'=> 0,
-                    'uid2'=> 0,
-                    'state'=> 1,
-                    'before_score'=> $greenScore,
-                    'after_score'=> $newGreenScore+$score,
-                    'remark'=> '积分转入'
-                ];
-                $newGreenScore += $score;
-            }
-
             if($money>0){
                 echo "用户{$id} {$money}  余额转入<br>";
                 $logs[] = [
                     'uid'=> $id,
-                    'type'=> 3,
+                    'type'=> 12,
                     'score'=> $money,
                     'create_at'=> date('Y-m-d H:i:s'),
                     'from_id'=> 0,
@@ -97,7 +41,7 @@ class Test
                 echo "用户{$id} {$profit}  利润转入<br>";
                 $logs[] = [
                     'uid'=> $id,
-                    'type'=> 2,
+                    'type'=> 12,
                     'score'=> $profit,
                     'create_at'=> date('Y-m-d H:i:s'),
                     'from_id'=> 0,
@@ -111,19 +55,19 @@ class Test
                 $newGreenScore +=$profit;
             }
 
-            if($newGreenScore>0 && !UserModel::where('id',$id)->inc('green_score',$newGreenScore)->update()){
+            if($newGreenScore>0 && !UserModel::where('id',$id)->inc('score',$newGreenScore)->update()){
                 Db::rollback();
                 return 'fail';
             }
         }
 
         if($logs){
-            if(!GreenScoreLogModel::insertAll($logs)){
+            if(!ScoreLogModel::insertAll($logs)){
                 Db::rollback();
                 return 'fail';
             }
 
-            if(!UserModel::where('id','>',0)->update(['score'=>0,'money'=>0,'profit_money'=>0,'update_time'=>date('Y-m-d H:i:s')])){
+            if(!UserModel::where('id','>',0)->update(['money'=>0,'profit_money'=>0,'update_time'=>date('Y-m-d H:i:s')])){
                 Db::rollback();
                 return 'fail';
             }

+ 2 - 1
app/api/controller/v1/User.php

@@ -405,7 +405,8 @@ class User
             'zt_total'=> UserModel::where('pid', $uid)->count('id'),
             'zt_teamtotal'=> UserModel::whereFindInSet('path', $uid)->count('id'),
             'zt_teamvalid'=> UserModel::whereFindInSet('path', $uid)->where('has_fd', 1)->count('id'),
-            'display_str' => $has_display?('团队总充值:'.$request->user_info['total_team_income'].',团队总提现:'.$request->user_info['total_team_withdraw']):''
+            'display_str' => ''
+//            'display_str' => $has_display?('团队总充值:'.$request->user_info['total_team_income'].',团队总提现:'.$request->user_info['total_team_withdraw']):''
         ];
         return api_succ_return(['msg'=>'成功', 'data'=>$data]);
     }

+ 29 - 7
app/api/view/h5/down_app/downapp.html

@@ -10,6 +10,30 @@
 {block name="header"}{/block}
 {block name="style"}
 <style>
+    body {
+        background: url("/h5/static/img/bg_denglu_dise@2x.10ae4faf.png") no-repeat;
+        background-size: cover;
+    }
+    .down-app  {
+        text-align: center;
+    }
+
+    .down-app a {
+        border-radius: 4px;
+        padding: 10px;
+        margin: 0 auto;
+        display: inline-block;
+        background-color: #fff;
+        width: auto;
+        color: #f11751;
+        font-size: 16px;
+        font-weight: bold;
+        padding: 0 15px;
+    }
+
+    .content,.guide {
+        color: #fff;
+    }
 </style>
 {/block}
 {block name="content"}
@@ -17,11 +41,12 @@
     <div class="register-box" >
         <p class="title" style="text-align: center;font-size: 30px;bold;margin-top: 40px;font-weight: bold">{$info.name}</p>
 
-
     </div>
 
-    <p class="down-app ect-sub-btn" style="margin-top: 80px;color: rgb(240,200,106);"><a style="background-color: rgb(233,26,33);">立即下载(苹果/安卓)</a></p>
-    <p class="content" style="margin-top: 15px;text-align: center;margin-left: 10px;margin-right: 10px;">苹果手机点击下载app,安装完成请到 设置->通用->VPN与设备管理->选择企业级APP->点击信任</p>
+    <p class="down-app ect-sub-btn" style="margin-top: 80px;color: rgb(240,200,106);">
+        <a >立即下载(苹果/安卓)</a>
+    </p>
+    <p class="content" style="margin-top: 15px;text-align: center;margin: 25px 30px; line-height: 24px;">苹果手机点击下载app,安装完成请到 设置->通用->VPN与设备管理->选择企业级APP->点击信任</p>
     <div class="guide" onclick="closeOpenDiv(['.ect-mask','.guide'])"
          style="display: none; position: fixed; top: 0; right: 0; z-index: 99999;bottom: 0; text-align: right;">
         <img src="__H5IMAGE__/user/ad.jpg" style="width: 80%; margin-top: 15%; margin-right: 10%;">
@@ -30,7 +55,7 @@
 <div class="ect-mask" style="z-index: 99;opacity: .9;"></div>
 <div class="confirm-box">
     <p class="title"></p>
-    <p class="content">你可以下载或者打开APP查看详情</p>
+    <p class="content">您可以下载或点击APP安装详情进行了解升级内容</p>
     <ul>
         <li class="cancel-btn"><a onclick="closeOpenDiv(['.confirm-box','.ect-mask'])">好的</a></li>
 
@@ -48,9 +73,6 @@
         var is_fair = "{$is_fair}";
         var down_ios_url = "{$iurl}";
         var down_android_url = "{$aurl}";
-        // if (!isAndroid) {
-        //     $('.open-app').hide();
-        // }
         $('.back').height(height);
         $('.back').on('click', '.downApp', function () {
 

+ 1 - 1
app/common/model/ShopGoods.php

@@ -68,7 +68,7 @@ class ShopGoods extends TimeModel
         $goods['spec_name'] = $goods['spec_name'];
         if ($goods['goods_type'] == 1){
             if ($goods['rebate_score'] <=0){
-                sr_throw('返利积分积分不能为0');
+                // sr_throw('返利积分积分不能为0');
             }
         }
 

+ 343 - 208
app/common/service/BoxHandleService.php

@@ -4,6 +4,7 @@ namespace app\common\service;
 
 use app\common\model\BoxHandleAllModel;
 use app\common\model\BoxHandleModel;
+use app\common\model\GreenScoreLogModel;
 use app\common\model\MoneyLogModel;
 use app\common\model\RecyclecardLogModel;
 use app\common\model\ShopGoods;
@@ -37,7 +38,7 @@ class BoxHandleService
      */
     public static function make()
     {
-        if(!self::$instance){
+        if (!self::$instance) {
             self::$instance = new static();
         }
 
@@ -56,10 +57,10 @@ class BoxHandleService
      * @throws \think\db\exception\DbException
      * @throws \think\db\exception\ModelNotFoundException
      */
-    public function getBoxListByUser($uid, $params=[], $pageSize=10, $field='')
+    public function getBoxListByUser($uid, $params = [], $pageSize = 10, $field = '')
     {
-        $type = isset($params['type'])? $params['type'] : 0;
-        $boxType = isset($params['box_type'])? $params['box_type'] : 0;
+        $type = isset($params['type']) ? $params['type'] : 0;
+        $boxType = isset($params['box_type']) ? $params['box_type'] : 0;
         if (!in_array($type, [1, 2])) {
             sr_throw('订单类型参数错误');
         }
@@ -68,55 +69,55 @@ class BoxHandleService
             sr_throw('盒子类型参数错误');
         }
 
-        $where = ['r.uid'=>$uid,'r.box_type'=>0,'r.status'=>$type,'r.is_delete'=> 2];
-        if($boxType>0){
+        $where = ['r.uid' => $uid, 'r.box_type' => 0, 'r.status' => $type, 'r.is_delete' => 2];
+        if ($boxType > 0) {
             $where['r.box_type'] = $boxType;
-        }else{
+        } else {
             unset($where['r.box_type']);
         }
 
 //        var_dump($where);
         $list = $this->model->alias('r')
-                ->where($where)
-                ->where(function($query) use($params){
-                    $keyword = isset($params['keywords'])? trim($params['keywords']):'';
-                    if($keyword){
-                        $query->where('r.h_sn','like',"%{$keyword}%");
-                    }
-                })
-                ->where(function($query){
-                    $query->where('r.open_time','<=',date('Y-m-d H:i:s'))->whereOr('r.open_time','null');
-                })
-                ->where(function($query) use($params){
-                    $time = isset($params['time'])? $params['time'] : '';
-                    $time1 = isset($params['time1'])? $params['time1'] : '';
-                    if($time){
-                        $query->where('r.create_time','>=', $time);
-                    }else if($time1){
-                        $query->where('r.create_time','<', $time1);
-                    }
-                })
-                ->field('r.*')
-                ->order('r.create_time desc,r.id desc')
-                ->paginate($pageSize)
-                ->each(function($val, $k){
-                    $goodsInfo = ShopGoodsService::make()->getCacheInfoById($val['goods_id'], 'goods_name,goods_sn,goods_img,price,spec_name');
-                    $val['goods_name'] = $goodsInfo['goods_name'];
-                    $val['goods_sn'] = $goodsInfo['goods_sn'];
-                    $val['goods_img'] = $goodsInfo['goods_img'];
-                    $val['price'] = $goodsInfo['price'];
-                    $val['time_text'] = $val['create_time']? date('H:i:s', strtotime($val['create_time'])):'';
-                    $val['spec_name'] = $goodsInfo['spec_name'];
-                    if ($val['box_type'] == 10) {
-                        $val['is_canrecycle'] = 0;
-                    } else {
-                        $val['is_canrecycle'] = 1;
-                    }
+            ->where($where)
+            ->where(function ($query) use ($params) {
+                $keyword = isset($params['keywords']) ? trim($params['keywords']) : '';
+                if ($keyword) {
+                    $query->where('r.h_sn', 'like', "%{$keyword}%");
+                }
+            })
+            ->where(function ($query) {
+                $query->where('r.open_time', '<=', date('Y-m-d H:i:s'))->whereOr('r.open_time', 'null');
+            })
+            ->where(function ($query) use ($params) {
+                $time = isset($params['time']) ? $params['time'] : '';
+                $time1 = isset($params['time1']) ? $params['time1'] : '';
+                if ($time) {
+                    $query->where('r.create_time', '>=', $time);
+                } else if ($time1) {
+                    $query->where('r.create_time', '<', $time1);
+                }
+            })
+            ->field('r.*')
+            ->order('r.create_time desc,r.id desc')
+            ->paginate($pageSize)
+            ->each(function ($val, $k) {
+                $goodsInfo = ShopGoodsService::make()->getCacheInfoById($val['goods_id'], 'goods_name,goods_sn,goods_img,price,spec_name');
+                $val['goods_name'] = $goodsInfo['goods_name'];
+                $val['goods_sn'] = $goodsInfo['goods_sn'];
+                $val['goods_img'] = $goodsInfo['goods_img'];
+                $val['price'] = $goodsInfo['price'];
+                $val['time_text'] = $val['create_time'] ? date('H:i:s', strtotime($val['create_time'])) : '';
+                $val['spec_name'] = $goodsInfo['spec_name'];
+                if ($val['box_type'] == 10) {
+                    $val['is_canrecycle'] = 0;
+                } else {
+                    $val['is_canrecycle'] = 1;
+                }
 
             });
 
-        $list = $list?$list->toArray():[];
-        return isset($list['data'])? $list['data'] : [];
+        $list = $list ? $list->toArray() : [];
+        return isset($list['data']) ? $list['data'] : [];
     }
 
     /**
@@ -131,10 +132,10 @@ class BoxHandleService
      * @throws \think\db\exception\DbException
      * @throws \think\db\exception\ModelNotFoundException
      */
-    public function getHistoryBoxList($uid, $params=[], $pageSize=10, $field='')
+    public function getHistoryBoxList($uid, $params = [], $pageSize = 10, $field = '')
     {
-        $type = isset($params['type'])? $params['type'] : 0;
-        $boxType = isset($params['box_type'])? $params['box_type'] : 0;
+        $type = isset($params['type']) ? $params['type'] : 0;
+        $boxType = isset($params['box_type']) ? $params['box_type'] : 0;
         if (!in_array($type, [1, 2])) {
             sr_throw('订单类型参数错误');
         }
@@ -143,36 +144,36 @@ class BoxHandleService
             sr_throw('盒子类型参数错误');
         }
 
-        $where = ['r.uid'=>$uid,'r.box_type'=>0,'r.status'=>$type,'r.is_delete'=> 2];
-        if($boxType>0){
+        $where = ['r.uid' => $uid, 'r.box_type' => 0, 'r.status' => $type, 'r.is_delete' => 2];
+        if ($boxType > 0) {
             $where['r.box_type'] = $boxType;
-        }else{
+        } else {
             unset($where['r.box_type']);
         }
 
 
         $list = BoxHandleAllModel::alias('r')
             ->where($where)
-            ->where(function($query) use($params){
-                $keyword = isset($params['keywords'])? trim($params['keywords']):'';
-                if($keyword){
-                    $query->where('r.h_sn','like',"%{$keyword}%");
+            ->where(function ($query) use ($params) {
+                $keyword = isset($params['keywords']) ? trim($params['keywords']) : '';
+                if ($keyword) {
+                    $query->where('r.h_sn', 'like', "%{$keyword}%");
                 }
             })
-            ->where(function($query){
-                $query->where('r.open_time','<=',date('Y-m-d H:i:s'))->whereOr('r.open_time','null');
+            ->where(function ($query) {
+                $query->where('r.open_time', '<=', date('Y-m-d H:i:s'))->whereOr('r.open_time', 'null');
             })
-            ->where('r.create_time','<',date('Y-m-d'))
+            ->where('r.create_time', '<', date('Y-m-d'))
             ->field('r.*')
             ->order('r.create_time desc,r.id desc')
             ->paginate($pageSize)
-            ->each(function($val, $k){
+            ->each(function ($val, $k) {
                 $goodsInfo = ShopGoodsService::make()->getCacheInfoById($val['goods_id'], 'goods_name,goods_sn,goods_img,price,spec_name');
                 $val['goods_name'] = $goodsInfo['goods_name'];
                 $val['goods_sn'] = $goodsInfo['goods_sn'];
                 $val['goods_img'] = $goodsInfo['goods_img'];
                 $val['price'] = $goodsInfo['price'];
-                $val['time_text'] = $val['create_time']? date('H:i:s', strtotime($val['create_time'])):'';
+                $val['time_text'] = $val['create_time'] ? date('H:i:s', strtotime($val['create_time'])) : '';
                 $val['spec_name'] = $goodsInfo['spec_name'];
                 if ($val['box_type'] == 10) {
                     $val['is_canrecycle'] = 0;
@@ -182,8 +183,8 @@ class BoxHandleService
 
             });
 
-        $list = $list?$list->toArray():[];
-        return isset($list['data'])? $list['data'] : [];
+        $list = $list ? $list->toArray() : [];
+        return isset($list['data']) ? $list['data'] : [];
     }
 
     /**
@@ -193,34 +194,34 @@ class BoxHandleService
      * @param int $dateType
      * @return mixed
      */
-    public function getBoxCount($uid,$status,$dateType=1)
+    public function getBoxCount($uid, $status, $dateType = 1)
     {
-        $counts = ['10'=>0,'20'=>0,'30'=>0,'40'=>0];
+        $counts = ['10' => 0, '20' => 0, '30' => 0, '40' => 0];
         $model = new BoxHandleModel();
 //        $model = $dateType == 1? new BoxHandleModel() : new BoxHandleAllModel();
-        $datas = $model->where(['uid'=>$uid,'status'=>$status,'is_delete'=>2])
-            ->where(function($query){
-                $query->where('open_time','<=',date('Y-m-d H:i:s'))->whereOr('open_time','null');
+        $datas = $model->where(['uid' => $uid, 'status' => $status, 'is_delete' => 2])
+            ->where(function ($query) {
+                $query->where('open_time', '<=', date('Y-m-d H:i:s'))->whereOr('open_time', 'null');
             })
-            ->where(function($query) use($dateType){
-                if($dateType == 1){
-                    $query->where('create_time','>=',date('Y-m-d'));
-                }else{
-                    $query->where('create_time','<',date('Y-m-d'));
+            ->where(function ($query) use ($dateType) {
+                if ($dateType == 1) {
+                    $query->where('create_time', '>=', date('Y-m-d'));
+                } else {
+                    $query->where('create_time', '<', date('Y-m-d'));
                 }
             })
             ->field(Db::raw('box_type,status,count(*) as total'))
             ->group('box_type')
             ->select();
 
-        $datas = $datas? $datas->toArray() : [];
-        $datas = array_column($datas,'total','box_type');
-        if($datas){
+        $datas = $datas ? $datas->toArray() : [];
+        $datas = array_column($datas, 'total', 'box_type');
+        if ($datas) {
             $counts = [
-                '10'=> isset($datas[10])? $datas[10]:0,
-                '20'=> isset($datas[20])? $datas[20]:0,
-                '30'=> isset($datas[30])? $datas[30]:0,
-                '40'=> isset($datas[40])? $datas[40]:0,
+                '10' => isset($datas[10]) ? $datas[10] : 0,
+                '20' => isset($datas[20]) ? $datas[20] : 0,
+                '30' => isset($datas[30]) ? $datas[30] : 0,
+                '40' => isset($datas[40]) ? $datas[40] : 0,
             ];
         }
         return $counts;
@@ -235,101 +236,103 @@ class BoxHandleService
      * @throws \think\db\exception\DbException
      * @throws \think\db\exception\ModelNotFoundException
      */
-    public function boxDelivery($uid, $params){
+    public function boxDelivery($uid, $params)
+    {
         $handIds = $params['hand_ids'];
         $addressId = $params['address_id'];
+        sr_throw('发货功能暂未开放');
 
-        $catchType = isset($params['date_type'])? $params['date_type'] : 0;
+        $catchType = isset($params['date_type']) ? $params['date_type'] : 0;
         $ids = explode(',', $handIds);
-        if(empty($ids)){
+        if (empty($ids)) {
             sr_throw('请选择发货的商品');
         }
-        if (!in_array($catchType, [1,2])){
+        if (!in_array($catchType, [1, 2])) {
             sr_throw('处理参数错误');
         }
         $model = new BoxHandleModel();
 //        $model = $catchType==1? new BoxHandleModel() : new BoxHandleAllModel();
         $boxList = $model->whereIn('id', $ids)
-            ->where(['uid'=>$uid,'status'=>1,'is_delete'=>2])
+            ->where(['uid' => $uid, 'status' => 1, 'is_delete' => 2])
             ->field('id,h_sn,status,uid,rid,handle_type,goods_id,box_type,goods_price')
             ->select();
 
-        if (count($boxList) != count($ids)){
+        if (count($boxList) != count($ids)) {
             sr_throw('商品参数错误或已处理,请刷新后重试');
         }
 
         $addressInfo = UserAddressModel::getAddressIdDetails((int)$addressId, $uid);
-        if (!$addressInfo){
+        if (!$addressInfo) {
             sr_throw('地址错误');
         }
 
-        $i=0;
+        $i = 0;
         $catchIds = [];
         $orders = $orderGoods = $orderShippings = [];
-        $orderId = ShopOrder::max('order_id')+1;
+        $orderId = ShopOrder::max('order_id') + 1;
         $curTime = sr_getcurtime(time());
         $cacheKey = "caches:box:deliveryCatch:user_{$uid}:";
-        foreach ($boxList as $key=>$val){
+        foreach ($boxList as $key => $val) {
             $goodsInfo = ShopGoodsService::make()->getCacheInfoById($val['goods_id']);
-            if(empty($goodsInfo)){
+            if (empty($goodsInfo)) {
                 sr_throw('商品参数错误');
             }
 
             // 判断该福袋是否已经处理
-            if($model->where(['id'=>$val['id'],'status'=>2])->value('id')){
+            if ($model->where(['id' => $val['id'], 'status' => 2])->value('id')) {
                 sr_throw('商品已处理');
             }
 
             // 验证是否有处理订单
-            if(ShopOrder::where(['user_id'=> $uid,'order_source'=> '福袋单号:'.$val['h_sn'],'status'=>1])->value('order_id')){
+            if (ShopOrder::where(['user_id' => $uid, 'order_source' => '福袋单号:' . $val['h_sn'], 'status' => 1])->value('order_id')) {
                 sr_throw('存在已发货商品');
             }
 
             // 订单数据
-            $orderId = $orderId+$i;
+            $orderId = $orderId + $i;
             $orders[] = [
-                'order_id'=>$orderId,
-                'order_sn'=>createdFDOrderSn(),
-                'payment'=>0,
-                'ship_postfee'=>0,
-                'user_id'=>$uid,
-                'status'=>1,
-                'num'=>1,
-                'order_type'=>5,
-                'order_remark'=> '福袋:'.$val['h_sn'],
-                'order_source'=> '福袋单号:'.$val['h_sn'],
-                'supplier_name'=>$goodsInfo['supplier_name'],
-                'total_price'=>0,
-                'created_time'=>$curTime,
-                'rebate_score'=>0,
+                'order_id' => $orderId,
+                'order_sn' => createdFDOrderSn(),
+                'payment' => 0,
+                'ship_postfee' => 0,
+                'user_id' => $uid,
+                'status' => 1,
+                'num' => 1,
+                'order_type' => 5,
+                'order_remark' => '福袋:' . $val['h_sn'],
+                'order_source' => '福袋单号:' . $val['h_sn'],
+                'supplier_name' => $goodsInfo['supplier_name'],
+                'total_price' => 0,
+                'created_time' => $curTime,
+                'rebate_score' => 0,
             ];
 
             $orderGoods[] = [
-                'order_id'=> $orderId,
-                'goods_id'=> $goodsInfo['goods_id'],
-                'goods_name'=> $goodsInfo['goods_name'],
-                'goods_category'=> $goodsInfo['category'],
-                'goods_img'=> $goodsInfo['goods_img'],
-                'num'=>1,
-                'price'=> $goodsInfo['price'],
-                'total_fee'=> $goodsInfo['price'],
-                'spec_ids'=>1,
-                'spec_text'=> $goodsInfo['spec_name'],
-                'uid'=>$uid,
-                'rebate_score'=>0,
-                'total_rebate_score'=>0
+                'order_id' => $orderId,
+                'goods_id' => $goodsInfo['goods_id'],
+                'goods_name' => $goodsInfo['goods_name'],
+                'goods_category' => $goodsInfo['category'],
+                'goods_img' => $goodsInfo['goods_img'],
+                'num' => 1,
+                'price' => $goodsInfo['price'],
+                'total_fee' => $goodsInfo['price'],
+                'spec_ids' => 1,
+                'spec_text' => $goodsInfo['spec_name'],
+                'uid' => $uid,
+                'rebate_score' => 0,
+                'total_rebate_score' => 0
             ];
 
             $orderShippings[] = [
-                'order_id'=> $orderId,
-                'sp_name'=> $addressInfo['name'],
-                'sp_mobile'=> $addressInfo['mobile'],
-                'sp_province'=> $addressInfo['sp_province'],
-                'sp_city'=> $addressInfo['sp_city'],
-                'sp_county'=> $addressInfo['sp_county'],
-                'sp_remark'=> $addressInfo['remark'],
-                'sp_mergename'=> $addressInfo['mergename'],
-                'created_time'=>$curTime
+                'order_id' => $orderId,
+                'sp_name' => $addressInfo['name'],
+                'sp_mobile' => $addressInfo['mobile'],
+                'sp_province' => $addressInfo['sp_province'],
+                'sp_city' => $addressInfo['sp_city'],
+                'sp_county' => $addressInfo['sp_county'],
+                'sp_remark' => $addressInfo['remark'],
+                'sp_mergename' => $addressInfo['mergename'],
+                'created_time' => $curTime
             ];
 
             $catchIds[] = $val['id'];
@@ -337,27 +340,27 @@ class BoxHandleService
         }
 
         // 验证处理数据
-        if(empty($orders) || empty($catchIds) || empty($orderGoods) || empty($orderShippings)){
+        if (empty($orders) || empty($catchIds) || empty($orderGoods) || empty($orderShippings)) {
             sr_throw('发货处理失败');
         }
 
         // 插入订单
-        if(!ShopOrder::insertAll($orders)){
+        if (!ShopOrder::insertAll($orders)) {
             sr_throw('处理发货订单错误');
         }
 
         // 发货订单商品
-        if(!ShopOrderGoodsModel::insertAll($orderGoods)){
+        if (!ShopOrderGoodsModel::insertAll($orderGoods)) {
             sr_throw('处理发货订单商品数据错误');
         }
 
         // 发货订单信息
-        if(!ShopOrderShippingModel::insertAll($orderShippings)){
+        if (!ShopOrderShippingModel::insertAll($orderShippings)) {
             sr_throw('处理发单数据错误');
         }
 
         // 今日数据处理/历史数据处理
-        if(!$model->whereIn('id', $catchIds)->update(['status'=>2,'handle_type'=>1,'update_time'=> $curTime])){
+        if (!$model->whereIn('id', $catchIds)->update(['status' => 2, 'handle_type' => 1, 'update_time' => $curTime])) {
             sr_throw('处理福袋数据失败');
         }
 
@@ -365,7 +368,7 @@ class BoxHandleService
     }
 
     /**
-     * 一件回收
+     * 一件回收 (新的处理回收到绿色积分)
      * @param $uid
      * @param $params
      * @return array
@@ -374,89 +377,221 @@ class BoxHandleService
      * @throws \think\db\exception\DbException
      * @throws \think\db\exception\ModelNotFoundException
      */
-    public function boxGoodsReBuy($uid, $params){
+    public function boxGoodsReBuy($uid, $params)
+    {
         $handIds = $params['hand_ids'];
 
-        $isRetrieve = SystemConfigService::make()->getConfigByName('fudai_is_retrieve',1,'fudai');
-        $isRetrieve = $isRetrieve? $isRetrieve : 0;
-        if(!$isRetrieve){
+        $isRetrieve = SystemConfigService::make()->getConfigByName('fudai_is_retrieve', 1, 'fudai');
+        $isRetrieve = $isRetrieve ? $isRetrieve : 0;
+        if (!$isRetrieve) {
             sr_throw('回收功能已暂时关闭');
         }
-        $catchType = isset($params['date_type'])? $params['date_type'] : 0;
+        $catchType = isset($params['date_type']) ? $params['date_type'] : 0;
         $ids = explode(',', $handIds);
-        if(empty($ids)){
+        if (empty($ids)) {
             sr_throw('请选择回收的商品');
         }
-        if (!in_array($catchType, [1,2])){
+        if (!in_array($catchType, [1, 2])) {
             sr_throw('处理参数错误');
         }
         $num = count($ids);
         $model = new BoxHandleModel();
 //        $model = $catchType==1? new BoxHandleModel() : new BoxHandleAllModel();
         $boxList = $model->whereIn('id', $ids)
-            ->where(['uid'=>$uid,'status'=>1,'is_delete'=>2])
+            ->where(['uid' => $uid, 'status' => 1, 'is_delete' => 2])
             ->field('id,h_sn,status,uid,rid,handle_type,goods_id,box_type,goods_price')
             ->select();
 
-        if (count($boxList) != count($ids)){
+        if (count($boxList) != count($ids)) {
             sr_throw('商品参数错误或已处理,请刷新后重试');
         }
 
-        if ($model->where('box_type', 10)->where('id', 'in', $ids)->value('id')){
+        if ($model->where('box_type', 10)->where('id', 'in', $ids)->value('id')) {
             sr_throw('普通商品只能发货,不能回收');
         }
 
-        if(UserUnmoneyModel::where(['ids'=> $handIds,'status'=>1])->value('id')){
+        if (GreenScoreLogModel::where(['ids' => $handIds])->value('id')) {
             sr_throw('商品已处理');
         }
 
         // 待处理的总金额
         $totalMoney = $model->where('id', 'in', $ids)->sum('goods_price');
-        $serviceFee = $num* env('boxsetting.RECYCLE_ONBOX_PRICE');
+        $serviceFee = $num * env('boxsetting.RECYCLE_ONBOX_PRICE');
         $endMoney = $totalMoney - $serviceFee;
-        if ($endMoney < 0){
+        if ($endMoney < 0) {
             sr_throw('错误,请联系客服');
         }
 
         // 申请
-        if ($params['action'] == 'apply'){
+        if ($params['action'] == 'apply') {
             return [
-                'total_count'=>count($boxList),
-                'end_money'=>$endMoney,
-                'total_money'=>$totalMoney
+                'total_count' => count($boxList),
+                'end_money' => $endMoney,
+                'total_money' => $totalMoney
             ];
+        } // 回收
+        else if ($params['action'] == 'surerecycle') {
+            $userInfo = UserService::make()->getCacheInfo($uid, 'id,score,money,green_score,recycle_count,profit_money');
+            $recycleCount = isset($userInfo['recycle_count']) ? $userInfo['recycle_count'] : 0;
+            $userGreenScore = isset($userInfo['green_score']) ? $userInfo['green_score'] : 0;
+
+            // 是否需要扣除回收卡
+            $needRecycle = false;
+            if ($needRecycle) {
+                if ($recycleCount < $num) {
+                    sr_throw('回收卡不足' . $num . '个');
+                }
+
+                // 扣除回收卡
+                if (!UserModel::where('id', $uid)->dec('recycle_count', $num)->update()) {
+                    sr_throw('回收卡扣除失败');
+                }
+
+                $data = [
+                    'uid' => $uid,
+                    'type' => 3,
+                    'score' => $num,
+                    'create_at' => sr_getcurtime(time()),
+                    'state' => 2,
+                    'before_score' => $recycleCount,
+                    'after_score' => max(0, $recycleCount - $num),
+                    'from_id' => 0,
+                    'uid2' => $handIds
+                ];
+                if (!RecyclecardLogModel::insertGetId($data)) {
+                    sr_throw('回收卡扣除处理失败');
+                }
+            }
+
+            // 扣除手续费后的钱全进绿色积分账户
+            if (!UserModel::where('id', $uid)->inc('green_score', $endMoney)->update()) {
+                sr_throw('回收商品结算错误');
+            }
+
+            $data = [
+                'uid' => $uid,
+                'type' => 6,
+                'score' => $endMoney,
+                'create_at' => sr_getcurtime(time()),
+                'state' => 1,
+                'before_score' => $userGreenScore,
+                'after_score' => floatval($userGreenScore + $endMoney),
+                'from_id' => 0,
+                'uid2' => 0,
+                'ids' => $handIds,
+                'remark' => "回收{$num}个福袋商品"
+            ];
+            if (!GreenScoreLogModel::insertGetId($data)) {
+                sr_throw('回收商品结算处理失败');
+            }
+
+            // 改变处理状态
+            if (!$model->whereIn('id', $ids)->update(['status' => 2, 'handle_type' => 2, 'update_time' => date('Y-m-d H:i:s')])) {
+                sr_throw('更新回收处理状态失败');
+            }
+
+            $logData = ['ids' => $ids, 'totalMoney' => $totalMoney, 'fee' => $serviceFee, 'back' => $endMoney, 'data' => $data, 'date' => date('Y-m-d H:i:s')];
+            RedisCache::set("caches:box:recycle:user_{$uid}:" . md5(json_encode($ids)), $logData, 7200);
+            return [
+                'ids' => $ids,
+                'total_fee' => $endMoney,
+            ];
+        }
+    }
+
+
+    /**
+     * 一件回收(原本回收到余额)
+     * @param $uid
+     * @param $params
+     * @return array
+     * @throws \think\Exception
+     * @throws \think\db\exception\DataNotFoundException
+     * @throws \think\db\exception\DbException
+     * @throws \think\db\exception\ModelNotFoundException
+     */
+    public function boxGoodsReBuyBack($uid, $params)
+    {
+        $handIds = $params['hand_ids'];
+
+        $isRetrieve = SystemConfigService::make()->getConfigByName('fudai_is_retrieve', 1, 'fudai');
+        $isRetrieve = $isRetrieve ? $isRetrieve : 0;
+        if (!$isRetrieve) {
+            sr_throw('回收功能已暂时关闭');
+        }
+        $catchType = isset($params['date_type']) ? $params['date_type'] : 0;
+        $ids = explode(',', $handIds);
+        if (empty($ids)) {
+            sr_throw('请选择回收的商品');
+        }
+        if (!in_array($catchType, [1, 2])) {
+            sr_throw('处理参数错误');
+        }
+        $num = count($ids);
+        $model = new BoxHandleModel();
+//        $model = $catchType==1? new BoxHandleModel() : new BoxHandleAllModel();
+        $boxList = $model->whereIn('id', $ids)
+            ->where(['uid' => $uid, 'status' => 1, 'is_delete' => 2])
+            ->field('id,h_sn,status,uid,rid,handle_type,goods_id,box_type,goods_price')
+            ->select();
+
+        if (count($boxList) != count($ids)) {
+            sr_throw('商品参数错误或已处理,请刷新后重试');
+        }
+
+        if ($model->where('box_type', 10)->where('id', 'in', $ids)->value('id')) {
+            sr_throw('普通商品只能发货,不能回收');
         }
 
-        // 回收
-        else if ($params['action'] == 'surerecycle'){
-            $userInfo = UserService::make()->getCacheInfo($uid,'id,score,money,recycle_count,profit_money');
-            $recycleCount = isset($userInfo['recycle_count'])? $userInfo['recycle_count'] : 0;
-            $userProfitMoney = isset($userInfo['profit_money'])? $userInfo['profit_money'] : 0;
-            $userMoney = isset($userInfo['money'])? $userInfo['money'] : 0;
-            $userScore = isset($userInfo['score'])? $userInfo['score'] : 0;
+        if (UserUnmoneyModel::where(['ids' => $handIds, 'status' => 1])->value('id')) {
+            sr_throw('商品已处理');
+        }
+
+        // 待处理的总金额
+        $totalMoney = $model->where('id', 'in', $ids)->sum('goods_price');
+        $serviceFee = $num * env('boxsetting.RECYCLE_ONBOX_PRICE');
+        $endMoney = $totalMoney - $serviceFee;
+        if ($endMoney < 0) {
+            sr_throw('错误,请联系客服');
+        }
+
+        // 申请
+        if ($params['action'] == 'apply') {
+            return [
+                'total_count' => count($boxList),
+                'end_money' => $endMoney,
+                'total_money' => $totalMoney
+            ];
+        } // 回收
+        else if ($params['action'] == 'surerecycle') {
+            $userInfo = UserService::make()->getCacheInfo($uid, 'id,score,money,recycle_count,profit_money');
+            $recycleCount = isset($userInfo['recycle_count']) ? $userInfo['recycle_count'] : 0;
+            $userProfitMoney = isset($userInfo['profit_money']) ? $userInfo['profit_money'] : 0;
+            $userMoney = isset($userInfo['money']) ? $userInfo['money'] : 0;
+            $userScore = isset($userInfo['score']) ? $userInfo['score'] : 0;
 
             // 回收卡扣除
-            if ($recycleCount < $num){
-                sr_throw('回收卡不足'.$num.'个');
+            if ($recycleCount < $num) {
+                sr_throw('回收卡不足' . $num . '个');
             }
 
             // 扣除回收卡
-            if(!UserModel::where('id',$uid)->dec('recycle_count', $num)->update()){
+            if (!UserModel::where('id', $uid)->dec('recycle_count', $num)->update()) {
                 sr_throw('回收卡扣除失败');
             }
 
             $data = [
-                'uid'=>$uid,
-                'type'=>3,
-                'score'=> $num,
-                'create_at'=>sr_getcurtime(time()),
-                'state'=> 2,
-                'before_score'=> $recycleCount,
-                'after_score'=> max(0,$recycleCount - $num),
-                'from_id'=> 0,
-                'uid2'=> $handIds
+                'uid' => $uid,
+                'type' => 3,
+                'score' => $num,
+                'create_at' => sr_getcurtime(time()),
+                'state' => 2,
+                'before_score' => $recycleCount,
+                'after_score' => max(0, $recycleCount - $num),
+                'from_id' => 0,
+                'uid2' => $handIds
             ];
-            if(!RecyclecardLogModel::insertGetId($data)){
+            if (!RecyclecardLogModel::insertGetId($data)) {
                 sr_throw('回收卡扣除处理失败');
             }
 
@@ -465,48 +600,48 @@ class BoxHandleService
 
             // 扣除手续费后的钱除去原价为利润
             $profitMoney = max(0, $endMoney - $totalFee);
-            if(!UserModel::where('id', $uid)->inc('money', $totalFee)->update()){
+            if (!UserModel::where('id', $uid)->inc('money', $totalFee)->update()) {
                 sr_throw('回收余额结算错误');
             }
 
             $data = [
-                'uid'=>$uid,
-                'type'=> 2,
-                'money'=> $totalFee,
-                'create_at'=>sr_getcurtime(time()),
-                'state'=> 1,
-                'before_money'=> $userMoney,
-                'after_money'=> floatval($userMoney + $totalFee),
-                'from_id'=> 0,
-                'uid2'=> $handIds,
-                'free_type'=> 0,
-                'remark'=> "回收{$num}个福袋商品"
+                'uid' => $uid,
+                'type' => 2,
+                'money' => $totalFee,
+                'create_at' => sr_getcurtime(time()),
+                'state' => 1,
+                'before_money' => $userMoney,
+                'after_money' => floatval($userMoney + $totalFee),
+                'from_id' => 0,
+                'uid2' => $handIds,
+                'free_type' => 0,
+                'remark' => "回收{$num}个福袋商品"
             ];
-            if(!MoneyLogModel::insertGetId($data)){
+            if (!MoneyLogModel::insertGetId($data)) {
                 sr_throw('回收商品金额处理失败');
             }
 
             // 利润
-            if ($profitMoney>0){
+            if ($profitMoney > 0) {
                 // 利润结算
-                if(!UserModel::where('id', $uid)->inc('profit_money', $profitMoney)->update()){
+                if (!UserModel::where('id', $uid)->inc('profit_money', $profitMoney)->update()) {
                     sr_throw('回收商品利润结算错误');
                 }
 
                 // 添加用户利润记录
                 $data = [
-                    'uid'=>$uid,
-                    'money'=> $profitMoney,
-                    'status'=> 2,
-                    'type'=> 1,
-                    'ids'=> $handIds,
-                    'state'=> 1,
-                    'before_money'=> $userProfitMoney,
-                    'after_money'=> floatval($userProfitMoney + $profitMoney),
-                    'remark'=> "回收{$num}个福袋结算,总金额:{$totalMoney}",
-                    'create_time'=>sr_getcurtime(time())
+                    'uid' => $uid,
+                    'money' => $profitMoney,
+                    'status' => 2,
+                    'type' => 1,
+                    'ids' => $handIds,
+                    'state' => 1,
+                    'before_money' => $userProfitMoney,
+                    'after_money' => floatval($userProfitMoney + $profitMoney),
+                    'remark' => "回收{$num}个福袋结算,总金额:{$totalMoney}",
+                    'create_time' => sr_getcurtime(time())
                 ];
-                if(!UserUnmoneyModel::insertGetId($data)){
+                if (!UserUnmoneyModel::insertGetId($data)) {
                     sr_throw('商品回收利润处理错误');
                 }
 
@@ -515,17 +650,17 @@ class BoxHandleService
             }
 
             // 改变用户处理状态
-           if(!$model->whereIn('id', $ids)->update(['status'=>2, 'handle_type'=>2, 'update_time'=>date('Y-m-d H:i:s')])){
-               sr_throw('更新回收处理状态失败');
-           }
-
-           $logData = ['ids'=> $ids,'totalMoney'=> $totalMoney,'fee'=>$serviceFee,'profit'=>$profitMoney,'back'=>$totalFee,'data'=>$data,'date'=>date('Y-m-d H:i:s')];
-           RedisCache::set("caches:box:recycle:user_{$uid}:".md5(json_encode($ids)), $logData, 7200);
-           return [
-               'ids'=> $ids,
-               'total_fee'=> $totalFee,
-               'profit_money'=> $profitMoney
-           ];
+            if (!$model->whereIn('id', $ids)->update(['status' => 2, 'handle_type' => 2, 'update_time' => date('Y-m-d H:i:s')])) {
+                sr_throw('更新回收处理状态失败');
+            }
+
+            $logData = ['ids' => $ids, 'totalMoney' => $totalMoney, 'fee' => $serviceFee, 'profit' => $profitMoney, 'back' => $totalFee, 'data' => $data, 'date' => date('Y-m-d H:i:s')];
+            RedisCache::set("caches:box:recycle:user_{$uid}:" . md5(json_encode($ids)), $logData, 7200);
+            return [
+                'ids' => $ids,
+                'total_fee' => $totalFee,
+                'profit_money' => $profitMoney
+            ];
         }
     }
 }

+ 19 - 9
app/common/service/BoxRecordService.php

@@ -197,11 +197,6 @@ class BoxRecordService
             sr_throw('每一场数量小于5最多只能预约4次');
         }
 
-        // 预约数量限制
-        $applyCount = $this->model->where(['uid' => $uid, 'status' => 1])->sum('num');
-        if ($applyCount + $boxCount> 100) {
-            sr_throw("每一场最多可预约100个,您已预约".($applyCount)."个");
-        }
 
         $lun = 1;
         $time = time();
@@ -220,6 +215,12 @@ class BoxRecordService
             }
         }
 
+        // 预约数量限制
+        $applyCount = $this->model->where(['uid' => $uid,'box_id'=>$boxId,'lun_count'=>$lun, 'status' => 1])->sum('num');
+        if ($applyCount + $boxCount> 100) {
+            sr_throw("每一场最多可预约100个,您已预约".($applyCount)."个");
+        }
+
         if (!$canBuy) {
             sr_throw('no_open');
         }
@@ -645,12 +646,21 @@ class BoxRecordService
             }
 
             // 更新同组盒子状态
-            if (!$this->model->whereIn('group_key', $groupKeys)->update(['status' => 3, 'update_time' => date('Y-m-d H:i:s')])) {
-                Db::rollback();
-                RedisCache::set($cacheKey . "error", ['ids' => $ids, 'count' => count($boxMidList),'scoreNum'=>$tempScorePayNum, 'date' => $date, 'msg' => "开袋失败:更新福袋开袋状态数据错误"], $cacheTime);
-                return "开袋失败:更新福袋开袋状态数据错误";
+            if(count($groupKeys) == 1){
+                if (!$this->model->where('group_key', $groupKeys[0])->update(['status' => 3, 'update_time' => date('Y-m-d H:i:s')])) {
+                    Db::rollback();
+                    RedisCache::set($cacheKey . "error", ['ids' => $ids,'sql'=>$this->model->getLastSql(),'keys'=>$groupKeys, 'count' => count($boxMidList),'scoreNum'=>$tempScorePayNum, 'date' => $date, 'msg' => "开袋失败:更新福袋开袋状态数据错误"], $cacheTime);
+                    return "开袋失败:更新福袋开袋状态数据错误";
+                }
+            }else{
+                if (!$this->model->whereIn('group_key', $groupKeys)->update(['status' => 3, 'update_time' => date('Y-m-d H:i:s')])) {
+                    Db::rollback();
+                    RedisCache::set($cacheKey . "error", ['ids' => $ids,'sql'=>$this->model->getLastSql(),'keys'=>$groupKeys, 'count' => count($boxMidList),'scoreNum'=>$tempScorePayNum, 'date' => $date, 'msg' => "开袋失败:更新福袋开袋状态数据错误"], $cacheTime);
+                    return "开袋失败:更新福袋开袋状态数据错误";
+                }
             }
 
+
             // 插入匹配数据
             if (!BoxMidHandleModel::insertAll($boxMidList)) {
                 Db::rollback();

+ 19 - 17
app/common/service/PaymentService.php

@@ -393,6 +393,7 @@ class PaymentService
         $params = ['uid' => $payUid, 'order_sn' => $orderSn, 'pay_type' => $payType];
         $payConfig = PayConfigService::make()->getInfoByChannel($payType, 1, 1);
         $payCode = isset($payConfig['pay_code']) && $payConfig['pay_code']? $payConfig['pay_code'] : '';
+        $payName = isset($payConfig['title']) && $payConfig['title']? $payConfig['title'] : '';
         if(empty($payConfig) || empty($payCode)){
             sr_throw('该支付暂未开放');
         }
@@ -430,20 +431,20 @@ class PaymentService
         Db::startTrans();
         try {
             switch ($payType) {
-                case 3: // 余额支付
+                case 5: // 积分支付
                     // 验证账户余额
-                    $userMoney = isset($userInfo['money']) ? floatval($userInfo['money']) : 0;
-                    if ($userMoney < $totalFee) {
-                        $logData = ['params' => $params, 'order' => $orderInfo, 'userInfo' => $userInfo, 'msg' => "服务商订单{$orderSn}账户余额不足", 'date' => $nowTime];
+                    $userScore = isset($userInfo['score']) ? floatval($userInfo['score']) : 0;
+                    if ($userScore < $totalFee) {
+                        $logData = ['params' => $params, 'order' => $orderInfo, 'userInfo' => $userInfo, 'msg' => "服务商订单{$orderSn}账户积分不足", 'date' => $nowTime];
                         RedisCache::set($cacheKey . '_error', $logData, $this->cacheTime);
-                        sr_throw('账户余额不足');
+                        sr_throw('账户积分不足');
                     }
 
                     // 扣款
-                    if (!UserModel::where('id', $payUid)->inc('money', $totalFee)->update()) {
-                        $logData = ['params' => $params, 'order' => $orderInfo, 'userInfo' => $userInfo, 'msg' => "服务商订单{$orderSn}余额支付失败", 'date' => $nowTime];
+                    if (!UserModel::where('id', $payUid)->dec('score', $totalFee)->update()) {
+                        $logData = ['params' => $params, 'order' => $orderInfo, 'userInfo' => $userInfo, 'msg' => "服务商订单{$orderSn}积分支付失败", 'date' => $nowTime];
                         RedisCache::set($cacheKey . '_error', $logData, $this->cacheTime);
-                        sr_throw('余额支付失败');
+                        sr_throw('积分支付失败');
                     }
 
                     // 流水
@@ -453,20 +454,21 @@ class PaymentService
                         'score' => $totalFee,
                         'create_at' => sr_getcurtime(time()),
                         'state' => 2, // 1进账,2-出账
-                        'before_score' => $userMoney,
-                        'after_score' => max(0, $userMoney - $totalFee),
+                        'before_score' => $userScore,
+                        'after_score' => max(0, $userScore - $totalFee),
                         'from_id' => $orderId,
-                        'uid2' => 0
+                        'uid2' => 0,
+                        'remark'=> '购买商城商品'
                     ];
 
-                    if (!GreenScoreLogModel::insertGetId($log)) {
-                        $logData = ['params' => $params, 'order' => $orderInfo, 'userInfo' => $userInfo,'log'=>$log, 'msg' => "服务商订单{$orderSn}账户余额支付处理失败", 'date' => $nowTime];
+                    if (!ScoreLogModel::insertGetId($log)) {
+                        $logData = ['params' => $params, 'order' => $orderInfo, 'userInfo' => $userInfo,'log'=>$log, 'msg' => "服务商订单{$orderSn}账户积分支付处理失败", 'date' => $nowTime];
                         RedisCache::set($cacheKey . '_error', $logData, $this->cacheTime);
-                        sr_throw('账户余额支付处理失败');
+                        sr_throw('账户积分支付处理失败');
                     }
 
                     break;
-                case 6: // 绿色积分
+                case 6: // 绿色积分支付
                     // 验证账户
                     $userGreenScore = isset($userInfo['green_score']) ? floatval($userInfo['green_score']) : 0;
                     if ($userGreenScore < $totalFee) {
@@ -476,7 +478,7 @@ class PaymentService
                     }
 
                     // 扣款
-                    if (!UserModel::where('id', $payUid)->inc('green_score', $totalFee)->update()) {
+                    if (!UserModel::where('id', $payUid)->dec('green_score', $totalFee)->update()) {
                         $logData = ['params' => $params, 'order' => $orderInfo, 'userInfo' => $userInfo, 'msg' => "服务商订单{$orderSn}账户绿色积分支付失败", 'date' => $nowTime];
                         RedisCache::set($cacheKey . '_error', $logData, $this->cacheTime);
                         sr_throw('绿色积分支付失败');
@@ -508,7 +510,7 @@ class PaymentService
             }
 
             // 更新订单状态
-            if (!ShopOrderModel::where('order_id', $orderId)->update(['status' => 1, 'pay_type' => $payType, 'updated_time' => $nowTime])) {
+            if (!ShopOrderModel::where('order_id', $orderId)->update(['status' => 1, 'pay_type' => $payType,'order_remark'=> $payName, 'updated_time' => $nowTime])) {
                 $logData = ['params' => $params, 'order' => $orderInfo, 'msg' => "服务商订单{$orderSn}更新状态错误", 'date' => $nowTime];
                 RedisCache::set($cacheKey . '_error', $logData, $this->cacheTime);
                 sr_throw("服务商订单{$orderSn}更新状态错误");

+ 1 - 1
app/common/service/ShopGoodsService.php

@@ -275,7 +275,7 @@ class ShopGoodsService
 
             $attenSionCount = isset($info['attension_count'])? $info['attension_count'] : 0;
             RedisCache::set("caches:goods:attension:{$goodsId}", $attenSionCount+1, rand(5, 10));
-            RedisCache::keyDel('caches:goods:list_*');
+            RedisCache::keyDel('caches:goods:list*');
             Db::commit();
             return true;
         }

+ 34 - 0
app/validate/admin/user/user/ModifyGreenScore.php

@@ -0,0 +1,34 @@
+<?php
+declare (strict_types=1);
+
+namespace app\validate\admin\user\user;
+
+use think\Validate;
+
+class ModifyGreenScore extends Validate
+{
+    protected $rule = [
+        'uid'     => 'require|integer',
+        'score'   => 'require|float|between:0,1000000',
+        'state'   => 'require|in:1,2',
+        'type'    => 'require|between:0,100',
+        'from_id' => 'integer',
+        'remark'  => 'length:0,50',
+    ];
+
+    protected $message = [
+        'uid.require'     => 'UID不能为空',
+        'uid.integer'     => 'UID格式错误',
+        'score.require'   => '余额不能为空',
+        'score.float'    => '余额格式错误',
+        'score.between'   => '余额变更金额超出范围',
+        'state.require'   => '变动类型不能为空',
+        'state.integer'   => '变动类型格式错误',
+        'type.require'    => '余额类型不能为空',
+        'type.integer'    => '余额类型格式错误',
+        'from_id.require' => '来源不能为空',
+        'from_id.integer' => '来源格式错误',
+        'remark.require'  => '备注不能为空',
+        'remark.length'   => '备注长度不能超过50个字符',
+    ];
+}

+ 9 - 2
config/type.php

@@ -44,15 +44,22 @@ return [
         1=>'预约福袋',
         2=>'预约福袋空盒退回',
         3=>'购买商品送积分',
-        4=>'提现多次返回'
+        4=>'提现多次返回',
+        6=>'兑换商品',
+        11=>'购买商品',
+        12=>'平台充值',
+        13=>'平台扣除',
+        14=>'积分',
     ],
-    // 积分
+    // 绿色积分
     'green_score'=>[
+        0=>'其他调整',
         1=>'积分兑换',
         2=>'利润兑换',
         3=>'余额兑换',
         4=>'购买商品',
         5=>'预约福袋',
+        6=>'回收商品',
         99=>'其他'
     ],
     'scoreAll'=>[

+ 36 - 7
public/static/admin/js/user/user.js

@@ -50,11 +50,12 @@ define(["jquery", "easy-admin"], function ($, ea) {
                     {field: 'is_px', width: 80, title: '来源', search: 'select', selectList: {0: '邀请码', 1: '排线码'}},
                     {field: 'is_auth', width: 100, title: '是否实名', search: 'select', selectList: {0: '未实名', 1: '已实名'}},
                     // {field: 'coin', width: 80, title: 'T币', searchOp: 'range'},
-                    {field: 'money', width: 130, title: '余额', searchOp: 'range'},
+                    // {field: 'money', width: 130, title: '余额', searchOp: 'range'},
                     {field: 'score', width: 80, title: '积分', searchOp: 'range'},
-                    {field: 'xz_num', width: 80, title: '星钻', searchOp: 'range'},
+                    {field: 'green_score', width: 130, title: '绿色积分', searchOp: 'range'},
+                    // {field: 'xz_num', width: 80, title: '星钻', searchOp: 'range'},
                     {field: 'level', width: 80, title: '等级', searchOp: 'range'},
-                    {field: 'xz_level', width: 80, title: '星钻等级', searchOp: 'range'},
+                    // {field: 'xz_level', width: 80, title: '星钻等级', searchOp: 'range'},
                     // {field: 'active_me', width: 100, title: '个人活跃', searchOp: 'range'},
                     // {field: 'total_active', width: 85, title: '总活跃', searchOp: 'range'},
                     {field: 'reg_time', width: 180, title: '注册时间', search: 'range'},
@@ -63,7 +64,8 @@ define(["jquery", "easy-admin"], function ($, ea) {
                     {field: 'total_team_income', width: 220, title: '团队总充值', search: 'range'},
                     {field: 'total_team_withdraw', width: 220, title: '团队总提现', search: 'range'},
                     {field: 'score_total', width: 220, title: '团队会员积分账户合计', search: 'range'},
-                    {field: 'money_total', width: 220, title: '团队会员余额账户合计', search: 'range'},
+                    {field: 'green_score_total', width: 220, title: '团队会员绿色积分账户合计', search: 'range'},
+                    // {field: 'money_total', width: 220, title: '团队会员余额账户合计', search: 'range'},
 
 
                     {
@@ -103,10 +105,13 @@ define(["jquery", "easy-admin"], function ($, ea) {
                             //     button += '<button class="layui-btn layui-btn-xs layui-btn-normal" data-open="user.user/modifypid?id=' + d.id + '" data-title="修改上级">修改上级</button>';
                             // }
                             if (ea.checkAuth('modifyscore', init.table_elem)) {
-                                button += '<button class="layui-btn layui-btn-xs layui-btn-normal" data-open="user.user/modifyscore?id=' + d.id + '" data-title="修改积分">修改积分</button>';
+                                button += '<button class="layui-btn layui-btn-xs layui-btn-normal" data-open="user.user/modifyscore?id=' + d.id + '" data-title="调整积分">调整积分</button>';
                             }
-                            if (ea.checkAuth('modifymoney', init.table_elem)) {
-                                button += '<button class="layui-btn layui-btn-xs layui-btn-normal" data-open="user.user/modifymoney?id=' + d.id + '" data-title="修改余额">修改余额</button>';
+                            // if (ea.checkAuth('modifymoney', init.table_elem)) {
+                            //     button += '<button class="layui-btn layui-btn-xs layui-btn-normal" data-open="user.user/modifymoney?id=' + d.id + '" data-title="修改余额">修改余额</button>';
+                            // }
+                            if (ea.checkAuth('modifygreenscore', init.table_elem)) {
+                                button += '<button class="layui-btn layui-btn-xs layui-btn-normal" data-open="user.user/modifygreenscore?id=' + d.id + '" data-title="调整绿色积分">调整绿色积分</button>';
                             }
                             if (ea.checkAuth('userdel', init.table_elem)) {
                                 button += '<button class="layui-btn layui-btn-xs layui-btn-danger" data-request="user.user/deluser?id=' + d.id + '" data-title="确认执行注销?" data-full="true">注销</button>';
@@ -239,6 +244,30 @@ define(["jquery", "easy-admin"], function ($, ea) {
             });
             ea.listen();
         },
+        greenScoreLog: function () {
+            let url = document.location.toString();
+            var data = url.split('=');
+            init.index_url = 'user.user/greenScoreLog?id=' + data[1];
+            ea.table.render({
+                init: init,
+                toolbar: [],
+                cols: [[
+                    {field: 'id', width: 100, title: 'ID'},
+                    {field: 'uid', minWidth: 100, title: 'uid'},
+                    {field: 'score', minWidth: 120, title: '数目', searchOp: 'range'},
+                    {field: 'type', minWidth: 120, title: '类型', searchOp: 'range'},
+                    {
+                        field: 'state', minWidth: 120, title: '收支', search: 'select',
+                        selectList: {1: '收入', 2: '支出'}
+                    },
+                    {field: 'before_score', minWidth: 120, title: '变动前'},
+                    {field: 'after_score', minWidth: 120, title: '变动后'},
+                    {field: 'create_at', width: 180, title: '添加时间', search: 'range'},
+                    {field: 'remark', width: 180, title: '备注', search: 'range'},
+                ]],
+            });
+            ea.listen();
+        },
         activeLog: function () {
             let url = document.location.toString();
             var data = url.split('=');

BIN
public/static/img/user/bg.png