后台服务
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

729 lines
29 KiB

  1. package com.iformall.controller;
  2. import com.google.code.kaptcha.Producer;
  3. import com.iformall.annotation.AuthIgnore;
  4. import com.iformall.common.ErrorCode;
  5. import com.iformall.common.Result;
  6. import com.iformall.common.ResultData;
  7. import com.iformall.domain.po.*;
  8. import com.iformall.domain.po.sm.InviteCodeInfo;
  9. import com.iformall.enums.*;
  10. import com.iformall.service.*;
  11. import com.iformall.service.cuser.CUserServiceFactory;
  12. import com.iformall.service.sm.InviteCodeInfoService;
  13. import com.iformall.service.sm.InviteCodeService;
  14. import com.iformall.service.sm.UserConsumptionPackageService;
  15. import com.iformall.service.sm.UserCreateVideoNumService;
  16. import com.iformall.utils.Constant;
  17. import com.iformall.utils.PasswordHelper;
  18. import com.iformall.utils.RedisCacheUtils;
  19. import io.swagger.annotations.Api;
  20. import io.swagger.annotations.ApiImplicitParam;
  21. import io.swagger.annotations.ApiImplicitParams;
  22. import io.swagger.annotations.ApiOperation;
  23. import org.apache.commons.io.IOUtils;
  24. import org.apache.commons.lang3.StringUtils;
  25. import org.apache.shiro.SecurityUtils;
  26. import org.slf4j.Logger;
  27. import org.slf4j.LoggerFactory;
  28. import org.springframework.beans.factory.annotation.Autowired;
  29. import org.springframework.beans.factory.annotation.Qualifier;
  30. import org.springframework.data.redis.core.RedisTemplate;
  31. import org.springframework.web.bind.annotation.*;
  32. import javax.imageio.ImageIO;
  33. import javax.servlet.ServletOutputStream;
  34. import javax.servlet.http.HttpServletResponse;
  35. import java.awt.image.BufferedImage;
  36. import java.io.IOException;
  37. import java.util.HashMap;
  38. import java.util.List;
  39. import java.util.Map;
  40. @RestController
  41. @RequestMapping("/api/user")
  42. @Api(description = "用户登陆相关接口")
  43. public class WxUserGrantController extends BaseController {
  44. private final Logger logger = LoggerFactory.getLogger(this.getClass());
  45. @Autowired
  46. private Producer producer;
  47. @Autowired
  48. @Qualifier("objectCommonRedisTemplate")
  49. RedisTemplate<String, Object> redisTemplate;
  50. @Autowired
  51. private WxCUserBasicInfoService wxCUserBasicInfoService;
  52. @Autowired
  53. private WxMsgValidationcodeService wxMsgValidationcodeService;
  54. @Autowired
  55. WxLevelConfigService wxLevelConfigService;
  56. @Autowired
  57. WxCUserTagsService wxCUserTagsService;
  58. @Autowired
  59. WxAppinfoService wxAppinfoService;
  60. @Autowired
  61. WxAuthorizerInfoService wxAuthorizerInfoService;
  62. @Autowired
  63. WxMerchantService wxMerchantService;
  64. @Autowired
  65. WxCouponOrderService wxCouponOrderService;
  66. @Autowired
  67. WxCreditHistoryService wxCreditHistoryService;
  68. @Autowired
  69. WxMallService mallService;
  70. @Autowired
  71. private QrCodeService qrCodeService;
  72. @Autowired
  73. private UserCreateVideoNumService userCreateVideoNumService;
  74. @Autowired
  75. private InviteCodeService inviteCodeService;
  76. @Autowired
  77. private InviteCodeInfoService inviteCodeInfoService;
  78. @Autowired
  79. private UserConsumptionPackageService userConsumptionPackageService;
  80. @AuthIgnore
  81. @ApiOperation("验证码")
  82. @GetMapping("/captcha.jpg")
  83. public void captcha(HttpServletResponse response){
  84. logger.debug("[" + getIpAddr() + "] WxUserGrantController::captcha");
  85. response.setHeader("Cache-Control", "no-store, no-cache");
  86. response.setContentType("image/jpeg");
  87. //生成文字验证码
  88. String text = producer.createText();
  89. //生成图片验证码
  90. BufferedImage image = producer.createImage(text);
  91. //保存到redis
  92. String ipAddr = getIpAddr();
  93. String key = Constant.captchaPrev + ":" + ipAddr;
  94. RedisCacheUtils.cache(redisTemplate,key,text,60);
  95. ServletOutputStream out = null;
  96. try {
  97. out = response.getOutputStream();
  98. ImageIO.write(image, "jpg", out);
  99. } catch (IOException e) {
  100. e.printStackTrace();
  101. } finally {
  102. IOUtils.closeQuietly(out);
  103. }
  104. }
  105. /**
  106. * 用户登录
  107. *
  108. * @param map
  109. * @return
  110. */
  111. @AuthIgnore
  112. @PostMapping("/login")
  113. @ApiOperation(value = "用户登录", notes = "{\"phone\":\"string\",\"password\":\"string\",\"code\":\"string\"}")
  114. public ResultData loginByPhone(@RequestBody Map<String, String> map) {
  115. String ipAddr = getIpAddr();
  116. logger.debug("[" + ipAddr + "] WxUserGrantController::loginByPhone");
  117. String code = map.get("code");
  118. if(StringUtils.isBlank(code)){
  119. return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "请输入验证码");
  120. }
  121. String key = Constant.captchaPrev + ":" + ipAddr;
  122. String code1 = RedisCacheUtils.getCacheString(redisTemplate, key);
  123. if(StringUtils.isBlank(code1)){
  124. return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "验证码已过期");
  125. }
  126. if(!code1.equals(code)){
  127. return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "验证码不正确");
  128. }
  129. String phone = map.get("phone");
  130. String password = map.get("password");
  131. if(StringUtils.isBlank(phone) || StringUtils.isBlank(password)){
  132. return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "手机号或密码为空");
  133. }
  134. WxCUserBasicInfo basicInfo = wxCUserBasicInfoService.findInfoByPhone(getTenantInfo(), phone);
  135. if(basicInfo == null){
  136. return new ResultData(ErrorCode.USER_IS_EMPTY);
  137. }
  138. String encryptPassword = new PasswordHelper().encryptPassword(password);
  139. if(!encryptPassword.equals(basicInfo.getPassword())){
  140. return new ResultData(ErrorCode.USER_PASSWD_ERR.getCode(), "手机号或密码错误");
  141. }
  142. wxCUserBasicInfoService.handleLoginUser(basicInfo);
  143. Map resultMap = new HashMap();
  144. // resultMap.put("phone", basicInfo.getPhone());
  145. resultMap.put("token", basicInfo.getToken());
  146. return new ResultData(resultMap);
  147. }
  148. @AuthIgnore
  149. @PostMapping("/loginByEmail")
  150. @ApiOperation(value = "用户登录", notes = "{\"email\":\"string\",\"password\":\"string\",\"code\":\"string\"}")
  151. public ResultData loginByEmail(@RequestBody Map<String, String> map) {
  152. String ipAddr = getIpAddr();
  153. logger.debug("[" + ipAddr + "] WxUserGrantController::loginByEmail");
  154. String code = map.get("code");
  155. if(StringUtils.isBlank(code)){
  156. return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "请输入验证码");
  157. }
  158. String key = Constant.captchaPrev + ":" + ipAddr;
  159. String code1 = RedisCacheUtils.getCacheString(redisTemplate, key);
  160. if(StringUtils.isBlank(code1)){
  161. return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "验证码已过期");
  162. }
  163. if(!code1.equals(code)){
  164. return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "验证码不正确");
  165. }
  166. String email = map.get("email");
  167. String password = map.get("password");
  168. if(StringUtils.isBlank(email) || StringUtils.isBlank(password)){
  169. return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "邮箱或密码为空");
  170. }
  171. WxCUserBasicInfo basicInfo = wxCUserBasicInfoService.findInfoByEmail(getTenantInfo(), email);
  172. if(basicInfo == null){
  173. return new ResultData(ErrorCode.USER_IS_EMPTY);
  174. }
  175. if(EnumCUserBasicInfoStatus.NOT_ACTIVE.getCode().equals(basicInfo.getStatus())){
  176. return new ResultData(ErrorCode.MEMBER_IS_NOT_ACTIVE);
  177. }
  178. String encryptPassword = new PasswordHelper().encryptPassword(password);
  179. if(!encryptPassword.equals(basicInfo.getPassword())){
  180. return new ResultData(ErrorCode.USER_PASSWD_ERR.getCode(), "邮箱或密码错误");
  181. }
  182. wxCUserBasicInfoService.handleLoginUser(basicInfo);
  183. Map resultMap = new HashMap();
  184. // resultMap.put("phone", basicInfo.getPhone());
  185. resultMap.put("token", basicInfo.getToken());
  186. return new ResultData(resultMap);
  187. }
  188. @AuthIgnore
  189. @ApiOperation(value = "手机验证码登录", notes = "{\"phone\",\"string\",\"code\",\"string\"}")
  190. @PostMapping("/doLoginByPhone")
  191. public ResultData doLoginByPhone(@RequestBody Map<String, String> params, HttpServletResponse response) {
  192. String ipaddress = getIpAddr();
  193. logger.debug("[" + ipaddress + "] WxUserGrantController::doLoginByPhone");
  194. // String phone,String code,String pwd
  195. String phone = params.get("phone");
  196. String code = params.get("code");
  197. if (StringUtils.isBlank(phone)) {
  198. return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "手机号不能为空");
  199. }
  200. if (StringUtils.isBlank(code)) {
  201. return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "验证码不能为空");
  202. }
  203. // check 验证码正确
  204. boolean isValidCode = false;
  205. try {
  206. isValidCode = wxMsgValidationcodeService.checkCodeValid(phone,code);
  207. } catch (Exception e) {
  208. return new ResultData(Result.ERROR, e.getMessage());
  209. }
  210. if(isValidCode) {
  211. WxCUserBasicInfo basicInfo = wxCUserBasicInfoService.findInfoByPhone(getTenantInfo(), phone);
  212. if(basicInfo == null){
  213. basicInfo = wxCUserBasicInfoService.register(getTenantInfo(),phone,null);
  214. }
  215. wxCUserBasicInfoService.handleLoginUser(basicInfo);
  216. Map resultMap = new HashMap();
  217. // resultMap.put("phone", basicInfo.getPhone());
  218. resultMap.put("token", basicInfo.getToken());
  219. return new ResultData(resultMap);
  220. } else {
  221. return new ResultData(ErrorCode.MSG_VERIFY_CODE_NOT_FOUND);
  222. }
  223. }
  224. @PostMapping("/getBasicInfo")
  225. @ApiOperation(value = "用户登录", notes = "")
  226. public ResultData getBasicInfo() {
  227. logger.debug("[" + getIpAddr() + "] WxUserGrantController::getBasicInfo");
  228. WxCUserBasicInfo basicInfo = getCUser();
  229. basicInfo.setPassword(null);
  230. basicInfo.setIdCard(null);
  231. return new ResultData(basicInfo);
  232. }
  233. @AuthIgnore
  234. @ApiOperation("发送手机验证码")
  235. @GetMapping("sendLoginPhoneCode")
  236. @ApiImplicitParams({
  237. @ApiImplicitParam(name = "phone", value = "手机号", dataType = "String", paramType = "query", required = true)})
  238. public ResultData sendLoginPhoneCode(String phone) {
  239. logger.debug("[" + getIpAddr() + "] WxUserGrantController::sendlogincode");
  240. if(StringUtils.isBlank(phone)){
  241. return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "请输入手机号");
  242. }
  243. WxMsgValidationcode wxMsgValidationcode = new WxMsgValidationcode();
  244. wxMsgValidationcode.setPhone(phone);
  245. wxMsgValidationcode.setType(EnumMsgModel.VALIDATION_CODE.getCode());
  246. return wxMsgValidationcodeService.sendvalidationcode(wxMsgValidationcode);
  247. }
  248. /**
  249. * 需要效验用户及图片验证码
  250. * @param phone
  251. * @return
  252. */
  253. @AuthIgnore
  254. @ApiOperation("发送修改密码验证码")
  255. @GetMapping("sendPhoneCode")
  256. @ApiImplicitParams({
  257. @ApiImplicitParam(name = "phone", value = "手机号", dataType = "String", paramType = "query", required = true)})
  258. public ResultData sendPhoneCode(String phone,String code) {
  259. String ipAddr = getIpAddr();
  260. logger.debug("[" + ipAddr + "] WxUserGrantController::sendPhoneCode");
  261. if(StringUtils.isBlank(phone)){
  262. return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "请输入手机号");
  263. }
  264. if(StringUtils.isBlank(code)){
  265. return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "请输入验证码");
  266. }
  267. String key = Constant.captchaPrev + ":" + ipAddr;
  268. String code1 = RedisCacheUtils.getCacheString(redisTemplate, key);
  269. if(StringUtils.isBlank(code1)){
  270. return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "验证码已过期");
  271. }
  272. if(!code1.equals(code)){
  273. return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "验证码不正确");
  274. }
  275. WxCUserBasicInfo basicInfo = wxCUserBasicInfoService.findInfoByPhone(getTenantInfo(), phone);
  276. if(basicInfo == null){
  277. return new ResultData(ErrorCode.USER_IS_EMPTY.getCode(),"该手机号未注册");
  278. }
  279. WxMsgValidationcode wxMsgValidationcode = new WxMsgValidationcode();
  280. wxMsgValidationcode.setPhone(phone);
  281. wxMsgValidationcode.setType(EnumMsgModel.VALIDATION_CODE.getCode());
  282. return wxMsgValidationcodeService.sendvalidationcode(wxMsgValidationcode);
  283. }
  284. @AuthIgnore
  285. @ApiOperation(value = "手机号注册", notes = "{\"phone\",\"string\",\"code\",\"string\"}")
  286. @PostMapping("/doRegisterByPhone")
  287. public ResultData doRegisterByPhone(@RequestBody Map<String, String> params, HttpServletResponse response) {
  288. String ipaddress = getIpAddr();
  289. logger.debug("[" + ipaddress + "] WxUserGrantController::doRegisterByPhone");
  290. // String phone,String code,String pwd
  291. String phone = params.get("phone");
  292. String password = params.get("password");
  293. String code = params.get("code");
  294. if (StringUtils.isBlank(phone)) {
  295. return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "手机号不能为空");
  296. }
  297. if (StringUtils.isBlank(password)) {
  298. return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "密码不能为空");
  299. }
  300. // if (StringUtils.isBlank(code)) {
  301. // return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "验证码不能为空");
  302. // }
  303. WxCUserBasicInfo basicInfo = wxCUserBasicInfoService.findInfoByPhone(getTenantInfo(), phone);
  304. if(basicInfo != null){
  305. return new ResultData(ErrorCode.MEMBER_IS_FOUND);
  306. }
  307. // check 验证码正确
  308. // boolean isValidCode = false;
  309. // try {
  310. // isValidCode = wxMsgValidationcodeService.checkCodeValid(phone,code);
  311. // } catch (Exception e) {
  312. // return new ResultData(Result.ERROR, e.getMessage());
  313. // }
  314. // if(isValidCode) {
  315. basicInfo = wxCUserBasicInfoService.register(getTenantInfo(),phone,password);
  316. //TODO 用户
  317. // Boolean aBoolean = userCreateVideoNumService.initializationUserCreateVideoNum(basicInfo.getId());
  318. // if (!aBoolean){
  319. // return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "初始化创建视频时间表失败");
  320. // }
  321. return new ResultData();
  322. // } else {
  323. // return new ResultData(ErrorCode.MSG_VERIFY_CODE_NOT_FOUND);
  324. // }
  325. }
  326. @AuthIgnore
  327. @ApiOperation(value = "邮箱注册", notes = "{\"email\",\"string\",\"code\",\"string\"}")
  328. @PostMapping("/doRegisterByEmail")
  329. public ResultData doRegisterByEmail(@RequestBody Map<String, String> params, HttpServletResponse response) {
  330. String ipaddress = getIpAddr();
  331. logger.debug("[" + ipaddress + "] WxUserGrantController::doRegisterByEmail");
  332. // String name,String username,String password
  333. String name = params.get("name");
  334. String email = params.get("email");
  335. String password = params.get("password");
  336. String code = params.get("code");
  337. if (StringUtils.isBlank(email)) {
  338. return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "邮箱不能为空");
  339. }
  340. if (StringUtils.isBlank(password)) {
  341. return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "密码不能为空");
  342. }
  343. // if (StringUtils.isBlank(code)) {
  344. // return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "验证码不能为空");
  345. // }
  346. WxCUserBasicInfo basicInfo = wxCUserBasicInfoService.findInfoByEmail(getTenantInfo(), email);
  347. if(basicInfo != null){
  348. return new ResultData(ErrorCode.MEMBER_IS_FOUND);
  349. }
  350. // check 验证码正确
  351. // boolean isValidCode = false;
  352. // try {
  353. // isValidCode = wxMsgValidationcodeService.checkCodeValid(phone,code);
  354. // } catch (Exception e) {
  355. // return new ResultData(Result.ERROR, e.getMessage());
  356. // }
  357. // if(isValidCode) {
  358. basicInfo = wxCUserBasicInfoService.registerEmail(getTenantInfo(),email,password);
  359. //TODO 用户
  360. // Boolean aBoolean = userCreateVideoNumService.initializationUserCreateVideoNum(basicInfo.getId());
  361. // if (!aBoolean){
  362. // return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "初始化创建视频时间表失败");
  363. // }
  364. return new ResultData();
  365. // } else {
  366. // return new ResultData(ErrorCode.MSG_VERIFY_CODE_NOT_FOUND);
  367. // }
  368. }
  369. @AuthIgnore
  370. @ApiOperation(value = "发送激活邮件", notes = "{\"email\",\"string\",\"code\",\"string\"}")
  371. @PostMapping("/sendRegisterEmail")
  372. public ResultData sendRegisterEmail(@RequestBody Map<String, String> params, HttpServletResponse response) {
  373. String ipaddress = getIpAddr();
  374. logger.debug("[" + ipaddress + "] WxUserGrantController::sendRegisterEmail");
  375. // String name,String username,String password
  376. String email = params.get("email");
  377. String code = params.get("code");
  378. if (StringUtils.isBlank(email)) {
  379. return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "邮箱不能为空");
  380. }
  381. // if (StringUtils.isBlank(code)) {
  382. // return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "验证码不能为空");
  383. // }
  384. WxCUserBasicInfo basicInfo = wxCUserBasicInfoService.findInfoByEmail(getTenantInfo(), email);
  385. if(basicInfo == null){
  386. return new ResultData(ErrorCode.USER_IS_EMPTY);
  387. }
  388. if(!EnumCUserBasicInfoStatus.NOT_ACTIVE.getCode().equals(basicInfo.getStatus())){
  389. return new ResultData(ErrorCode.MEMBER_IS_ACTIVE);
  390. }
  391. // check 验证码正确
  392. // boolean isValidCode = false;
  393. // try {
  394. // isValidCode = wxMsgValidationcodeService.checkCodeValid(phone,code);
  395. // } catch (Exception e) {
  396. // return new ResultData(Result.ERROR, e.getMessage());
  397. // }
  398. // if(isValidCode) {
  399. wxCUserBasicInfoService.sendTicketEmail(basicInfo,EnumMsgModel.EMAIL_ACTIVATION);
  400. return new ResultData();
  401. // } else {
  402. // return new ResultData(ErrorCode.MSG_VERIFY_CODE_NOT_FOUND);
  403. // }
  404. }
  405. @AuthIgnore
  406. @ApiOperation(value = "激活", notes = "")
  407. @PostMapping("/doActivation")
  408. public ResultData doActivation(@RequestBody Map<String, String> params, HttpServletResponse response) {
  409. String ipaddress = getIpAddr();
  410. logger.debug("[" + ipaddress + "] WxUserGrantController::doActivation");
  411. //
  412. String ticket = params.get("ticket");
  413. String key = Constant.ticketPrev + ticket;
  414. Long userId = RedisCacheUtils.getCacheLong(redisTemplate, key);
  415. if(userId == null){
  416. return new ResultData(ErrorCode.NET_TICKET_INVALID.getCode(),"ticket已过期");
  417. }
  418. WxCUserBasicInfo basicInfo = wxCUserBasicInfoService.getById(userId);
  419. if(basicInfo == null){
  420. return new ResultData(ErrorCode.USER_IS_EMPTY);
  421. }
  422. // if(!EnumCUserBasicInfoStatus.NOT_ACTIVE.getCode().equals(basicInfo.getStatus())){
  423. // return new ResultData(ErrorCode.MEMBER_IS_ACTIVE);
  424. // }
  425. wxCUserBasicInfoService.handleLoginUser(basicInfo);
  426. Map resultMap = new HashMap();
  427. // resultMap.put("username", basicInfo.getEmail());
  428. resultMap.put("token", basicInfo.getToken());
  429. return new ResultData(resultMap);
  430. }
  431. @AuthIgnore
  432. @ApiOperation(value = "手机验证码修改密码", notes = "{\"phone\",\"string\",\"code\",\"string\"}")
  433. @PostMapping("/updPass")
  434. public ResultData updPass(@RequestBody Map<String, String> params, HttpServletResponse response) {
  435. String ipaddress = getIpAddr();
  436. logger.debug("[" + ipaddress + "] WxUserGrantController::doLoginByPhone");
  437. // String phone,String code,String pwd
  438. String phone = params.get("phone");
  439. String code = params.get("code");
  440. String pwd = params.get("pwd");
  441. if (StringUtils.isBlank(phone)) {
  442. return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "手机号不能为空");
  443. }
  444. if (StringUtils.isBlank(code)) {
  445. return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "验证码不能为空");
  446. }
  447. if (StringUtils.isBlank(pwd)) {
  448. return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "密码不能为空");
  449. }
  450. WxCUserBasicInfo basicInfo = wxCUserBasicInfoService.findInfoByPhone(getTenantInfo(), phone);
  451. if(basicInfo == null){
  452. return new ResultData(ErrorCode.USER_PHONE_IS_NOT_FOUND.getCode(), "手机号还未注册");
  453. }
  454. // check 验证码正确
  455. boolean isValidCode = false;
  456. try {
  457. isValidCode = wxMsgValidationcodeService.checkCodeValid(phone,code);
  458. } catch (Exception e) {
  459. return new ResultData(Result.ERROR, e.getMessage());
  460. }
  461. if(isValidCode) {
  462. String encryptPassword = new PasswordHelper().encryptPassword(pwd);
  463. WxCUserBasicInfo basicInfoUpd = new WxCUserBasicInfo();
  464. basicInfoUpd.setId(basicInfo.getId());
  465. basicInfoUpd.setPassword(encryptPassword);
  466. wxCUserBasicInfoService.update(basicInfoUpd);
  467. return new ResultData();
  468. } else {
  469. return new ResultData(ErrorCode.MSG_VERIFY_CODE_NOT_FOUND);
  470. }
  471. }
  472. @ApiOperation(value = "旧密码修改密码", notes = "{\"oldpwd\",\"string\",\"newpwd\",\"string\"}")
  473. @PostMapping("/oldUpdPass")
  474. public ResultData oldUpdPass(@RequestBody Map<String, String> params, HttpServletResponse response) {
  475. String ipaddress = getIpAddr();
  476. logger.debug("[" + ipaddress + "] WxUserGrantController::oldUpdPass");
  477. WxCUserBasicInfo basicInfo = getCUser();
  478. //
  479. String oldpwd = params.get("oldpwd");
  480. // String code = params.get("code");
  481. String newpwd = params.get("newpwd");
  482. if (StringUtils.isBlank(oldpwd)) {
  483. return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "旧密码不能为空");
  484. }
  485. // if (StringUtils.isBlank(code)) {
  486. // return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "验证码不能为空");
  487. // }
  488. if (StringUtils.isBlank(newpwd)) {
  489. return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "新密码不能为空");
  490. }
  491. String encryptPassword = new PasswordHelper().encryptPassword(oldpwd);
  492. if(!encryptPassword.equals(basicInfo.getPassword())){
  493. return new ResultData(ErrorCode.PASSWORD_ERROR.getCode(), "旧密码错误");
  494. }
  495. // check 验证码正确
  496. // boolean isValidCode = false;
  497. // try {
  498. // isValidCode = wxMsgValidationcodeService.checkCodeValid(phone,code);
  499. // } catch (Exception e) {
  500. // return new ResultData(Result.ERROR, e.getMessage());
  501. // }
  502. // if(isValidCode) {
  503. String newEncryptPassword = new PasswordHelper().encryptPassword(newpwd);
  504. WxCUserBasicInfo basicInfoUpd = new WxCUserBasicInfo();
  505. basicInfoUpd.setId(basicInfo.getId());
  506. basicInfoUpd.setPassword(newEncryptPassword);
  507. wxCUserBasicInfoService.update(basicInfoUpd);
  508. return new ResultData();
  509. // } else {
  510. // return new ResultData(ErrorCode.MSG_VERIFY_CODE_NOT_FOUND);
  511. // }
  512. }
  513. @AuthIgnore
  514. @ApiOperation(value = "发送修改密码邮件", notes = "{\"email\",\"string\",\"code\",\"string\"}")
  515. @PostMapping("/sendUpdPwdEmail")
  516. public ResultData sendUpdPwdEmail(@RequestBody Map<String, String> params, HttpServletResponse response) {
  517. String ipaddress = getIpAddr();
  518. logger.debug("[" + ipaddress + "] WxUserGrantController::sendUpdPwdEmail");
  519. // String name,String username,String password
  520. String email = params.get("email");
  521. String code = params.get("code");
  522. if (StringUtils.isBlank(email)) {
  523. return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "邮箱不能为空");
  524. }
  525. // if (StringUtils.isBlank(code)) {
  526. // return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "验证码不能为空");
  527. // }
  528. WxCUserBasicInfo basicInfo = wxCUserBasicInfoService.findInfoByEmail(getTenantInfo(), email);
  529. if(basicInfo == null){
  530. return new ResultData(ErrorCode.USER_IS_EMPTY);
  531. }
  532. if(EnumCUserBasicInfoStatus.NOT_ACTIVE.getCode().equals(basicInfo.getStatus())){
  533. return new ResultData(ErrorCode.MEMBER_IS_NOT_ACTIVE);
  534. }
  535. // check 验证码正确
  536. // boolean isValidCode = false;
  537. // try {
  538. // isValidCode = wxMsgValidationcodeService.checkCodeValid(phone,code);
  539. // } catch (Exception e) {
  540. // return new ResultData(Result.ERROR, e.getMessage());
  541. // }
  542. // if(isValidCode) {
  543. wxCUserBasicInfoService.sendTicketEmail(basicInfo,EnumMsgModel.EMAIL_UPD_PWD);
  544. return new ResultData();
  545. // } else {
  546. // return new ResultData(ErrorCode.MSG_VERIFY_CODE_NOT_FOUND);
  547. // }
  548. }
  549. @AuthIgnore
  550. @ApiOperation(value = "修改密码", notes = "{\"username\",\"string\",\"code\",\"string\"}")
  551. @PostMapping("/doUpdPass")
  552. public ResultData doUpdPass(@RequestBody Map<String, String> params, HttpServletResponse response) {
  553. String ipaddress = getIpAddr();
  554. logger.debug("[" + ipaddress + "] WxUserGrantController::doUpdPass");
  555. //
  556. String ticket = params.get("ticket");
  557. String key = Constant.ticketPrev + ticket;
  558. Long userId = RedisCacheUtils.getCacheLong(redisTemplate, key);
  559. if(userId == null){
  560. return new ResultData(ErrorCode.NET_TICKET_INVALID.getCode(),"已过期");
  561. }
  562. WxCUserBasicInfo basicInfo = wxCUserBasicInfoService.getById(userId);
  563. if(basicInfo == null){
  564. return new ResultData(ErrorCode.USER_IS_EMPTY);
  565. }
  566. String pwd = params.get("pwd");
  567. if (StringUtils.isBlank(pwd)) {
  568. return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "密码不能为空");
  569. }
  570. String encryptPassword = new PasswordHelper().encryptPassword(pwd);
  571. WxCUserBasicInfo basicInfoUpd = new WxCUserBasicInfo();
  572. basicInfoUpd.setId(basicInfo.getId());
  573. basicInfoUpd.setPassword(encryptPassword);
  574. wxCUserBasicInfoService.update(basicInfoUpd);
  575. return new ResultData();
  576. }
  577. @ApiOperation("登出")
  578. @GetMapping("/logout")
  579. public ResultData logout() {
  580. logger.debug("[" + getIpAddr() + "] WxUserGrantController::logout");
  581. wxCUserBasicInfoService.logout(getCUser());
  582. return new ResultData();
  583. }
  584. @ApiOperation("生成邀请码")
  585. @GetMapping("/inviteCode")
  586. public ResultData inviteCode() {
  587. logger.debug("[" + getIpAddr() + "] WxUserGrantController::inviteCode");
  588. String code = inviteCodeService.inviteCode(getMemberId());
  589. return new ResultData(code);
  590. }
  591. @ApiOperation("使用邀请码")
  592. @GetMapping("/useCode")
  593. @ApiImplicitParam(name = "code", value = "code", dataType = "String", paramType = "query", required = true)
  594. public ResultData useCode(String code) {
  595. logger.debug("[" + getIpAddr() + "] WxUserGrantController::useCode");
  596. return inviteCodeInfoService.useCode(getCUser(), code);
  597. }
  598. @ApiOperation("是否使用邀请码判断")
  599. @GetMapping("/isUse")
  600. public ResultData isUse() {
  601. logger.debug("[" + getIpAddr() + "] WxUserGrantController::isUse");
  602. Boolean use = inviteCodeInfoService.isUse(getCUser());
  603. return new ResultData(use);
  604. }
  605. @ApiOperation("查询哪些用户使用了当前账户的邀请码")
  606. @GetMapping("/getUseCodeUser")
  607. public ResultData getUseCodeUser() {
  608. logger.debug("[" + getIpAddr() + "] WxUserGrantController::getUseCodeUser");
  609. List<InviteCodeInfo> useCodeUser = inviteCodeInfoService.getUseCodeUser(getCUser());
  610. return new ResultData(useCodeUser);
  611. }
  612. @ApiOperation("编辑用户头像和名称")
  613. @PostMapping("/updUserInfo")
  614. public ResultData updUserInfo(@RequestBody WxCUserBasicInfo wxCUserBasicInfo) {
  615. logger.debug("[" + getIpAddr() + "] WxUserGrantController::updUserInfo");
  616. wxCUserBasicInfoService.updUserInfo(wxCUserBasicInfo,getMemberId());
  617. return new ResultData();
  618. }
  619. @ApiOperation("获取用户头像和名称")
  620. @GetMapping("/getUserInfo")
  621. public ResultData getUserInfo() {
  622. logger.debug("[" + getIpAddr() + "] WxUserGrantController::getUserInfo");
  623. WxCUserBasicInfo userBasicInfo = wxCUserBasicInfoService.getById(getMemberId());
  624. return new ResultData(userBasicInfo);
  625. }
  626. @AuthIgnore
  627. @ApiOperation("套餐档次查询")
  628. @GetMapping("/getPackageInfo")
  629. public ResultData getPackageInfo() {
  630. logger.debug("[" + getIpAddr() + "] WxUserGrantController::getPackageInfo");
  631. return new ResultData(userConsumptionPackageService.getPackageInfo());
  632. }
  633. }