package com.zhongzheng.controller.user; import cn.hutool.core.lang.Validator; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.zhongzheng.common.annotation.Log; import com.zhongzheng.common.core.controller.BaseController; import com.zhongzheng.common.core.domain.AjaxResult; import com.zhongzheng.common.enums.BusinessType; import com.zhongzheng.common.utils.DateUtils; import com.zhongzheng.common.utils.ServletUtils; import com.zhongzheng.framework.web.service.WxLoginService; import com.zhongzheng.framework.web.service.WxTokenService; import com.zhongzheng.modules.system.domain.SysTenant; import com.zhongzheng.modules.system.service.ISysTenantService; import com.zhongzheng.modules.user.bo.*; import com.zhongzheng.modules.user.domain.UserWxFollow; import com.zhongzheng.modules.user.entity.ClientLoginUser; import com.zhongzheng.modules.user.service.IUserLoginKeyService; import com.zhongzheng.modules.user.service.IUserService; import com.zhongzheng.modules.user.service.IUserVisitLogService; import com.zhongzheng.modules.user.service.IUserWxFollowService; import com.zhongzheng.modules.user.vo.UserVo; import com.zhongzheng.modules.wx.bo.WxLoginBody; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import java.util.HashMap; import java.util.Map; /** * 客户端用户Controller * * @author hjl * @date 2021-06-08 */ @Api(value = "用户控制器", tags = {"客户端用户管理"}) @RequiredArgsConstructor(onConstructor_ = @Autowired) @RestController @RequestMapping("/app/user") public class UserController extends BaseController { private final IUserService iUserService; private final WxTokenService wxTokenService; private final IUserWxFollowService iUserWxFollowService; private final IUserVisitLogService iUserVisitLogService; private final WxLoginService wxLoginService; private final ISysTenantService sysTenantService; private final IUserLoginKeyService iUserLoginKeyService; private static Logger log = LoggerFactory.getLogger(UserController.class); /** * 修改客户端用户 */ @ApiOperation("修改客户端用户") @Log(title = "客户端用户", businessType = BusinessType.UPDATE) @PostMapping("/edit") public AjaxResult edit(@RequestBody UserEditBo bo) throws IllegalAccessException { ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest()); bo.setUserId(loginUser.getUser().getUserId()); return toAjax(iUserService.appUpdateByEditBo(bo) ? 1 : 0); } /** * 收藏数等数据 */ @ApiOperation("我的列表数据") @GetMapping("/infoAttached") public AjaxResult infoAttached() { ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest()); Map map = new HashMap<>(); //计划数量 Long planSum = iUserService.planSum(loginUser.getUser().getUserId()); //学时数量 Long periodSum = iUserService.periodSum(loginUser.getUser().getUserId()); //预约考试数量 Long subscribeSum = iUserService.subscribeSum(loginUser.getUser().getUserId()); //通知数量 Long informSum = iUserService.informSum(loginUser.getUser().getUserId()); //订单数量 Long orderSum = iUserService.orderSum(loginUser.getUser().getUserId()); map.put("planSum",planSum); map.put("periodSum",periodSum); map.put("subscribeSum",subscribeSum); map.put("informSum",informSum); map.put("orderSum",orderSum); return AjaxResult.success(map); } @ApiOperation("绑定身份证信息") @PostMapping("/bind_idcard") public AjaxResult bind_id(@RequestBody UserAppBindIdBo bo) { ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest()); bo.setUserId(loginUser.getUser().getUserId()); return toAjax(iUserService.bindIdCard(bo) ? 1 : 0); } /** * 获取用户信息 * * @return 用户信息 */ @ApiOperation("登录用户信息") @GetMapping("getInfo") public AjaxResult getInfo(UserVisitLogAddBo bo) { ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest()); UserVo vo = iUserService.queryById(loginUser.getUser().getUserId()); UserWxFollow userWxFollow = iUserWxFollowService.queryByUnionId(loginUser.getUser().getUnionId()); if(Validator.isNotEmpty(userWxFollow)){ vo.setUserFollowWx(1); } vo.setNull(); String tenantId = ServletUtils.getRequest().getHeader("TenantId"); if (StringUtils.isNotBlank(tenantId)){ SysTenant tenant = sysTenantService.getById(Long.valueOf(tenantId)); vo.setEduPhone(tenant.getEduPhone()); } bo.setUserId(loginUser.getUser().getUserId()); iUserVisitLogService.insertByAddBo(bo); return AjaxResult.success(vo); } @ApiOperation("绑定新手机") @PostMapping("/bindNewTel") public AjaxResult bindNewTel(@RequestBody UserAppSmsLoginBo bo) { ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest()); bo.setUserId(loginUser.getUser().getUserId()); return toAjax(iUserService.bindNewTel(bo)? 1 : 0); } @ApiOperation("修改密码") @PostMapping("/updatePwd") public AjaxResult updatePwd(@RequestBody UserAppUpdatePwdBo bo) { ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest()); bo.setUserId(loginUser.getUser().getUserId()); return toAjax(iUserService.updatePwd(bo)? 1 : 0); } /** * 修改用户活动邀请码 */ @ApiOperation("修改用户活动邀请码") @PostMapping("/edit/shareActivityCode") public AjaxResult editShareActivityCode(@RequestBody UserEditBo bo){ ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest()); bo.setUserId(loginUser.getUser().getUserId()); return toAjax(iUserService.editShareActivityCode(bo) ? 1 : 0); } @ApiOperation("检查密码修改时间") @PreAuthorize("@ss.hasPermi('system:user:list')") @GetMapping("/checkPwdTime") public AjaxResult checkPwdTime() { ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest()); UserVo userVo = iUserService.queryById(loginUser.getUser().getUserId()); boolean needUpdate = false; /* if(Validator.isNotEmpty(userVo.getPwdTime())&&(DateUtils.getNowTime().longValue()-userVo.getPwdTime().longValue())>90*24*3600){ needUpdate = true; }*/ return AjaxResult.success(needUpdate); } @ApiOperation("购买前获取公众号openid") @PostMapping("/gzh_bind") public AjaxResult gzh_bind(@RequestBody WxLoginBody loginBody) { ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest()); loginBody.setUserId(loginUser.getUser().getUserId()); wxLoginService.bindWxGzhUnionIdUser(loginBody); return AjaxResult.success(); } @ApiOperation("检查是否绑定公众号") @PreAuthorize("@ss.hasPermi('system:user:list')") @GetMapping("/checkBindGzh") public AjaxResult checkBindGzh() { ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest()); UserVo userVo = iUserService.queryById(loginUser.getUser().getUserId()); return AjaxResult.success("成功",userVo.getGzhOpenId()); } @ApiOperation("把其他用户踢下线") @Log(title = "把其他用户踢下线", businessType = BusinessType.UPDATE) @PostMapping("/offline") public AjaxResult offline(){ ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest()); UserLoginKeyEditBo editBo = new UserLoginKeyEditBo(); editBo.setUserId(loginUser.getUser().getUserId()); editBo.setUserKey(loginUser.getToken()); return toAjax(iUserLoginKeyService.offline(editBo) ? 1 : 0); } }