OpenAppUserController.java 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  1. package com.goafanti.app.controller;
  2. import java.util.Calendar;
  3. import java.util.UUID;
  4. import javax.annotation.Resource;
  5. import javax.validation.Valid;
  6. import org.apache.commons.lang3.StringUtils;
  7. import org.springframework.validation.BindingResult;
  8. import org.springframework.web.bind.annotation.RequestMapping;
  9. import org.springframework.web.bind.annotation.RequestMethod;
  10. import org.springframework.web.bind.annotation.ResponseBody;
  11. import org.springframework.web.bind.annotation.RestController;
  12. import com.goafanti.achievement.service.AchievementInterestService;
  13. import com.goafanti.achievement.service.AchievementService;
  14. import com.goafanti.app.bo.ExpertsListBo;
  15. import com.goafanti.banners.service.BannersService;
  16. import com.goafanti.comment.bo.CommentResult;
  17. import com.goafanti.comment.service.CommentService;
  18. import com.goafanti.common.bo.Result;
  19. import com.goafanti.common.constant.AFTConstants;
  20. import com.goafanti.common.constant.ErrorConstants;
  21. import com.goafanti.common.controller.BaseApiController;
  22. import com.goafanti.common.enums.UserAuthentication;
  23. import com.goafanti.common.enums.UserFields;
  24. import com.goafanti.common.enums.UserLevel;
  25. import com.goafanti.common.model.User;
  26. import com.goafanti.common.utils.PasswordUtil;
  27. import com.goafanti.common.utils.TimeUtils;
  28. import com.goafanti.common.utils.VerifyCodeUtils;
  29. import com.goafanti.core.shiro.token.TokenManager;
  30. import com.goafanti.demand.service.DemandService;
  31. import com.goafanti.easemob.EasemobUtils;
  32. import com.goafanti.message.service.MessageService;
  33. import com.goafanti.news.service.NewsService;
  34. import com.goafanti.user.bo.InputUser;
  35. import com.goafanti.user.service.UserCareerService;
  36. import com.goafanti.user.service.UserIdentityService;
  37. import com.goafanti.user.service.UserInterestService;
  38. import com.goafanti.user.service.UserService;
  39. @RestController
  40. @RequestMapping(value = "/open/app/user")
  41. public class OpenAppUserController extends BaseApiController {
  42. @Resource
  43. private UserService userServiceImpl;
  44. @Resource
  45. private MessageService messageService;
  46. @Resource
  47. private CommentService commentService;
  48. @Resource
  49. private EasemobUtils easemobUtils;
  50. @Resource
  51. private BannersService bannersService;
  52. @Resource
  53. private NewsService newsService;
  54. @Resource
  55. private AchievementService achievementService;
  56. @Resource
  57. private DemandService demandService;
  58. @Resource
  59. private UserCareerService userCareerService;
  60. @Resource
  61. private UserInterestService userInterestService;
  62. @Resource
  63. private UserIdentityService userIdentityService;
  64. @Resource
  65. private AchievementInterestService achievementInterestService;
  66. @Resource
  67. private UserService userService;
  68. @Resource(name = "passwordUtil")
  69. private PasswordUtil passwordUtil;
  70. /**
  71. * 成果详情
  72. * @param id
  73. * @return
  74. */
  75. @RequestMapping(value = "/achievementDetail", method = RequestMethod.GET)
  76. private Result userDetail(String id ) {
  77. Result res = new Result();
  78. if (StringUtils.isBlank(id)) {
  79. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"成果必须指定","成果"));
  80. return res;
  81. }
  82. res.setData(achievementService.selectAppUserOwnerDetail(id));
  83. return res;
  84. }
  85. /**
  86. * 需求详情
  87. */
  88. @RequestMapping(value = "/demandDetail", method = RequestMethod.GET)
  89. public Result DemandDetail(String id ) {
  90. Result res = new Result();
  91. if (StringUtils.isBlank(id)) {
  92. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"需求必须指定","需求"));
  93. return res;
  94. }
  95. res.setData(demandService.selectAppDemandDetail( id));
  96. return res;
  97. }
  98. /**
  99. * 专家、顾问详情
  100. */
  101. @RequestMapping(value = "/expertsDetail", method = RequestMethod.GET)
  102. public Result expertsDetail(String id ) {
  103. Result res = new Result();
  104. if (StringUtils.isBlank(id)) {
  105. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"id必须指定","id"));
  106. return res;
  107. }
  108. res.setData(userIdentityService.selectExpertsDetail( id));
  109. return res;
  110. }
  111. /**
  112. * 专家、顾问评价
  113. */
  114. @RequestMapping(value = "/expertsComment", method = RequestMethod.GET)
  115. public Result expertsComment(String id ,Integer pageNo,Integer pageSize) {
  116. Result res = new Result();
  117. if (StringUtils.isBlank(id)) {
  118. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"id必须指定","id"));
  119. return res;
  120. }
  121. CommentResult commentResult=new CommentResult();
  122. ExpertsListBo e=userIdentityService.selectExpertsDetail( id);
  123. commentResult.setNegativeCommentCount(e.getInferior());
  124. commentResult.setOrdinaryCommentCount(e.getGeneral());
  125. commentResult.setPositiveCommentCount(e.getFavorable());
  126. commentResult.setTotalCommentCount(e.getCommentCount());
  127. commentResult.setComments(commentService.selectExpertsComment(id, pageNo, pageSize));
  128. res.setData(commentResult);
  129. return res;
  130. }
  131. @RequestMapping(value = "/index", method = RequestMethod.GET)
  132. public Result index(){
  133. Result res = new Result();
  134. res.setData(messageService.selectMessageWithGroup());
  135. return res;
  136. }
  137. /**
  138. * APP用户注册检查
  139. *
  140. * @param user
  141. * @return
  142. */
  143. @RequestMapping(value = "/registerCheck", method = RequestMethod.GET)
  144. @ResponseBody
  145. public Result registerCheck(@Valid InputUser user, String mobileCode,String uuid,BindingResult bindingResult) {
  146. Result res = new Result();
  147. if (bindingResult.hasErrors()) {
  148. res.getError().add(buildErrorByMsg(bindingResult.getFieldError().getDefaultMessage(),
  149. UserFields.getFieldDesc(bindingResult.getFieldError().getField())));
  150. return res;
  151. }
  152. if (StringUtils.isBlank(user.getMobile())) {
  153. res.getError().add(buildError(ErrorConstants.USER_ALREADY_EXIST, "手机号码不能为空"));
  154. return res;
  155. }
  156. User u = userService.selectByMobieAndType(user.getMobile().trim(),null);
  157. if (null != u) {
  158. res.getError().add(buildError(ErrorConstants.USER_ALREADY_EXIST, "用户已存在"));
  159. }
  160. if (TokenManager.getSession().getAttribute(VerifyCodeUtils.M_CODE_TIME) ==null||!TokenManager.getSession().getAttribute(VerifyCodeUtils.M_CODE).equals(mobileCode.toLowerCase())) {
  161. res.getError().add(buildError(ErrorConstants.MCODE_ERROR, "手机验证码错误"));
  162. return res;
  163. }
  164. // 验证码15分钟有效
  165. if (TimeUtils.checkOverTime("register")) {
  166. res.getError().add(buildError(ErrorConstants.MCODE_OVERTIME_ERROR, "手机验证码超时失效"));
  167. return res;
  168. }
  169. return res.data(1);
  170. }
  171. /**
  172. * APP用户注册
  173. *
  174. * @param user
  175. * @return
  176. */
  177. @RequestMapping(value = "/appRegister", method = RequestMethod.POST)
  178. @ResponseBody
  179. public Result AppRegister(@Valid InputUser user, String mobileCode,String uuid,BindingResult bindingResult) {
  180. Result res = new Result();
  181. if (bindingResult.hasErrors()) {
  182. res.getError().add(buildErrorByMsg(bindingResult.getFieldError().getDefaultMessage(),
  183. UserFields.getFieldDesc(bindingResult.getFieldError().getField())));
  184. return res;
  185. }
  186. if (StringUtils.isBlank(user.getUnitName())) {
  187. res.getError().add(buildError(ErrorConstants.USER_ALREADY_EXIST, "用户名不能为空"));
  188. return res;
  189. }
  190. if (StringUtils.isBlank(user.getMobile())) {
  191. res.getError().add(buildError(ErrorConstants.USER_ALREADY_EXIST, "手机号码不能为空"));
  192. return res;
  193. }
  194. if (user.getBeInviteCode()!=null&&!user.getBeInviteCode().equals("")&&userService.checkeToInviteCode(user.getBeInviteCode())) {
  195. res.getError().add(buildError("邀请码不存在", "邀请码不存在"));
  196. return res;
  197. }
  198. if (res.getError().isEmpty()) {
  199. User us = new User();
  200. us.setId(UUID.randomUUID().toString());
  201. us.setMobile(user.getMobile().trim());
  202. us.setPassword(user.getPassword());
  203. Calendar now = Calendar.getInstance();
  204. now.set(Calendar.MILLISECOND, 0);
  205. us.setCreateTime(now.getTime());
  206. us.setUpdateTime(now.getTime());
  207. us.setPassword(passwordUtil.getEncryptPwd(us));
  208. us.setNickname(user.getUnitName());
  209. us.setBeInviteCode(user.getBeInviteCode());
  210. us.setSource(AFTConstants.USER_SOURCE_REGISTER);
  211. us.setStatus(AFTConstants.USER_STATUS_NORMAL);
  212. us.setShareType(AFTConstants.USER_SHARE_PUBLIC);
  213. us.setIdentifyName(StringUtils.isBlank(user.getUnitName())?"":user.getUnitName());
  214. us.setLvl(UserLevel.GENERAL.getCode());
  215. us.setAuthentication(UserAuthentication.UN_AUTHENTICATION.getCode());
  216. us.setTransferTime(now.getTime());
  217. userService.insertRegister(us,user.getUnitName(),user.getUsername());
  218. //获得抵用券
  219. userService.saveVoucher(us);
  220. }
  221. return res;
  222. }
  223. }