liujie
2 天以前 81f6d10bb745825437e0145c6d27bc3468ee281c
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/UserInfoController.java
@@ -1,59 +1,35 @@
package com.stylefeng.guns.modular.api;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.stylefeng.guns.core.common.constant.JwtConstants;
import com.stylefeng.guns.core.util.ToolUtil;
import com.stylefeng.guns.modular.account.server.UserWithdrawalService;
import com.stylefeng.guns.modular.account.util.OssUploadUtil;
import com.stylefeng.guns.modular.cloudPayment.example.DepositExample;
import com.stylefeng.guns.modular.cloudPayment.req.DepositReq;
import com.stylefeng.guns.modular.enums.PaymentTypeEnum;
import com.stylefeng.guns.modular.system.model.Driver;
import com.stylefeng.guns.modular.system.model.DriverService;
import com.stylefeng.guns.modular.system.model.TDriverPromotionActivity;
import com.stylefeng.guns.modular.system.model.UserInfo;
import com.stylefeng.guns.modular.system.model.UserWithdrawal;
import com.stylefeng.guns.modular.system.service.IDriverService;
import com.stylefeng.guns.modular.system.service.ISmsrecordService;
import com.stylefeng.guns.modular.system.service.IUserInfoService;
import com.stylefeng.guns.modular.system.service.IVerifiedService;
import com.stylefeng.guns.modular.system.util.RedisUtil;
import com.stylefeng.guns.modular.system.service.*;
import com.stylefeng.guns.modular.system.util.ResultUtil;
import com.stylefeng.guns.modular.system.util.WeChatUtil;
import com.stylefeng.guns.modular.system.warpper.LoginWarpper;
import com.stylefeng.guns.modular.system.warpper.UserInfoWarpper;
import com.stylefeng.guns.modular.system.warpper.VerifiedWarpper;
import com.unionpay.upyzt.exception.UpyztException;
import com.unionpay.upyzt.resp.DepositResp;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.apache.shiro.codec.Base64;
import org.apache.commons.lang.time.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.*;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.io.*;
import java.net.URL;
import java.net.URLConnection;
import java.security.InvalidAlgorithmParameterException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.spec.AlgorithmParameterSpec;
import java.text.SimpleDateFormat;
import java.io.InputStream;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
@@ -63,30 +39,32 @@
@RestController
@RequestMapping("")
public class UserInfoController {
    @Autowired
    private IUserInfoService userInfoService;
    @Autowired
    private IVerifiedService verifiedService;
    @Autowired
    private ISmsrecordService smsrecordService;
    @Autowired
    private RedisUtil redisUtil;
    @Resource
    private RedisTemplate<String, Object> redisTemplate;
    @Autowired
    private WeChatUtil weChatUtil;
    @Autowired
    private IDriverService driverService;
    @Autowired
    private HttpServletRequest request;
    @Autowired
    private TDriverPromotionActivityService driverPromotionActivityService;
    /**
     * 获取短信验证码
     * @param phone
@@ -348,6 +326,47 @@
                return ResultUtil.tokenErr();
            }
            return userInfoService.bindingPhone(uid, phone, code,loginType);
        }catch (Exception e){
            e.printStackTrace();
            return ResultUtil.runErr();
        }
    }
    /**
     * 设置绑定司机
     * @param driverId
     * @param request
     * @return
     */
    @ResponseBody
    @PostMapping("/api/user/bindingDriver")
    @ApiOperation(value = "绑定司机", tags = {"用户端-登录"}, notes = "")
    @ApiImplicitParams({
            @ApiImplicitParam(value = "司机id", name = "driverId", required = true, dataType = "int"),
            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
    })
    public ResultUtil<LoginWarpper> bindingDriver(Integer driverId,HttpServletRequest request){
        try {
            Integer uid = userInfoService.getUserIdFormRedis(request);
            if(null == uid){
                return ResultUtil.tokenErr();
            }
            UserInfo userInfo = userInfoService.selectById(uid);
            // 是否需要绑定司机
            TDriverPromotionActivity tDriverPromotionActivity = driverPromotionActivityService.selectOne(new EntityWrapper<TDriverPromotionActivity>().eq("districtCode", userInfo.getRegistAreaCode()).ge("startTime", new Date()).lt("endTime", new Date()).last(" limit 1"));
            if(tDriverPromotionActivity!=null){
                if(userInfo.getBindDriverId()==null || userInfo.getBindExpireDate().getTime()<=System.currentTimeMillis()){
                    Integer bindingDays = tDriverPromotionActivity.getBindingDays();
                    // 当前时间+绑定天数
                    Date endTime = DateUtils.addDays(new Date(), bindingDays);
                    userInfo.setBindDriverId(driverId);
                    userInfo.setBindExpireDate(endTime);
                    userInfo.setBindDate(new Date());
                    userInfoService.updateById(userInfo);
                }
            }
            return ResultUtil.success();
        }catch (Exception e){
            e.printStackTrace();
            return ResultUtil.runErr();
@@ -659,9 +678,9 @@
    public ResultUtil freeze(Integer uid){
        try {
            UserInfo userInfo = userInfoService.selectById(uid);
            String value = redisUtil.getValue(userInfo.getPhone());
            redisUtil.remove(value);
            redisUtil.remove(userInfo.getPhone());
            String value = (String) redisTemplate.opsForValue().get(userInfo.getPhone());
            redisTemplate.delete(value);
            redisTemplate.delete(userInfo.getPhone());
            return ResultUtil.success();
        }catch (Exception e){
            e.printStackTrace();
@@ -689,7 +708,7 @@
            }
            String requestHeader = request.getHeader(JwtConstants.AUTH_HEADER);
            requestHeader = requestHeader.substring(requestHeader.indexOf(" ") + 1);
            String value = redisUtil.getValue("USER_" + uid);
            String value = (String) redisTemplate.opsForValue().get("USER_" + uid);
            Map<String, Object> map = new HashMap<>();
            map.put("match", requestHeader.equals(value) ? 1 : 2);
            return ResultUtil.success(map);
@@ -720,13 +739,13 @@
            userInfo.setState(2);
            userInfoService.updateById(userInfo);
            //开始验证当前账号是否在别处登录
            String value = redisUtil.getValue("USER_" + uid);
            if(ToolUtil.isNotEmpty(value)){//将另外设备上的强迫下线
            String value = (String) redisTemplate.opsForValue().get("USER_" + uid);
            if(ToolUtil.isNotEmpty(value)) {//将另外设备上的强迫下线
                //开始清除redis中无效的数据
                String key = redisUtil.getValue("USER_" + userInfo.getPhone());
                redisUtil.remove(key);//删除个人信息数据
                redisUtil.remove("USER_" + userInfo.getPhone());//删除后台冻结相关缓存
                redisUtil.remove("USER_" + uid);//清除存储的token
                String key = (String) redisTemplate.opsForValue().get("USER_" + userInfo.getPhone());
                redisTemplate.delete(key);//删除个人信息数据
                redisTemplate.delete("USER_" + userInfo.getPhone());//删除后台冻结相关缓存
                redisTemplate.delete("USER_" + uid);//清除存储的token
            }
            return ResultUtil.success();
        }catch (Exception e){