UserController.java 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. package com.zhongzheng.controller.user;
  2. import cn.hutool.core.lang.Validator;
  3. import com.baomidou.mybatisplus.core.toolkit.StringUtils;
  4. import com.zhongzheng.common.annotation.Log;
  5. import com.zhongzheng.common.core.controller.BaseController;
  6. import com.zhongzheng.common.core.domain.AjaxResult;
  7. import com.zhongzheng.common.enums.BusinessType;
  8. import com.zhongzheng.common.utils.DateUtils;
  9. import com.zhongzheng.common.utils.ServletUtils;
  10. import com.zhongzheng.framework.web.service.WxLoginService;
  11. import com.zhongzheng.framework.web.service.WxTokenService;
  12. import com.zhongzheng.modules.system.domain.SysTenant;
  13. import com.zhongzheng.modules.system.service.ISysTenantService;
  14. import com.zhongzheng.modules.user.bo.*;
  15. import com.zhongzheng.modules.user.domain.UserWxFollow;
  16. import com.zhongzheng.modules.user.entity.ClientLoginUser;
  17. import com.zhongzheng.modules.user.service.IUserLoginKeyService;
  18. import com.zhongzheng.modules.user.service.IUserService;
  19. import com.zhongzheng.modules.user.service.IUserVisitLogService;
  20. import com.zhongzheng.modules.user.service.IUserWxFollowService;
  21. import com.zhongzheng.modules.user.vo.UserVo;
  22. import com.zhongzheng.modules.wx.bo.WxLoginBody;
  23. import io.swagger.annotations.Api;
  24. import io.swagger.annotations.ApiOperation;
  25. import lombok.RequiredArgsConstructor;
  26. import org.slf4j.Logger;
  27. import org.slf4j.LoggerFactory;
  28. import org.springframework.beans.factory.annotation.Autowired;
  29. import org.springframework.security.access.prepost.PreAuthorize;
  30. import org.springframework.web.bind.annotation.*;
  31. import java.util.HashMap;
  32. import java.util.Map;
  33. /**
  34. * 客户端用户Controller
  35. *
  36. * @author hjl
  37. * @date 2021-06-08
  38. */
  39. @Api(value = "用户控制器", tags = {"客户端用户管理"})
  40. @RequiredArgsConstructor(onConstructor_ = @Autowired)
  41. @RestController
  42. @RequestMapping("/app/user")
  43. public class UserController extends BaseController {
  44. private final IUserService iUserService;
  45. private final WxTokenService wxTokenService;
  46. private final IUserWxFollowService iUserWxFollowService;
  47. private final IUserVisitLogService iUserVisitLogService;
  48. private final WxLoginService wxLoginService;
  49. private final ISysTenantService sysTenantService;
  50. private final IUserLoginKeyService iUserLoginKeyService;
  51. private static Logger log = LoggerFactory.getLogger(UserController.class);
  52. /**
  53. * 修改客户端用户
  54. */
  55. @ApiOperation("修改客户端用户")
  56. @Log(title = "客户端用户", businessType = BusinessType.UPDATE)
  57. @PostMapping("/edit")
  58. public AjaxResult<Void> edit(@RequestBody UserEditBo bo) throws IllegalAccessException {
  59. ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
  60. bo.setUserId(loginUser.getUser().getUserId());
  61. return toAjax(iUserService.appUpdateByEditBo(bo) ? 1 : 0);
  62. }
  63. /**
  64. * 收藏数等数据
  65. */
  66. @ApiOperation("我的列表数据")
  67. @GetMapping("/infoAttached")
  68. public AjaxResult infoAttached() {
  69. ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
  70. Map<String,Object> map = new HashMap<>();
  71. //计划数量
  72. Long planSum = iUserService.planSum(loginUser.getUser().getUserId());
  73. //学时数量
  74. Long periodSum = iUserService.periodSum(loginUser.getUser().getUserId());
  75. //预约考试数量
  76. Long subscribeSum = iUserService.subscribeSum(loginUser.getUser().getUserId());
  77. //通知数量
  78. Long informSum = iUserService.informSum(loginUser.getUser().getUserId());
  79. //订单数量
  80. Long orderSum = iUserService.orderSum(loginUser.getUser().getUserId());
  81. map.put("planSum",planSum);
  82. map.put("periodSum",periodSum);
  83. map.put("subscribeSum",subscribeSum);
  84. map.put("informSum",informSum);
  85. map.put("orderSum",orderSum);
  86. return AjaxResult.success(map);
  87. }
  88. @ApiOperation("绑定身份证信息")
  89. @PostMapping("/bind_idcard")
  90. public AjaxResult<Void> bind_id(@RequestBody UserAppBindIdBo bo) {
  91. ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
  92. bo.setUserId(loginUser.getUser().getUserId());
  93. return toAjax(iUserService.bindIdCard(bo) ? 1 : 0);
  94. }
  95. /**
  96. * 获取用户信息
  97. *
  98. * @return 用户信息
  99. */
  100. @ApiOperation("登录用户信息")
  101. @GetMapping("getInfo")
  102. public AjaxResult<UserVo> getInfo(UserVisitLogAddBo bo)
  103. {
  104. ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
  105. UserVo vo = iUserService.queryById(loginUser.getUser().getUserId());
  106. UserWxFollow userWxFollow = iUserWxFollowService.queryByUnionId(loginUser.getUser().getUnionId());
  107. if(Validator.isNotEmpty(userWxFollow)){
  108. vo.setUserFollowWx(1);
  109. }
  110. vo.setNull();
  111. String tenantId = ServletUtils.getRequest().getHeader("TenantId");
  112. if (StringUtils.isNotBlank(tenantId)){
  113. SysTenant tenant = sysTenantService.getById(Long.valueOf(tenantId));
  114. vo.setEduPhone(tenant.getEduPhone());
  115. }
  116. bo.setUserId(loginUser.getUser().getUserId());
  117. iUserVisitLogService.insertByAddBo(bo);
  118. return AjaxResult.success(vo);
  119. }
  120. @ApiOperation("绑定新手机")
  121. @PostMapping("/bindNewTel")
  122. public AjaxResult<Void> bindNewTel(@RequestBody UserAppSmsLoginBo bo) {
  123. ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
  124. bo.setUserId(loginUser.getUser().getUserId());
  125. return toAjax(iUserService.bindNewTel(bo)? 1 : 0);
  126. }
  127. @ApiOperation("修改密码")
  128. @PostMapping("/updatePwd")
  129. public AjaxResult<Void> updatePwd(@RequestBody UserAppUpdatePwdBo bo) {
  130. ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
  131. bo.setUserId(loginUser.getUser().getUserId());
  132. return toAjax(iUserService.updatePwd(bo)? 1 : 0);
  133. }
  134. /**
  135. * 修改用户活动邀请码
  136. */
  137. @ApiOperation("修改用户活动邀请码")
  138. @PostMapping("/edit/shareActivityCode")
  139. public AjaxResult<Void> editShareActivityCode(@RequestBody UserEditBo bo){
  140. ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
  141. bo.setUserId(loginUser.getUser().getUserId());
  142. return toAjax(iUserService.editShareActivityCode(bo) ? 1 : 0);
  143. }
  144. @ApiOperation("检查密码修改时间")
  145. @PreAuthorize("@ss.hasPermi('system:user:list')")
  146. @GetMapping("/checkPwdTime")
  147. public AjaxResult<Boolean> checkPwdTime()
  148. {
  149. ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
  150. UserVo userVo = iUserService.queryById(loginUser.getUser().getUserId());
  151. boolean needUpdate = false;
  152. /* if(Validator.isNotEmpty(userVo.getPwdTime())&&(DateUtils.getNowTime().longValue()-userVo.getPwdTime().longValue())>90*24*3600){
  153. needUpdate = true;
  154. }*/
  155. return AjaxResult.success(needUpdate);
  156. }
  157. @ApiOperation("购买前获取公众号openid")
  158. @PostMapping("/gzh_bind")
  159. public AjaxResult gzh_bind(@RequestBody WxLoginBody loginBody)
  160. {
  161. ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
  162. loginBody.setUserId(loginUser.getUser().getUserId());
  163. wxLoginService.bindWxGzhUnionIdUser(loginBody);
  164. return AjaxResult.success();
  165. }
  166. @ApiOperation("检查是否绑定公众号")
  167. @PreAuthorize("@ss.hasPermi('system:user:list')")
  168. @GetMapping("/checkBindGzh")
  169. public AjaxResult<String> checkBindGzh()
  170. {
  171. ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
  172. UserVo userVo = iUserService.queryById(loginUser.getUser().getUserId());
  173. return AjaxResult.success("成功",userVo.getGzhOpenId());
  174. }
  175. @ApiOperation("把其他用户踢下线")
  176. @Log(title = "把其他用户踢下线", businessType = BusinessType.UPDATE)
  177. @PostMapping("/offline")
  178. public AjaxResult<Void> offline(){
  179. ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
  180. UserLoginKeyEditBo editBo = new UserLoginKeyEditBo();
  181. editBo.setUserId(loginUser.getUser().getUserId());
  182. editBo.setUserKey(loginUser.getToken());
  183. return toAjax(iUserLoginKeyService.offline(editBo) ? 1 : 0);
  184. }
  185. }