linwu 2 年之前
父节点
当前提交
1bf138c3a7

+ 40 - 0
app/admin/controller/User.php

@@ -949,6 +949,46 @@ class User extends BaseController
         ]));
     }
 
+    // 提现设置
+    public function getmoney()
+    {
+        $param = UserParamModel::field('getmoney')->where(1)->findOrEmpty();
+        return view('user/getmoney', [
+            'getmoney' => $param['getmoney'],
+        ]);
+    }
+
+    public function editGetmoney()
+    {
+        $param = UserParamModel::where(1)->findOrEmpty();
+        $data  = [
+            'getmoney'      => input('getmoney/a', [])
+        ];
+        foreach ($data['getmoney'] as $v){
+            if ($v['money'] <= 0) {
+                exit(json_encode([
+                    'code' => 1,
+                    'msg'  => "金额必须大于0",
+                ]));
+            }
+            if ($v['num'] <= 0) {
+                exit(json_encode([
+                    'code' => 1,
+                    'msg'  => "次数必须大于0",
+                ]));
+            }
+        }
+        if ($param->isEmpty()) {
+            UserParamModel::create($data);
+        } else {
+            $param->getmoney = $data['getmoney'];
+            $param->save();
+        }
+        exit(json_encode([
+            'code' => 0,
+            'msg'  => "",
+        ]));
+    }
 
     // 用户组
     public function willList()

+ 97 - 0
app/admin/view/user/getmoney.html

@@ -0,0 +1,97 @@
+<div class="layui-fluid">
+	<div class="layui-row layui-col-space15">
+		<div class="layui-col-md12">
+			<div class="layui-card">
+				<div class="layui-card-header">提现设置</div>
+				<div class="layui-card-body" pad15>
+					<div class="layui-form layui-form-pane">
+						<button type="button" id="add" class="layui-btn layui-btn-normal">添加</button>
+						<table class="layui-table" id="table">
+							<tr>
+								<th>金额</th>
+								<th>可提次数</th>
+								<th>次数限制条件</th>
+								<th>操作</th>
+							</tr>
+							{volist name="getmoney" id="vo"}
+								<tr class="form-tr">
+									<td><input type="text" name="money{$key}" class="layui-input" value="{$vo.money}"></td>
+									<td><input type="text" name="num{$key}" class="layui-input" value="{$vo.num}"></td>
+									<td>
+										<input type="radio" name="type{$key}" value="1" title="账号" {eq name="vo.type" value="1"}checked{/eq}>
+										<input type="radio" name="type{$key}" value="2" title="每月" {eq name="vo.type" value="2"}checked{/eq}>
+									</td>
+									<td>
+										<button type="button" class="layui-btn layui-btn-danger btn-del">删除</button>
+									</td>
+								</tr>
+							{/volist}
+						</table>
+						<div class="layui-input-block" style="text-align:center;margin-top:20px;">
+							<button class="layui-btn" id="submit">确认修改</button>
+						</div>
+					</div>
+				</div>
+			</div>
+		</div>
+	</div>
+</div>
+
+<script>
+	layui.config({
+		base: '/static/echoui/' //静态资源所在路径
+	}).extend({
+		index: 'lib/index' //主入口模块
+	}).use(['index', 'set'], function() {
+		var $ = layui.$,
+			setter = layui.setter,
+			form = layui.form,
+			admin = layui.admin;
+
+		var index = {:count($getmoney)};
+		$('#add').click(function(){
+			$('#table').append(gettr(index));
+			index++;
+			form.render();
+		});
+
+		function gettr(index) {
+			var tr = '<tr class="form-tr">' +
+					'<td><input type="text" name="money' + index + '" class="layui-input" value="0"></td>' +
+					'<td><input type="text" name="num' + index + '" class="layui-input" value="0"></td>' +
+					'<td><input type="radio" name="type' + index + '" value="1" title="账号" checked><input type="radio" name="type' + index + '" value="2" title="每月"></td>' +
+					'<td><button type="button" class="layui-btn layui-btn-danger btn-del">删除</button></td>' +
+					'</tr>';
+			return tr;
+		}
+
+		$('#table').on('click','.btn-del',function(){
+			$(this).parent().parent().remove();
+		});
+
+		$('#submit').click(function(){
+			var form = $('.form-tr');
+			var data = [];
+			if (form.length === 0) {
+				layer.msg("请添加数据", { icon: 2 });
+				return false;
+			}
+
+			$.each(form,function(k,v){
+				var item = {};
+				item.money = $(v).find('input')[0].value;
+				item.num = $(v).find('input')[1].value;
+				item.type = $(v).find('input:radio:checked').val();
+				data.push(item);
+			});
+
+			admin.req({
+				url: setter.baseAdminUrl + 'user/editGetmoney',
+				data: {getmoney:data},
+				done: function(res) {
+					layer.msg("提交成功", { icon: 1 });
+				}
+			});
+		});
+	});
+</script>

