UserController.java 11 KB

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