| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385 |
- package com.crm.custom.controller;
- import com.crm.custom.service.CustomInfoService;
- import com.crm.login.rely.backend.controller.BaseLoginController;
- import com.crm.rely.backend.core.constant.*;
- import com.crm.rely.backend.core.dto.base.BaseResultDto;
- import com.crm.rely.backend.model.dto.custom.InfoDto;
- import com.crm.rely.backend.model.dto.custom.login.CustomInfoAmountDto;
- import com.crm.rely.backend.model.dto.user.info.UserInfoDto;
- import com.crm.rely.backend.model.entity.custom.info.*;
- import com.crm.rely.backend.model.pojo.table.CustomInfoTable;
- import com.crm.rely.backend.service.EmailService;
- import com.crm.rely.backend.service.SysCountryService;
- import com.crm.rely.backend.util.GetIpAndMac;
- import com.crm.rely.backend.util.MD5Util;
- import org.springframework.beans.BeanUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.validation.annotation.Validated;
- import org.springframework.web.bind.annotation.PostMapping;
- import org.springframework.web.bind.annotation.RequestBody;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RestController;
- import org.springframework.web.servlet.LocaleResolver;
- import org.springframework.web.servlet.support.RequestContextUtils;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import java.math.BigDecimal;
- import java.util.Date;
- import java.util.Locale;
- /**
- * @author: houn
- */
- @RestController
- @RequestMapping("/custom")
- public class CustomController extends BaseLoginController {
- @Autowired
- private CustomInfoService customInfoService;
- @Autowired
- private EmailService emailService;
- @Autowired
- private SysCountryService sysCountryService;
- /**
- * 注册用户 发送短信验证码
- *
- * @param entity
- * @return
- * @throws Exception
- */
- @PostMapping("/register/send/code")
- public BaseResultDto registerSendCode(@RequestBody @Validated CustomInfoRegisterSendEmailCodeEntity entity, HttpServletRequest req) throws Exception {
- entity.setIp(GetIpAndMac.getIp(req));
- entity.setTime(new Date());
- customInfoService.registerSendEmailCode(entity);
- return BaseResultDto.success(Constants.SEND_SUCCESS);
- }
- /**
- * 注册用户
- *
- * @param entity
- * @return
- * @throws Exception
- */
- @PostMapping("/register")
- public BaseResultDto add(@RequestBody @Validated CustomInfoRegisterEntity entity) throws Exception {
- entity.setEmail(entity.getEmail().toLowerCase());
- //密码
- entity.setPassword(MD5Util.getMD5(entity.getPassword()));
- entity.setValid(1);
- entity.setStatus(StatusConstants.PASSED_STATUS);
- //entity.setPosition(CustomConstants.POSITION1);
- customInfoService.add(entity);
- return BaseResultDto.success(Constants.REGISTER_SUCCESS);
- }
- @PostMapping("/apply/real")
- public BaseResultDto applyReal(CustomInfoEntity infoEntity, HttpServletRequest httpServletRequest) throws Exception {
- Runnable runnable = () -> {
- CustomApplyRealEntity customApplyRealEntity = new CustomApplyRealEntity();
- customApplyRealEntity.setCustomId(infoEntity.getId());
- customApplyRealEntity.setApplyRealTime(new Date());
- CustomInfoTable customInfoTable = customInfoService.applyReal(customApplyRealEntity);
- infoEntity.setApplyRealStatus(customInfoTable.getApplyRealStatus());
- infoEntity.setStatus(customInfoTable.getStatus());
- infoEntity.setApplyRealTime(customInfoTable.getApplyRealTime());
- try {
- super.saveLoginInfo(infoEntity);
- } catch (Exception e) {
- e.printStackTrace();
- }
- };
- redisService.tryLock(infoEntity, httpServletRequest, runnable, "no_repeat_submit_error");
- return BaseResultDto.success();
- }
- /**
- * 修改邮件发送验证码
- *
- * @param entity
- * @param req
- * @return
- * @throws Exception
- */
- @PostMapping("/update/email/send/code")
- public BaseResultDto registerSendCode(@RequestBody @Validated CustomInfoUpdateEmailSendEmailCodeEntity entity, HttpServletRequest req, CustomInfoEntity infoEntity) throws Exception {
- if (!entity.getOldEmail().equals(infoEntity.getEmail())) {
- return BaseResultDto.error(Constants.LOGIN_EMAIL_ERROR);
- }
- entity.setCountry(infoEntity.getCountry());
- entity.setIp(GetIpAndMac.getIp(req));
- entity.setTime(new Date());
- customInfoService.updateEmailSendEmailCode(entity);
- return BaseResultDto.success(Constants.SEND_SUCCESS);
- }
- @PostMapping("/update/email")
- public BaseResultDto updateEmail(@RequestBody @Validated CustomInfoUpdateEmailEntity entity, HttpServletRequest req, CustomInfoEntity infoEntity) throws Exception {
- entity.setEmail(entity.getEmail().toLowerCase());
- entity.setOldEmail(entity.getOldEmail().toLowerCase());
- if (!entity.getOldEmail().equals(infoEntity.getEmail())) {
- return BaseResultDto.error(Constants.LOGIN_EMAIL_ERROR);
- }
- entity.setCustomId(infoEntity.getId());
- entity.setModifyIp(GetIpAndMac.getIp(req));
- entity.setModifyTime(new Date());
- entity.setModifyUser(infoEntity.getId());
- customInfoService.updateEmail(entity);
- //更新缓存上的信息
- infoEntity.setEmail(entity.getEmail());
- if (infoEntity.getIbInfo() != null) {
- infoEntity.getIbInfo().setEmail(entity.getEmail());
- }
- super.saveLoginInfo(infoEntity);
- return BaseResultDto.success(Constants.REGISTER_SUCCESS);
- }
- /**
- * 登录信息
- *
- * @param entity
- * @return
- * @throws Exception
- */
- @PostMapping("/login")
- public BaseResultDto login(@RequestBody @Validated CustomInfoLoginEntity entity, HttpServletRequest request, HttpServletResponse response) throws Exception {
- entity.setLoginName(entity.getLoginName().toLowerCase());
- //密码处理为
- entity.setPassword(MD5Util.getMD5(entity.getPassword()));
- /**
- * 处理登录时间 登录ip 登录地区
- */
- entity.setIp(sysCountryService.getAdderByIp(request));
- entity.setAddress(entity.getIp());
- entity.setTime(new Date());
- CustomInfoEntity infoEntity = customInfoService.login(entity);
- infoEntity.setPrefix(PrefixEnum.PREFIX_CUSTOM);
- String accessToken = super.login(infoEntity, entity.getSource());
- setLocaleResolver(infoEntity.getLang(), request, response);
- return BaseResultDto.success(Constants.LOGIN_SUCCESS, accessToken);
- }
- @PostMapping("/get/language")
- public BaseResultDto getLanguage(HttpServletRequest request) throws Exception {
- String language = request.getHeader("accept-language");
- return BaseResultDto.success(language);
- }
- /**
- * 退出登录
- *
- * @param httpServletRequest
- * @throws Exception
- */
- @Override
- @PostMapping("/logout")
- public BaseResultDto logout(HttpServletRequest httpServletRequest) throws Exception {
- return super.logout(httpServletRequest);
- }
- /**
- * 获取登录信息
- *
- * @param entity
- * @return
- * @throws Exception
- */
- @PostMapping("/info")
- public BaseResultDto info(CustomInfoEntity entity) throws Exception {
- InfoDto infoDto = new InfoDto();
- BeanUtils.copyProperties(entity, infoDto);
- if (entity.getIbInfo() != null) {
- UserInfoDto ibInfoDto = new UserInfoDto();
- BeanUtils.copyProperties(entity.getIbInfo(), ibInfoDto);
- infoDto.setIbInfo(ibInfoDto);
- } else {
- infoDto.setIbInfo(null);
- }
- //infoDto.setPosition(customInfoService.getPosition(entity.getId()));
- return BaseResultDto.success(infoDto);
- }
- @PostMapping("/get/amount")
- public BaseResultDto getAmount(CustomInfoEntity entity) throws Exception {
- CustomInfoAmountDto customInfoAmountDto = new CustomInfoAmountDto();
- CustomInfoTable customInfoTable = customInfoService.getById(entity.getId());
- BeanUtils.copyProperties(customInfoTable, customInfoAmountDto);
- return BaseResultDto.success(customInfoAmountDto);
- }
- /**
- * 修改用户信息,
- *
- * @param entity
- * @return
- * @throws Exception
- */
- @PostMapping("/update/info")
- public BaseResultDto update(@RequestBody @Validated CustomInfoUpdateEntity entity, HttpServletRequest req, CustomInfoEntity infoEntity) throws Exception {
- entity.setId(infoEntity.getId());
- entity.setModifyIp(sysCountryService.getAdderByIp(req));
- entity.setModifyTime(new Date());
- entity.setValid(1);
- customInfoService.update(entity);
- infoEntity.setValid(entity.getValid());
- //更新redis数据
- BeanUtils.copyProperties(entity, infoEntity);
- saveLoginInfo(infoEntity);
- return BaseResultDto.success();
- }
- @PostMapping("/manage/update/info")
- @FeignClientAnnotation
- public BaseResultDto manageUpdate(@RequestBody @Validated CustomInfoUpdateEntity entity, HttpServletRequest req) throws Exception {
- entity.setModifyIp(sysCountryService.getAdderByIp(req));
- entity.setModifyTime(new Date());
- entity.setValid(1);
- customInfoService.update(entity);
- CustomInfoEntity customInfoEntity =
- redisService.getEntity(PrefixEnum.PREFIX_CUSTOM.getCode() + entity.getId(), CustomInfoEntity.class);
- if (customInfoEntity != null) {
- BeanUtils.copyProperties(entity, customInfoEntity);
- saveLoginInfo(customInfoEntity);
- }
- return BaseResultDto.success();
- }
- /**
- * 登录修改密码
- *
- * @param entity
- * @param req
- * @param infoEntity
- * @return
- */
- @PostMapping("/update/login/password")
- public BaseResultDto updatePassword(@RequestBody @Validated CustomUpdateLoginPasswordEntity entity, HttpServletRequest req, CustomInfoEntity infoEntity) throws Exception {
- entity.setId(infoEntity.getId());
- if (entity.getNewPassword().equals(entity.getOldPassword())) {
- return BaseResultDto.error(Constants.PASSWORD_NEW_AND_OLD_IDENTICAL_ERROR);
- }
- entity.setModifyIp(sysCountryService.getAdderByIp(GetIpAndMac.getIp(req)));
- entity.setModifyTime(new Date());
- entity.setModifyUser(infoEntity.getId());
- entity.setNewPassword(MD5Util.getMD5(entity.getNewPassword()));
- entity.setOldPassword(MD5Util.getMD5(entity.getOldPassword()));
- customInfoService.updatePassword(entity);
- return BaseResultDto.success(Constants.UPDATE_SUCCESS);
- }
- /**
- * 未登录修改密码发送邮件
- *
- * @param entity
- * @param req
- * @return
- */
- @PostMapping("/update/password/send/email")
- public BaseResultDto updatePasswordSendEmail(@RequestBody @Validated CustomUpdatePasswordSendEmailEntity entity, HttpServletRequest req) throws Exception {
- String ip = GetIpAndMac.getIp(req);
- emailService.validate(ip, EmailSendEnum.FORGET_PASSWORD.getCode(), ip);
- entity.setIp(ip);
- entity.setTime(new Date());
- customInfoService.updatePasswordSendEmail(entity);
- return BaseResultDto.success(Constants.SEND_SUCCESS);
- }
- /**
- * 未登录根据邮件修改密码
- *
- * @param entity
- * @param req
- * @return
- */
- @PostMapping("/update/email/password")
- public BaseResultDto updatePassword(@RequestBody @Validated CustomUpdateEmailPasswordEntity entity, HttpServletRequest req) throws Exception {
- entity.setModifyIp(GetIpAndMac.getIp(req));
- entity.setModifyTime(new Date());
- entity.setPassword(MD5Util.getMD5(entity.getPassword()));
- customInfoService.updatePassword(entity);
- return BaseResultDto.success(Constants.SUCCESS);
- }
- @PostMapping("/manage/update/agent")
- @FeignClientAnnotation
- public BaseResultDto manageUpdateAgentId(@RequestBody @Validated CustomInfoUpdateAgentEntity entity) throws Exception {
- customInfoService.updateAgentId(entity);
- return BaseResultDto.success();
- }
- private void setLocaleResolver(String lang, HttpServletRequest request, HttpServletResponse response) {
- LocaleResolver localeResolver = RequestContextUtils.getLocaleResolver(request);
- try {
- if ("cn".equals(lang)) {
- localeResolver.setLocale(request, response, new Locale("zh", "CN"));
- } else {
- localeResolver.setLocale(request, response, new Locale("en", "US"));
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- @RequestMapping("/get/balance")
- public BaseResultDto balance(CustomInfoEntity infoEntity) throws Exception {
- BigDecimal balance = customInfoService.getBalance(infoEntity.getId());
- return BaseResultDto.success(balance);
- }
- }
|