+ 25 - 0
app/common/model/UserGetmoneyLog.php

@@ -0,0 +1,25 @@
+<?php
+
+namespace app\common\model;
+
+use think\Model;
+
+class UserGetmoneyLog extends Model
+{
+    // 设置字段信息
+    protected $schema = [
+        'id'           => 'int',
+        'userid'       => 'int',
+        'out_trade_no' => 'string',
+        'money'        => 'float',
+        'integral'     => 'int',
+        'remark'       => 'string',
+        'createtime'   => 'int',
+    ];
+
+    // 设置字段自动转换类型
+    protected $type = [
+        'createtime' => 'timestamp:Y-m-d H:i',
+    ];
+
+}

+ 4 - 1
app/common/model/UserParam.php

@@ -26,7 +26,10 @@ class UserParam extends Model
         'sharejob'      => 'int',
         'sharejobnum'   => 'int',
         'taskimage'     => 'string',
+        'getmoney'      => 'string',
     ];
 
-
+    protected $type = [
+        'getmoney'		=> 'json',
+    ];
 }

+ 128 - 26
app/mainapp/controller/My.php

@@ -3,6 +3,8 @@
 namespace app\mainapp\controller;
 
 use app\common\model\ResumeInvite;
+use app\common\model\UserGetmoneyLog as UserGetmoneyLogModel;
+use app\common\model\UserGetmoneyLog;
 use app\common\model\UserWill;
 use app\common\service\IntegralService;
 use app\mainapp\BaseController;
@@ -26,6 +28,7 @@ use app\common\model\ArticleCollect as ArticleCollectModel;
 use echowx\WxProgram;
 
 use echowx\WxPay;
+use payment\wechat\WechatTransfers;
 
 class My extends BaseController
 {
@@ -428,7 +431,7 @@ class My extends BaseController
         }
         $field       = input('field/s');
         $value       = input('value');
-        $field_array = ['emp_time', 'com_cate','work_place'];
+        $field_array = ['emp_time', 'com_cate', 'work_place'];
         if (in_array($field, $field_array)) {
             $value = json_decode($value, true);
         }
@@ -449,7 +452,7 @@ class My extends BaseController
             $user->save();
         }
         $integralService = new IntegralService();
-        $integralService->add($userid,IntegralService::IMPROVERESUME);
+        $integralService->add($userid, IntegralService::IMPROVERESUME);
         page_result();
     }
 
@@ -544,38 +547,137 @@ class My extends BaseController
     {
         $userid = input('userid/d');
 
-        $check = UserIntegralModel::where('createtime','>=',strtotime(date('Y-m-d')))
-            ->where('createtime','<=',strtotime(date('Y-m-d 23:59:59')))
-            ->where('userid',$userid)
-            ->where('itype',9)
+        $check = UserIntegralModel::where('createtime', '>=', strtotime(date('Y-m-d')))
+            ->where('createtime', '<=', strtotime(date('Y-m-d 23:59:59')))
+            ->where('userid', $userid)
+            ->where('itype', 9)
             ->find();
         if (!empty($check)) {
             page_result(1, "今日已签到");
         }
 
         $integralService = new IntegralService();
-        $integralService->add($userid,IntegralService::SINGIN,9);
+        $integralService->add($userid, IntegralService::SINGIN, 9);
 
         page_result(0, "");
     }
 
