package com.dsh.account.controller; import com.alibaba.nacos.common.utils.Md5Utils; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.dsh.account.dto.BindDto; import com.dsh.account.dto.SelectDto; import com.dsh.account.dto.UpdateInfoDto; import com.dsh.account.entity.*; import com.dsh.account.model.*; import com.dsh.account.model.query.appUserQuery.QueryAppUser; import com.dsh.account.model.vo.QueryAppUserVO; import com.dsh.account.service.*; import com.dsh.account.util.PayMoneyUtil; import com.dsh.account.util.ResultUtil; import com.dsh.account.util.TokenUtil; import com.dsh.account.util.ToolUtil; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.PrintWriter; import java.util.*; import java.util.List; import java.util.stream.Collectors; /** * @author zhibing.pu * @date 2023/6/14 15:30 */ @RestController @RequestMapping("") public class AppUserController { @Autowired private TAppUserService appUserService; @Autowired private PayMoneyUtil payMoneyUtil; @Autowired private IVipPaymentService vipPaymentService; @Autowired private TokenUtil tokenUtil; @Autowired private TCourseInfoRecordService courseInfoRecordService; /** * 获取所有用户 */ @ResponseBody @PostMapping("/base/appUser/queryAppUserList") public List queryAppUserList(@RequestBody AppUserByNameAndPhoneDTO dto){ return appUserService.queryAPPUserByNameAndPhone(dto); } /** * 根据用户姓名和电话模糊查询 */ @ResponseBody @PostMapping("/base/appUser/queryAPPUserByNameAndPhone") public List queryAPPUserByNameAndPhone(@RequestBody AppUserByNameAndPhoneDTO dto){ return appUserService.queryAPPUserByNameAndPhone(dto); } /** * 根据用户id获取用户信息 * @param appUserId * @return */ @ResponseBody @PostMapping("/base/appUser/queryAppUser1") public TAppUser queryAppUser1(@RequestBody Integer appUserId){ TAppUser appUser = appUserService.getById(appUserId); return appUser; } /** * 冻结/解冻 1=解冻 2=冻结 */ @RequestMapping("/base/appUser/changeState") public Object changeState(@RequestBody AdvertisementChangeStateDTO dto){ return appUserService.changeState(dto); } /** * 后台添加 */ @RequestMapping("/base/appUser/addAppUser1") public Object addAppUser1(@RequestBody TAppUser query){ // 修改 if (query.getId()!=null){ TAppUser phone = appUserService.getOne(new QueryWrapper().eq("phone", query.getPhone()).ne("id",query.getId())); if (null != phone){ return 5001; } }else { TAppUser phone = appUserService.getOne(new QueryWrapper().eq("phone", query.getPhone())); if (null != phone){ return 5001; } } query.setIsVip(0); query.setInsertTime(new Date()); return appUserService.saveOrUpdate(query); } /** * 获取用户信息列表数据 */ @ResponseBody @RequestMapping("/base/appUser/listAll") public List listAll(@RequestBody QueryAppUser query){ List queryAppUserVOS = appUserService.listAll(query); ArrayList res = new ArrayList<>(); if (query.getUserIds()!=null && query.getUserIds().size()!=0){ List queryAppUserVOS1 = appUserService.listAll1(query); queryAppUserVOS.addAll(queryAppUserVOS1); } List collect = queryAppUserVOS.stream().distinct().collect(Collectors.toList()); for (QueryAppUserVO vo : collect) { // 会员到期时间小于当前时间或者会员到期时间为null 则会员过期 if (vo.getVipEndTime()!=null && vo.getVipEndTime().after(new Date())){ vo.setIsVip(1); }else{ vo.setIsVip(0); } if (query.getIsVip() != null && (!query.getIsVip().equals("")) ){ if (vo.getIsVip() == query.getIsVip()){ res.add(vo); } }else{ res.add(vo); } } return res; } /** * 根据用户手机号获取用户id */ @ResponseBody @GetMapping("/base/appUser/getAppUserByPhone/{phone}") public TAppUser getAppUserByPhone(@PathVariable("phone") String phone){ TAppUser appUser = appUserService.getOne(new QueryWrapper().eq("phone", phone)); return appUser; } @ResponseBody @PostMapping("/base/appUser/getSMSCode") @ApiOperation(value = "获取短信验证码", tags = {"APP-登录注册"}) @ApiImplicitParams({ @ApiImplicitParam(value = "类型(1:登录,2:注册,3:修改密码,4:忘记密码)", name = "type", dataType = "int", required = true), @ApiImplicitParam(value = "电话号码", name = "phone", dataType = "string", required = true) }) public ResultUtil getSMSCode(Integer type, String phone){ if(ToolUtil.isEmpty(phone)){ return ResultUtil.paranErr("phone"); } if(ToolUtil.isEmpty(type)){ return ResultUtil.paranErr("type"); } try { ResultUtil smsCode = appUserService.getSMSCode(type, phone); return smsCode; }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } @Autowired private TStudentService studentService; @ResponseBody @PostMapping("/base/appUser/logOff") @ApiOperation(value = "注销", tags = {"注销"}) @ApiImplicitParams({ @ApiImplicitParam(value = "账号id", name = "appId", dataType = "int", required = true) }) public ResultUtil logOff(Integer appId){ try { appUserService.removeById(appId); studentService.remove(new QueryWrapper().eq("appUserId",appId)); return ResultUtil.success("注销成功"); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } @ResponseBody @PostMapping("/base/appUser/addAppUser") @ApiOperation(value = "注册用户", tags = {"APP-登录注册"}) @ApiImplicitParams({ }) public ResultUtil addAppUser(AddAppUserVo addAppUserVo){ try { return appUserService.addAppUser(addAppUserVo); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } @ResponseBody @PostMapping("/base/appUser/loginPassword") @ApiOperation(value = "账号密码登录", tags = {"APP-登录注册"}) @ApiImplicitParams({ @ApiImplicitParam(value = "电话号码", name = "phone", dataType = "string", required = true), @ApiImplicitParam(value = "登录密码", name = "password", dataType = "string", required = true) }) public ResultUtil loginPassword(String phone, String password){ if(ToolUtil.isEmpty(phone)){ return ResultUtil.paranErr("phone"); } if(ToolUtil.isEmpty(password)){ return ResultUtil.paranErr("password"); } try { return appUserService.loginPassword(phone, password); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } @ResponseBody @PostMapping("/base/appUser/loginSMSCode") @ApiOperation(value = "短信验证码登录", tags = {"APP-登录注册"}) @ApiImplicitParams({ }) public ResultUtil loginSMSCode(LoginSMSCodeVo loginSMSCodeVo){ try { return appUserService.loginSMSCode(loginSMSCodeVo); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } @ResponseBody @PostMapping("/base/appUser/bind") @ApiOperation(value = "微信登录绑定手机号", tags = {"APP-登录注册"}) @ApiImplicitParams({ }) public ResultUtil bind(BindDto dto){ try { return appUserService.bind(dto); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } @ResponseBody @PostMapping("/base/appUser/loginWeChat") @ApiOperation(value = "微信登录", tags = {"APP-登录注册"}) @ApiImplicitParams({ }) public ResultUtil loginWeChat(LoginWeChatVo loginWeChatVo){ try { return appUserService.loginWechat(loginWeChatVo); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } @ResponseBody @PostMapping("/api/appUser/updateInfo") @ApiOperation(value = "修改个人信息", tags = {"APP-登录注册"}) @ApiImplicitParams({ }) public ResultUtil updateInfo(UpdateInfoDto dto){ try { Integer uid = tokenUtil.getUserIdFormRedis(); if(null == uid){ return ResultUtil.tokenErr(); } return appUserService.updateInfo(dto,uid); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } @ResponseBody @PostMapping("/base/appUser/updatePassword") @ApiOperation(value = "修改密码", tags = {"APP-登录注册"}) @ApiImplicitParams({ @ApiImplicitParam(value = "电话号码", name = "phone", dataType = "string", required = true), @ApiImplicitParam(value = "短信验证码", name = "code", dataType = "string", required = true), @ApiImplicitParam(value = "新密码", name = "password", dataType = "string", required = true) }) public ResultUtil updatePassword(String phone, String code, String password){ if(ToolUtil.isEmpty(phone)){ return ResultUtil.paranErr("phone"); } if(ToolUtil.isEmpty(code)){ return ResultUtil.paranErr("code"); } if(ToolUtil.isEmpty(password)){ return ResultUtil.paranErr("password"); } try { return appUserService.updatePassword(phone, code, password); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } @ResponseBody @PostMapping("/base/appUser/forgetPassword") @ApiOperation(value = "忘记密码", tags = {"APP-登录注册"}) @ApiImplicitParams({ @ApiImplicitParam(value = "电话号码", name = "phone", dataType = "string", required = true), @ApiImplicitParam(value = "短信验证码", name = "code", dataType = "string", required = true), @ApiImplicitParam(value = "新密码", name = "password", dataType = "string", required = true) }) public ResultUtil forgetPassword(String phone, String code, String password){ if(ToolUtil.isEmpty(phone)){ return ResultUtil.paranErr("phone"); } if(ToolUtil.isEmpty(code)){ return ResultUtil.paranErr("code"); } if(ToolUtil.isEmpty(password)){ return ResultUtil.paranErr("password"); } try { return appUserService.updatePassword(phone, code, password); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } @ResponseBody @PostMapping("/api/appUser/queryJoinPlayPai") @ApiOperation(value = "获取加入玩湃首页数据", tags = {"APP-加入玩湃"}) @ApiImplicitParams({ @ApiImplicitParam(value = "经度", name = "lon", dataType = "string", required = false), @ApiImplicitParam(value = "纬度", name = "lat", dataType = "string", required = false), @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil queryJoinPlayPai(String lon, String lat){ try { Integer uid = tokenUtil.getUserIdFormRedis(); if(null == uid){ return ResultUtil.tokenErr(); } JoinPlayPaiVo joinPlayPaiVo = appUserService.queryJoinPlayPai(uid, lon, lat); return ResultUtil.success(joinPlayPaiVo); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } @ResponseBody @PostMapping("/api/appUser/addVipPayment") @ApiOperation(value = "购买年度会员", tags = {"APP-成为会员"}) @ApiImplicitParams({ @ApiImplicitParam(value = "支付方式(1=微信,2=支付宝)", name = "payType", dataType = "int", required = true), @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil addVipPayment(Integer payType){ if(ToolUtil.isEmpty(payType)){ return ResultUtil.paranErr("payType"); } try { Integer uid = tokenUtil.getUserIdFormRedis(); if(null == uid){ return ResultUtil.tokenErr(); } return vipPaymentService.addVipPayment(uid, payType); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } /** * 购买年度会员支付微信回调 * @param request * @param response */ @ResponseBody @PostMapping("/base/appUser/addVipPaymentWeChatCallback") public void addVipPaymentWeChatCallback(HttpServletRequest request, HttpServletResponse response){ try { Map map = payMoneyUtil.weixinpayCallback(request); if(null != map){ String out_trade_no = map.get("out_trade_no"); String transaction_id = map.get("transaction_id"); String result = map.get("result"); ResultUtil resultUtil = vipPaymentService.addVipPaymentCallback(out_trade_no, transaction_id); if(resultUtil.getCode() == 200){ PrintWriter out = response.getWriter(); out.write(result); out.flush(); out.close(); } } }catch (Exception e){ e.printStackTrace(); } } /** * 购买年度会员支付支付宝回调 * @param request * @param response */ @ResponseBody @PostMapping("/base/appUser/addVipPaymentAliCallback") public void addVipPaymentAliCallback(HttpServletRequest request, HttpServletResponse response){ try { Map map = payMoneyUtil.alipayCallback(request); if(null != map){ String out_trade_no = map.get("out_trade_no"); String trade_no = map.get("trade_no"); ResultUtil resultUtil = vipPaymentService.addVipPaymentCallback(out_trade_no, trade_no); if(resultUtil.getCode() == 200){ PrintWriter out = response.getWriter(); out.write("success"); out.flush(); out.close(); } } }catch (Exception e){ e.printStackTrace(); } } /** * 根据用户id获取用户信息 * @param appUserId * @return */ @ResponseBody @PostMapping("/base/appUser/queryAppUser") public TAppUser queryAppUser(@RequestBody Integer appUserId){ try { TAppUser appUser = appUserService.getById(appUserId); return appUser; }catch (Exception e){ e.printStackTrace(); return null; } } @Autowired private UserIntegralChangesService userIntegralChangesService; /** * 修改用户信息 * @param appUser */ @ResponseBody @PostMapping("/base/appUser/updateAppUser") public void updateAppUser(@RequestBody TAppUser appUser){ try { appUserService.updateById(appUser); UserIntegralChanges userIntegralChanges = new UserIntegralChanges(); userIntegralChanges.setAppUserId(appUser.getId()); userIntegralChanges.setOldIntegral(appUser.getIntegral()+appUser.getPoints()); userIntegralChanges.setType(5); userIntegralChanges.setNewIntegral(appUser.getIntegral()); userIntegralChanges.setInsertTime(new Date()); userIntegralChanges.setCategory(2); userIntegralChangesService.save(userIntegralChanges); }catch (Exception e){ e.printStackTrace(); } } @PostMapping("/base/appUser/getAllUser") @ResponseBody public List getAllUser(){ try { return appUserService.list(); }catch (Exception e){ e.printStackTrace(); return new ArrayList<>(); } } @PostMapping("/base/appUser/queryByNamePhone") public List queryByNamePhone(@RequestBody QueryByNamePhone queryByNamePhone){ try { LambdaQueryWrapper tAppUserLambdaQueryWrapper = new LambdaQueryWrapper<>(); if(ToolUtil.isNotEmpty(queryByNamePhone.getName())){ tAppUserLambdaQueryWrapper.like(TAppUser::getName,queryByNamePhone.getName()); } if(ToolUtil.isNotEmpty(queryByNamePhone.getPhone())){ tAppUserLambdaQueryWrapper.like(TAppUser::getPhone,queryByNamePhone.getPhone()); } List list = appUserService.list(tAppUserLambdaQueryWrapper); return list; }catch (Exception e){ e.printStackTrace(); return new ArrayList<>(); } } @PostMapping("/base/appUser/queryById") public TAppUser queryById(@RequestBody Integer appUserId){ try { return appUserService.getById(appUserId); }catch (Exception e){ e.printStackTrace(); return new TAppUser(); } } /** * 根据名称模糊搜索用户 * @param name * @return */ @ResponseBody @PostMapping("/appUser/queryAppUserListByName") public List queryAppUserListByName(@RequestBody String name){ return appUserService.list(new QueryWrapper().eq("state", 1).like("name", name)); } @PostMapping("/appUser/addCourseInfoRecord") public Boolean addCourseInfoRecord(@RequestBody TCourseInfoRecord tCourseInfoRecord){ boolean save = courseInfoRecordService.save(tCourseInfoRecord); return save; } @PostMapping("/appUser/getSelects") public List getSelects(@RequestBody List studentIds){ List selectDtos = appUserService.getSelects(studentIds); System.out.println("=======selectDtos======>"+selectDtos); return selectDtos; } }