insert($data); return $res; } /** * @author chenniang * @DataTime: 2020-07-16 16:35 * @功能说明:列表 */ public function integralList($dis,$page){ $data = $this->where($dis)->order(['update_time desc','id desc'])->paginate($page)->toArray(); if(!empty($data['data'])){ foreach ($data['data'] as &$v){ if($v['controller_type']==0){ $v['controller_name'] = '系统核算'; $icon = $v['integral_add']>0?'+':'-'; $integral_add = $v['integral_add']>0?$v['integral_add']:$v['integral_add']*-1; $text = $v['integral_add']>0?'增加积分':'使用积分'; $boj = $this->returnObj($v['type']); $refund = $v['refund']==1?'(已退款)':''; $v['text'] = $boj.$text.$icon.$integral_add.',现积分 '.$v['integral_after'].$refund; $v['type_text'] = $boj; } } } return $data; } /** * @author chenniang * @DataTime: 2020-09-14 15:17 * @功能说明:返回一个对象 */ public function returnObj($type){ switch ($type){ //加 case 1: return '购买商城商品'; break; //购买储值套餐赠送 case 2: return '购买储值套餐'; break; case 3://减 return '购买商城商品'; break; case 4: return '购买土地产品'; break; case 5: return '购买认养产品'; break; case 6://售后 return '商城商品退款'; break; case 7://售后 return '购买养殖产品'; break; case 8: return '购买认养配送'; break; case 9: return '购买土地配送'; break; case 10: return '签到'; break; case 11://消耗 return '抽奖'; break; case 12: return '后台充值'; break; case 13: return '后台扣除'; break; case 14: return '抽奖获取'; break; default: return '消费'; break; } } /** * @author chenniang * @DataTime: 2020-04-26 17:08 * @功能说明:详情 */ public function integralInfo($dis){ $data = $this->where($dis)->find(); return !empty($data)?$data->toArray():[]; } /** * @author chenniang * @DataTime: 2020-04-26 17:13 * @功能说明:编辑 */ public function integralUpdate($dis,$data){ $data['update_time'] = time(); $res = $this->where($dis)->update($data); return $res; } /** * @author chenniang * @DataTime: 2022-08-24 10:49 * @功能说明:发送积分消息 */ public function sendMsg($data,$user_id,$integral,$type){ if(in_array($type,[1,3,4,5,10,11])){ $data['integral'] = abs($integral); $data['user_id'] = $user_id; //消费获取的积分 if(in_array($type,[1,2,4,5])){ $s_type = 10; }elseif (in_array($type,[3])){ //消费消耗的积分 $s_type = 11; }elseif (in_array($type,[11])){ //抽奖消耗 $s_type = 12; }elseif (in_array($type,[10])){ //签到获取积分 $s_type = 13; } $info_model = new PushMsgModel($data['uniacid']); $info_model->sendMsg($data,$s_type); } return true; } /** * @author chenniang * @DataTime: 2020-07-31 10:28 * @功能说明:增加用户积分 */ public function integralUserAdd($user_id,$integral,$uniacid,$status = 2,$type=0,$order_id=0,$time=0,$data=[]){ // if(!in_array($type,[5,6,7,8])){ // //积分倍率 // $arr = $this->pointDouble($user_id,$integral); // // $integral = $arr['integral']; // //查询单日获取积分是否超限 // $integral = $this->dayGetIntegral($user_id,$integral,$uniacid); // } $time = !empty($time)?$time:time(); if(!empty($integral)&&$integral!='0.00'){ //发送消息 $this->sendMsg($data,$user_id,$integral,$type); $member_model = new \app\farm\model\User(); $member_info = $member_model->dataInfo(['id'=>$user_id]); $insert = [ 'uniacid' => $uniacid, 'user_id' => $user_id, 'integral_add' => $integral, 'integral_before'=> $member_info['integral'], 'integral_after' => $member_info['integral']+$integral, 'status' => $status, 'type' => $type, 'order_id' => $order_id, 'double' => !empty($arr['double'])?$arr['double']:1, 'create_time' => $time, 'update_time' => $time, ]; $res = $this->insert($insert); if($res==0){ return false; } $res = $member_model->dataUpdate(['id'=>$user_id],['integral'=>$insert['integral_after']]); if($res==0){ return false; } } return true; } /**\ * @author chenniang * @DataTime: 2021-11-12 17:31 * @功能说明:积分倍率 */ public function pointDouble($user_id,$integral){ $arr['double'] = 1; $arr['integral'] = $integral; if($integral<0){ return $arr; } $user_model = new User(); $member_level = $user_model->where(['id'=>$user_id])->value('member_level'); if(empty($member_level)){ return $arr; } $level_model = new Level(); $level = $level_model->levelInfo(['id'=>$member_level]); if(empty($level)){ return $arr; } if(empty($level['integral_switch'])){ return $arr; } $arr['double'] = $level['integral']; $arr['integral'] = floor($level['integral']*$integral); return $arr; } /** * @author chenniang * @DataTime: 2021-11-12 14:05 * @功能说明:单天获得积分 */ public function dayGetIntegral($user_id,$integral,$uniacid){ $config_model = new Config(); $config = $config_model->configInfo(['uniacid'=>$uniacid]); if($config['integral_limit']==0){ return $integral; } $dis[] = ['user_id','=',$user_id]; $dis[] = ['integral_add','>',0]; $dis[] = ['type','not in',[5,6,7]]; //单日获取积分 $integral_day = $this->where($dis)->whereDay('create_time')->sum('integral_add'); //单日可获取最大积分 $integral_day_max = $config['integral_day_max']; $point = $integral_day_max-$integral_day; if($point<=0){ return 0; } $point = $point-$integral>0?$integral:$point; return $point; } /** * @author chenniang * @DataTime: 2020-08-04 10:21 * @功能说明:每日领取的积分 */ public function dayIntegral($user_id,$uniacid){ $config_model = new Config(); $config = $config_model->configInfo(['uniacid'=>$uniacid]); if($config['integral_limit']==1){ $dis = [ 'user_id' => $user_id, 'refund' => 0, 'type' => 1 ]; $integral = $this->where($dis)->where('status','>',0)->whereDay('create_time')->sum('integral_add'); $re_integral = $config['integral_day_max'] - $integral; $re_integral = $re_integral>0?$re_integral:0; return intval($re_integral); } return true; } /** * @author chenniang * @DataTime: 2020-08-04 11:07 * @功能说明:给用户加积分 */ public function incUserIntegral($order_id,$user_id,$uniacid){ $dis = [ 'order_id' => $order_id, 'status' => 1 ]; $info = $this->where($dis)->select()->toArray(); $member_model = new Member(); if(!empty($info)){ foreach ($info as $value){ $integral = $value['integral_add']; $member_info = $member_model->getMemberInfo(['user_id'=>$user_id,'uniacid'=>$uniacid]); $update = [ //修改状态 'status' => 2, //当前 'integral_before' => intval($member_info['integral']), //修改后对 'integral_after' => intval($member_info['integral']+$integral), ]; $this->integralUpdate(['id'=>$value['id']],$update); if(is_numeric($integral)&&$integral>0){ $dis = [ 'user_id' => $user_id ]; $member_model->incDecGrowth($dis,$integral,'integral'); } } } return true; } }