-     public function task()
-     {
-         $userid = input('userid/d');
-
-         $param = UserParamModel::field(['improveresume','certification','entry','signin','sharejob','sharejobnum','taskimage'])->where(1)->find();
-         $share_num = UserIntegralModel::where('createtime','>=',strtotime(date('Y-m-d')))
-             ->where('createtime','<=',strtotime(date('Y-m-d 23:59:59')))
-             ->where('userid',$userid)
-             ->where('itype',10)
-             ->count();
-         $check = UserIntegralModel::where('createtime','>=',strtotime(date('Y-m-d')))
-             ->where('createtime','<=',strtotime(date('Y-m-d 23:59:59')))
-             ->where('userid',$userid)
-             ->where('itype',9)
-             ->find();
-         $is_signin = empty($check) ? 2 : 1;
-
-         page_result(0, "",['tasklist'=>$param,'share_num'=>$share_num,'is_signin'=>$is_signin]);
-     }
+    public function task()
+    {
+        $userid = input('userid/d');
+
+        $param     = UserParamModel::field(['improveresume', 'certification', 'entry', 'signin', 'sharejob', 'sharejobnum', 'taskimage'])->where(1)->find();
+        $share_num = UserIntegralModel::where('createtime', '>=', strtotime(date('Y-m-d')))
+            ->where('createtime', '<=', strtotime(date('Y-m-d 23:59:59')))
+            ->where('userid', $userid)
+            ->where('itype', 10)
+            ->count();
+        $check     = UserIntegralModel::where('createtime', '>=', strtotime(date('Y-m-d')))
+            ->where('createtime', '<=', strtotime(date('Y-m-d 23:59:59')))
+            ->where('userid', $userid)
+            ->where('itype', 9)
+            ->find();
+        $is_signin = empty($check) ? 2 : 1;
+
+        page_result(0, "", ['tasklist' => $param, 'share_num' => $share_num, 'is_signin' => $is_signin]);
+    }
+
+    public function getmoneylist()
+    {
+        $ppage  = input('ppage/d', 1);
+        $psize  = input('psize/d', 20);
+        $userid = input('userid/d', 0);
+        if ($userid != 0) {
+            $map[] = ['userid', '=', $userid];
+        }
+        $plist = UserGetmoneyLogModel::where($map)->order(['id' => 'desc'])->page($ppage)->limit($psize)->select()->append(['itype_text', 'status_text']);
+        page_result(0, "", [
+            'plist'   => $plist,
+            'pstatus' => $psize > count($plist) ? 'noMore' : 'more',
+        ]);
+    }
+
+    public function getmoneyparam()
+    {
+        $param = UserParamModel::where(1)->find();
+        if (empty($param)) {
+            $param['getmoney'] = [];
+        }
+
+        page_result(0, "", ['getmoney' => $param['getmoney']]);
+    }
+
+    public function cash()
+    {
+        $index  = input('index/d', 1);
+        $userid = input('userid/d', 0);
+
+        //获取配置参数
+        $param = UserParamModel::where(1)->find();
+        if (empty($param) || empty($param['getmoney'])) {
+            page_result(1, "参数未配置");
+        }
+        if (empty($param['getmoney'][$index])) {
+            page_result(1, "参数错误");
+        }
+        $cash = $param['getmoney'][$index];
+
+        //满足提现条件
+        $user = UserModel::findOrEmpty($userid);
+        if ($user['integral'] < ($cash['money'] * $param['inttomoney'])) {
+            page_result(1, "积分不足");
+        }
+        $where = [
+            ['userid', '=', $userid],
+            ['money', '=', $cash['money']],
+        ];
+        if ($cash['type'] == 2) {
+            $where = ['createtime', '>=', strtotime(date('Y-m-01'))];
+        }
+        $cash_count = UserGetmoneyLog::where($where)->count();
+        if ($cash_count >= $cash['num']) {
+            page_result(1, "超过次数限制");
+        }
+
+        //提现
+        $batch_name   = '晋江人力小程序用户提现';//转账的名称
+        $out_trade_no = 'jfhd' . getUniId();//单号
+        $openid       = UserAuthsModel::where('userid',$userid)->where('identitytype','weixin')->value('identifier');//用户openid
+        $detail       = [];
+        $transfers    = new WechatTransfers();
+        $detail[]     = $transfers->getDetailList($out_trade_no, $cash['money'], $batch_name, $openid);
+        $res          = $transfers->transfers($batch_name, $detail);
+        halt($res);
+
+        //记录
+        if (!empty($res['batch_id'])) {
+            $point = $cash['money'] * $param['inttomoney'];
+            UserGetmoneyLog::create([
+                'userid'       => $userid,
+                'out_trade_no' => $out_trade_no,
+                'money'        => $cash['money'],
+                'integral'     => $point,
+                'remark'       => '小程序用户提现',
+                'createtime'   => time(),
+            ]);
+            $integral = new UserIntegralModel;
+            $integral->save([
+                'userid'      => $userid,
+                'title'       => "用户提现",
+                'intvalue'    => $point,
+                'intmoney'    => 0.00,
+                'onlycontent' => "",
+                'remark'      => "积分提现活动",
+                'itype'       => 3,
+                'status'      => 2,
+                'createtime'  => time(),
+                'yeartime'    => date("Y"),
+                'monthtime'   => date("Ym"),
+            ]);
+            $user->integral -= $point;
+            $user->save();
+        }
+
+        page_result(0, "提现成功",$user);
+    }
 }