Ver Fonte

Merge remote-tracking branch 'origin/master'

wangming há 1 ano atrás
pai
commit
3dbc1d514e
20 ficheiros alterados com 582 adições e 12 exclusões
  1. 5 0
      business-common/src/main/java/com/rongwei/bscommon/sys/dao/ZhcxApiDao.java
  2. 4 0
      business-common/src/main/java/com/rongwei/bscommon/sys/dao/ZhcxRegisterDao.java
  3. 8 0
      business-common/src/main/java/com/rongwei/bscommon/sys/dao/ZhcxSupervisionCustomUserManageDao.java
  4. 19 0
      business-common/src/main/java/com/rongwei/bscommon/sys/feign/RwCommonServerFeignService.java
  5. 25 0
      business-common/src/main/java/com/rongwei/bscommon/sys/feign/RwCommonServerFeignServiceImpl.java
  6. 4 0
      business-common/src/main/java/com/rongwei/bscommon/sys/service/ZhcxApiService.java
  7. 17 0
      business-common/src/main/java/com/rongwei/bscommon/sys/service/ZhcxRegisterService.java
  8. 4 0
      business-common/src/main/java/com/rongwei/bscommon/sys/service/ZhcxSupervisionCustomUserManageService.java
  9. 45 4
      business-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ZhcxApiServiceImpl.java
  10. 1 0
      business-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ZhcxLoginServiceImpl.java
  11. 219 0
      business-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ZhcxRegisterServiceImpl.java
  12. 11 0
      business-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ZhcxSupervisionCustomUserManageServiceImpl.java
  13. 2 2
      business-common/src/main/java/com/rongwei/bscommon/sys/utils/CodeGeneration.java
  14. 33 0
      business-common/src/main/java/com/rongwei/bscommon/sys/utils/CxConstants.java
  15. 23 6
      business-common/src/main/java/com/rongwei/bscommon/sys/utils/HwSmsUtil.java
  16. 52 0
      business-common/src/main/java/com/rongwei/bscommon/sys/utils/PasswordGenerator.java
  17. 53 0
      business-common/src/main/java/com/rongwei/bscommon/sys/utils/SmsCodeGenerateUtils.java
  18. 1 0
      business-server/pom.xml
  19. 13 0
      business-server/src/main/java/com/rongwei/bsserver/controller/ZhcxApiController.java
  20. 43 0
      business-server/src/main/java/com/rongwei/bsserver/controller/ZhcxRegisterController.java

+ 5 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/dao/ZhcxApiDao.java

@@ -2,6 +2,8 @@ package com.rongwei.bscommon.sys.dao;
 
 import com.rongwei.bsentity.vo.ZhcxOutsideInspectionVo;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
 
 import java.util.List;
 import java.util.Map;
@@ -13,4 +15,7 @@ import java.util.Map;
 public interface ZhcxApiDao {
 
     List<ZhcxOutsideInspectionVo> getOutsideInspectionList(Map<String, Object> map);
+
+    @Select("select ALL_QUALIFIED from ZHCX_CHECK_BEFORE_QUALIFIED where DELETED = '0' AND PID =#{id}")
+    List<String> getCoreInspectionDetailList(@Param("id") String id);
 }

+ 4 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/dao/ZhcxRegisterDao.java

@@ -0,0 +1,4 @@
+package com.rongwei.bscommon.sys.dao;
+
+public interface ZhcxRegisterDao {
+}

+ 8 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/dao/ZhcxSupervisionCustomUserManageDao.java

@@ -2,6 +2,11 @@ package com.rongwei.bscommon.sys.dao;
 
 import com.rongwei.bsentity.domain.ZhcxSupervisionCustomUserManageDo;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.rongwei.rwadmincommon.system.domain.SysUserDo;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +18,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface ZhcxSupervisionCustomUserManageDao extends BaseMapper<ZhcxSupervisionCustomUserManageDo> {
 
+    @Select("SELECT su.* FROM SYS_ROLE sr JOIN SYS_USER_ROLE sur ON sr.ID = sur.ROLEID AND  sur.DELETED ='0'" +
+            " JOIN SYS_USER su ON sur.USERID = su.ID WHERE sr.CODE = #{code}")
+    List<SysUserDo> getUserByRoleCode(@Param("code") String code);
 }

+ 19 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/feign/RwCommonServerFeignService.java

@@ -0,0 +1,19 @@
+package com.rongwei.bscommon.sys.feign;
+
+import com.rongwei.rwcommon.base.R;
+import com.rongwei.rwcommon.vo.MailDo;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+/**
+ * @author zhuang
+ */
+@FeignClient(value = "rw-common-server", fallback = RwCommonServerFeignServiceImpl.class)
+public interface RwCommonServerFeignService {
+    @PostMapping("/mail/sendTextMail")
+    R sendTextMail(@RequestBody MailDo Mail);
+
+    @PostMapping("/mail/sendHtmlMail")
+    R sendHtmlMail(@RequestBody MailDo Mail);
+}

+ 25 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/feign/RwCommonServerFeignServiceImpl.java

@@ -0,0 +1,25 @@
+package com.rongwei.bscommon.sys.feign;
+
+import com.rongwei.rwcommon.base.R;
+import com.rongwei.rwcommon.vo.MailDo;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author zhuang
+ */
+@Slf4j
+@Component
+public class RwCommonServerFeignServiceImpl implements RwCommonServerFeignService{
+    @Override
+    public R sendTextMail(MailDo Mail) {
+        log.info("调用common发送邮件失败");
+        return null;
+    }
+
+    @Override
+    public R sendHtmlMail(MailDo Mail) {
+        log.info("调用common发送邮件失败");
+        return null;
+    }
+}

+ 4 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/service/ZhcxApiService.java

@@ -18,4 +18,8 @@ public interface ZhcxApiService {
     R getAccountInfoForForgotPassword(Map<String, Object> map);
 
     R resetPassword(Map<String, Object> map);
+
+    R sendReviewSupervisionMail(Map<String, Object> map);
+
+    R getCoreInspectionDetailList(Map<String, Object> map);
 }

+ 17 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/service/ZhcxRegisterService.java

@@ -0,0 +1,17 @@
+package com.rongwei.bscommon.sys.service;
+
+import com.alibaba.fastjson.JSONObject;
+import com.rongwei.bsentity.domain.ZhcxSupervisionCustomUserManageDo;
+import com.rongwei.rwcommon.base.R;
+
+import java.util.List;
+import java.util.Map;
+
+public interface ZhcxRegisterService {
+
+    R supervisionRegister(JSONObject jsonObject);
+
+    R sendCode(Map<String, Object> map);
+
+    R checkSupervisionUser(List<ZhcxSupervisionCustomUserManageDo> list);
+}

+ 4 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/service/ZhcxSupervisionCustomUserManageService.java

@@ -2,6 +2,9 @@ package com.rongwei.bscommon.sys.service;
 
 import com.rongwei.bsentity.domain.ZhcxSupervisionCustomUserManageDo;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.rongwei.rwadmincommon.system.domain.SysUserDo;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +16,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface ZhcxSupervisionCustomUserManageService extends IService<ZhcxSupervisionCustomUserManageDo> {
 
+    List<SysUserDo> getUserByRoleCode(String code);
 }

+ 45 - 4
business-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ZhcxApiServiceImpl.java

@@ -25,6 +25,7 @@ import org.springframework.stereotype.Service;
 import java.util.List;
 import java.util.Map;
 import java.util.Random;
+import java.util.concurrent.TimeUnit;
 
 /**
  * @author zhuang
@@ -64,16 +65,40 @@ public class ZhcxApiServiceImpl implements ZhcxApiService {
                 or().eq(SysUserDo::getMobile, account).
                 or().eq(SysUserDo::getEmail, account));
         SysUserDo sysUserDo = sysUserService.getOne(queryWrapper);
+        boolean exists = redisService.hasKey("getCode_"+account);
+        String sendCodeTimeObj = (String) redisService.getRedisCatchObj("getCode_"+account);
+        if (StringUtils.isBlank(sendCodeTimeObj)) {
+            sendCodeTimeObj = "0";
+        }
+        int sendCodeTime = Integer.parseInt(sendCodeTimeObj);
+
         if (sysUserDo == null || StringUtils.isEmpty(sysUserDo.getId())) {
-            return R.error("用户名密码不正确");
+            sendCodeTime += 1;
+            if(sendCodeTime <= 10){
+                redisService.redisCatchInit("getCode_"+account,String.valueOf(sendCodeTime),300);
+            }
+            if (sendCodeTime < 10) {
+                return R.error("501","用户名密码不正确");
+            }
         }
         String secPas = SecurityUtil.getSaltMd5AndSha(password, sysUserDo.getId());
         if (!secPas.equals(sysUserDo.getPassword())) {
-            return R.error("用户名密码不正确");
+            sendCodeTime += 1;
+            if(sendCodeTime <= 10){
+                redisService.redisCatchInit("getCode_"+account,String.valueOf(sendCodeTime),300);
+            }
+            if (sendCodeTime < 10) {
+                return R.error("501","用户名密码不正确");
+            }
+        }
+
+
+        if( exists && sendCodeTime >= 10 ){
+            return R.error("501","当前账号被锁定,请过5分钟后再尝试");
         }
         String phone = sysUserDo.getMobile();
         if(StringUtils.isBlank(phone)){
-            return R.error("未获取到手机号,请联系系统管理员");
+            return R.error("501","未获取到手机号,请联系系统管理员");
         }
         String redisKeyName = loginType + phone;
         String redisLabelName = loginType + account;
@@ -143,6 +168,22 @@ public class ZhcxApiServiceImpl implements ZhcxApiService {
         return R.error("重置密码失败, 请联系管理员!");
     }
 
+    @Override
+    public R sendReviewSupervisionMail(Map<String, Object> map) {
+        return null;
+    }
+
+    @Override
+    public R getCoreInspectionDetailList(Map<String, Object> map) {
+        Object idObj = map.get("ID");
+        if(ObjectUtil.isEmpty(idObj)){
+            return R.error("没有ID");
+        }
+        String id = (String) idObj;
+        List<String> list = zhcxApiDao.getCoreInspectionDetailList(id);
+        return R.ok(list);
+    }
+
     private R sendSmsCode(String templateId, String redisKeyName, String mobile, String redisLabelName) {
         boolean exists = redisService.hasKey(redisKeyName);
         String sendCodeTimeObj = (String) redisService.getRedisCatchObj(redisKeyName);
@@ -164,7 +205,7 @@ public class ZhcxApiServiceImpl implements ZhcxApiService {
             }
         }
         try {
-            JSONObject jsonObject = HwSmsUtil.sendSms(templateId, code.toString(), mobile);
+            JSONObject jsonObject = HwSmsUtil.sendSms(templateId,null, code.toString(), mobile);
             String returnCode = jsonObject.getString("code");
             if("000000".equals(returnCode)){
                 if(!exists){

+ 1 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ZhcxLoginServiceImpl.java

@@ -88,6 +88,7 @@ public class ZhcxLoginServiceImpl implements ZhcxLoginService {
                         String phone = userInfos.getString("mobile");
                         RedisTemplate redisTemplate = redisService.getRedisTemplate();
                         redisTemplate.delete(loginType + account);
+                        redisTemplate.delete("getCode_" + account);
                         redisTemplate.delete(loginType + phone);
                     }
                     return r;

+ 219 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ZhcxRegisterServiceImpl.java

@@ -0,0 +1,219 @@
+package com.rongwei.bscommon.sys.service.impl;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.rongwei.bscommon.sys.feign.RwCommonServerFeignService;
+import com.rongwei.bscommon.sys.service.ZhcxRegisterService;
+import com.rongwei.bscommon.sys.service.ZhcxSupervisionCustomUserManageService;
+import com.rongwei.bscommon.sys.utils.CxConstants;
+import com.rongwei.bscommon.sys.utils.HwSmsUtil;
+import com.rongwei.bscommon.sys.utils.PasswordGenerator;
+import com.rongwei.bscommon.sys.utils.SmsCodeGenerateUtils;
+import com.rongwei.bsentity.domain.ZhcxSupervisionCustomUserManageDo;
+import com.rongwei.commonservice.service.RedisService;
+import com.rongwei.rwadmincommon.system.domain.SysUserDo;
+import com.rongwei.rwadmincommon.system.service.SysUserService;
+import com.rongwei.rwcommon.base.R;
+import com.rongwei.rwcommon.utils.SecurityUtil;
+import com.rongwei.rwcommon.utils.StringUtils;
+import com.rongwei.rwcommon.vo.MailDo;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+import java.util.stream.Collectors;
+@Slf4j
+@Service
+public class ZhcxRegisterServiceImpl implements ZhcxRegisterService {
+
+    @Autowired
+    private RedisService redisService;
+    @Autowired
+    private SysUserService sysUserService;
+    @Autowired
+    private ZhcxSupervisionCustomUserManageService manageService;
+    @Autowired
+    private RwCommonServerFeignService rwCommonServerFeignService;
+
+    @Override
+    public R supervisionRegister(JSONObject jsonObject) {
+        try {
+            String jygsid = jsonObject.getString("jygsid");
+            String name = jsonObject.getString("name");
+            String account = jsonObject.getString("account");
+            String email = jsonObject.getString("email");
+            String mobile = jsonObject.getString("mobile");
+            String code = jsonObject.getString("code");
+            Object yzmObj = redisService.getRedisCatchObj("register_"+mobile);
+            if(ObjectUtil.isEmpty(yzmObj)){
+                return R.error("未获取到验证码或验证码已过期,请获取验证码");
+            }
+            String yzm = (String) yzmObj;
+            if(code.equals(yzm)){
+                LambdaQueryWrapper<SysUserDo> queryWrapper = Wrappers.lambdaQuery();
+                queryWrapper.and(i -> i.eq(SysUserDo::getAccount, account).
+                        or().eq(SysUserDo::getMobile, mobile).
+                        or().eq(SysUserDo::getEmail, email));
+                List<SysUserDo> list = sysUserService.list(queryWrapper);
+                if(list.size() > 0){
+                    return R.error("账号,手机号,邮箱已存在,请联系管理员");
+                }else{
+                    SysUserDo sysUserDo = new SysUserDo();
+                    ZhcxSupervisionCustomUserManageDo ManageDo = new ZhcxSupervisionCustomUserManageDo();
+                    String uuid = SecurityUtil.getUUID();
+                    sysUserDo.setId(uuid);
+                    sysUserDo.setAccount(account);
+                    sysUserDo.setMobile(mobile);
+                    sysUserDo.setName(name);
+                    sysUserDo.setEmail(email);
+                    sysUserDo.setEnabled("1");
+                    sysUserService.save(sysUserDo);
+                    ManageDo.setId(SecurityUtil.getUUID());
+                    ManageDo.setUserid(uuid);
+                    ManageDo.setAccount(account);
+                    ManageDo.setPhone(mobile);
+                    ManageDo.setUserName(name);
+                    ManageDo.setEmail(email);
+                    ManageDo.setPid(jygsid);
+                    ManageDo.setStatus("待审核");
+                    manageService.save(ManageDo);
+                }
+            }else{
+                return R.error("验证码错误,请重新输入");
+            }
+            try {
+                redisService.getRedisTemplate().delete(CxConstants.REGISTER_PREFIX+mobile);
+                sendMail();
+            } catch (Exception e) {
+                log.info("监理注册审核邮件发送失败");
+            }
+            return R.ok("请等待后台管理员审核");
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return R.error();
+    }
+
+    private R sendMail() {
+        List<SysUserDo> receiveUserList = manageService.getUserByRoleCode("role088");
+        List<String> userEmail = receiveUserList.stream().map(SysUserDo::getEmail).filter(StringUtils::isNotBlank).collect(Collectors.toList());
+
+        if (userEmail.isEmpty()) {
+            log.error("收件人邮箱为空:{}", userEmail);
+            return R.ok();
+        }
+        Set<String> set = new HashSet<>(userEmail);
+        userEmail.clear();
+        userEmail.addAll(set);
+        log.debug("开始发送监理账号审核接收人邮件", userEmail);
+        MailDo mailDo = new MailDo();
+        mailDo.setReceiveEmail(userEmail.toArray(new String[userEmail.size()]));
+        mailDo.setSubject("监理账号审核");
+        mailDo.setCcEmail(new String[]{});
+        mailDo.setNeedTransReceive(false);
+        mailDo.setContent(CxConstants.CHECK_MAIL_CONTENT);
+        rwCommonServerFeignService.sendTextMail(mailDo);
+        return R.ok();
+    }
+
+    @Override
+    public R sendCode(Map<String, Object> map) {
+        Object mobileObj = map.get("mobile");
+        if(ObjectUtil.isEmpty(mobileObj)){
+            return R.error();
+        }
+        String mobile = (String) mobileObj;
+        boolean exists = redisService.hasKey(CxConstants.REGISTER_PREFIX+mobile);
+        String sendCodeTimeObj = (String) redisService.getRedisCatchObj("registerCount_"+mobile);
+        int sendCodeTime = StringUtils.isBlank(sendCodeTimeObj) ? 0 : Integer.parseInt(sendCodeTimeObj);
+        if (exists && sendCodeTime >= CxConstants.MAX_SEND_CODE_TIME) {
+            return R.error("501", "验证码发送频繁,请过5分钟后再尝试");
+        }
+        String code = SmsCodeGenerateUtils.getInstance().generateVerificationCode();
+        try {
+            JSONObject jsonObject = HwSmsUtil.sendSms(null,null, code.toString(), mobile);
+            String returnCode = jsonObject.getString("code");
+            if(CxConstants.SUCCESS_CODE.equals(returnCode)){
+                if(!exists){
+                    redisService.redisCatchInit(CxConstants.REGISTER_COUNT_PREFIX+mobile,"0",CxConstants.SEND_CODE_INTERVAL);
+                }
+                sendCodeTime += 1;
+                redisService.redisCatchInit(CxConstants.REGISTER_COUNT_PREFIX+mobile,String.valueOf(sendCodeTime),CxConstants.SEND_CODE_INTERVAL);
+                redisService.redisCatchInit(CxConstants.REGISTER_PREFIX+mobile,code,CxConstants.VERIFICATION_CODE_EXPIRATION);
+                return R.ok("发送成功");
+            }
+        } catch (Exception e) {
+            log.info("发送验证码失败", e);
+        }
+        return R.error();
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
+    public R checkSupervisionUser(List<ZhcxSupervisionCustomUserManageDo> list) {
+        try {
+            updateStatus(list);
+            List<String> userIdList = list.stream().map(ZhcxSupervisionCustomUserManageDo::getUserid).collect(Collectors.toList());
+            updateUserPasswordAndSendSms(userIdList);
+        } catch (Exception e) {
+            log.error("处理监理注册用户更新发送信息异常", e);
+            return R.error();
+        }
+        return R.ok();
+    }
+    /**
+     * 更新用户密码并发送短信通知
+     *
+     * @param userIdList 需要更新密码和发送短信的用户ID列表
+     * 该方法首先根据提供的用户ID列表查询用户信息,然后为每个用户生成新密码,更新密码及启用状态,并尝试发送包含新密码的短信通知。
+     */
+    private void updateUserPasswordAndSendSms(List<String> userIdList) {
+        LambdaQueryWrapper<SysUserDo> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.and(i -> i.in(SysUserDo::getId, userIdList));
+        List<SysUserDo> userList = sysUserService.list(queryWrapper);
+        userList.forEach((item)->{
+            String pwd = PasswordGenerator.generatePassword(12);
+            String saltPwd = SecurityUtil.getSaltMd5AndSha(pwd, item.getId());
+            item.setPassword(saltPwd);
+            item.setEnabled("0");
+            sysUserService.updateById(item);
+            sendSmsAsync(item);
+        });
+    }
+
+    private void sendSmsAsync(SysUserDo item) {
+        new Thread(() -> {
+            try {
+                JSONObject jsonObject = HwSmsUtil.sendSms("7133b7ce87a84896a143b02edf5a4757", "8823102504763", item.getAccount() + "," + "123", item.getMobile());
+                String returnCode = jsonObject.getString("code");
+                if(CxConstants.SUCCESS_CODE.equals(returnCode)){
+                    log.info("发送用户注册信息成功");
+                }else {
+                    log.info("发送用户注册信息失败: 返回码 {}", returnCode);
+                }
+            } catch (Exception e) {
+                log.info("发送短信异常", e);
+            }
+        }).start();
+    }
+
+    /**
+     * 更新用户状态
+     *
+     * @param list 包含待更新状态的用户信息列表
+     * 此方法遍历列表中的每个用户,将状态为"待审核"的用户状态更新为"正常",然后批量通过manageService更新到数据库中。
+     */
+    private void updateStatus(List<ZhcxSupervisionCustomUserManageDo> list) {
+        list.forEach((item)->{
+            if ("待审核".equals(item.getStatus())) {
+                item.setStatus("正常");
+            }
+        });
+        manageService.updateBatchById(list);
+    }
+}

+ 11 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ZhcxSupervisionCustomUserManageServiceImpl.java

@@ -4,8 +4,12 @@ import com.rongwei.bsentity.domain.ZhcxSupervisionCustomUserManageDo;
 import com.rongwei.bscommon.sys.dao.ZhcxSupervisionCustomUserManageDao;
 import com.rongwei.bscommon.sys.service.ZhcxSupervisionCustomUserManageService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.rongwei.rwadmincommon.system.domain.SysUserDo;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * <p>
  * 监理客户账号管理表 服务实现类
@@ -17,4 +21,11 @@ import org.springframework.stereotype.Service;
 @Service
 public class ZhcxSupervisionCustomUserManageServiceImpl extends ServiceImpl<ZhcxSupervisionCustomUserManageDao, ZhcxSupervisionCustomUserManageDo> implements ZhcxSupervisionCustomUserManageService {
 
+    @Autowired
+    private ZhcxSupervisionCustomUserManageDao dao;
+
+    @Override
+    public List<SysUserDo> getUserByRoleCode(String code) {
+        return dao.getUserByRoleCode(code);
+    }
 }

+ 2 - 2
business-common/src/main/java/com/rongwei/bscommon/sys/utils/CodeGeneration.java

@@ -57,7 +57,7 @@ public class CodeGeneration {
         dsc.setDriverName("dm.jdbc.driver.DmDriver");
         dsc.setUsername("INCONTROL");
         dsc.setPassword("INCONTROL");
-        dsc.setUrl("jdbc:dm://192.168.0.204:5237");  //指定数据库
+        dsc.setUrl("jdbc:dm://61.177.40.178:5237");  //指定数据库
         autoGenerator.setDataSource(dsc);
 
         // 3、包的配置
@@ -85,7 +85,7 @@ public class CodeGeneration {
         strategy.setSuperEntityClass(BaseDo.class);
         strategy.setRestControllerStyle(true);
         // 设置要映射的表名(重要,需要修改的地方)
-        strategy.setInclude("ZHCX_PROJECT_DEVICE_NUMBER");
+        strategy.setInclude("ZHCX_SUPERVISION_CUSTOM_USER_MANAGE");
         strategy.setNaming(NamingStrategy.underline_to_camel); // 自动转换表名的驼峰命名法
         strategy.setColumnNaming(NamingStrategy.no_change); // 自动转换列名的驼峰命名法
         strategy.setEntityLombokModel(true); // 是否使用lombox

+ 33 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/utils/CxConstants.java

@@ -14,4 +14,37 @@ public class CxConstants {
     // ITP节点类型:大构件
     public final static String ITP_NODETYPE_BIG = "big";
 
+    /**
+     * 注册标识
+     */
+    public final static String REGISTER_PREFIX = "register_";
+    /**
+     * 注册标识 -次数
+     */
+    public final static String REGISTER_COUNT_PREFIX = "registerCount_";
+    /**
+     * 验证码生成长度
+     */
+    public final static int CODE_LENGTH = 6;
+    /**
+     * 华为短信接口返回正确码
+     */
+    public final static String SUCCESS_CODE = "000000";
+    /**
+     * 发送短信次数
+     */
+    public final static int MAX_SEND_CODE_TIME = 5;
+    /**
+     * 短信超过次数后等待时间 秒
+     */
+    public final static int SEND_CODE_INTERVAL = 300;
+    /**
+     * 短信有效时间 秒
+     */
+    public final static int VERIFICATION_CODE_EXPIRATION = 120;
+    /**
+     * 监理注册后发送审核邮件内容
+     */
+    public final static String CHECK_MAIL_CONTENT = "您好,有新的监理账号注册,请您及时登录系统审批,地址:https://cxqm.zpmc.com";
+
 }

+ 23 - 6
business-common/src/main/java/com/rongwei/bscommon/sys/utils/HwSmsUtil.java

@@ -16,8 +16,11 @@ import org.apache.http.impl.client.HttpClients;
 import org.apache.http.message.BasicNameValuePair;
 import org.apache.http.ssl.SSLContextBuilder;
 import org.apache.http.util.EntityUtils;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.http.HttpHeaders;
+import org.springframework.stereotype.Component;
 
+import javax.annotation.PostConstruct;
 import java.nio.charset.Charset;
 import java.text.SimpleDateFormat;
 import java.util.*;
@@ -26,14 +29,25 @@ public class HwSmsUtil {
 
     //无需修改,用于格式化鉴权头域,给"X-WSSE"参数赋值
     private static final String WSSE_HEADER_FORMAT = "UsernameToken Username=\"%s\",PasswordDigest=\"%s\",Nonce=\"%s\",Created=\"%s\"";
-    //无需修改,用于格式化鉴权头域,给"Authorization"参数赋值
+    //无需修改,用于格式化鉴权头域,给"Authorization"参数赋值 8823102504763 7133b7ce87a84896a143b02edf5a4757
     private static final String AUTH_HEADER_VALUE = "WSSE realm=\"SDP\",profile=\"UsernameToken\",type=\"Appkey\"";
     private static final String SENDER = "8824011624825";
-    private static final String TEMPLATE_ID = "49727a594ba44048b36eb08b42381002";
-
+    private static final String TEMPLATE_ID = "0b30545363dd4d3d910ed73aa23dfe92";
+//    @Value("${hw.sender:#{null}}")
+//    private String senderNo;8824011624825
+//    static String SENDER; 0b30545363dd4d3d910ed73aa23dfe92
+//    @Value("${hw.templateid:#{null}}")
+//    private String templateId;
+//    static String TEMPLATE_ID;
+//
+//    @PostConstruct
+//    public void init() {
+//        SENDER = senderNo;
+//        TEMPLATE_ID = templateId;
+//    }
     public static void main(String[] args) throws Exception{
 
-        sendSms(null, "[\""+1235+"\"]","13720166098");
+        sendSms("7133b7ce87a84896a143b02edf5a4757","8823102504763", "13720166098,13720166098","13720166098");
 //        sendSms("[\"17623778642\",\"蓉A-7823\"]","17623778642","8819122535459","6c848255000c4619833ab690e393f906");
 //        sendSms("[\"17623778642\",\"蓉A-7823\",\"2019/12/27\",\"14:00\"]","17623778642","8819122535459","bb13d00d11e043659001a89c72d54cab");
     }
@@ -47,7 +61,7 @@ public class HwSmsUtil {
      * @throws Exception
      * @return
      */
-    public static JSONObject sendSms(String templateId, String code, String phone) throws Exception{
+    public static JSONObject sendSms(String templateId,String sender, String code, String phone) throws Exception{
         //必填,请参考"开发准备"获取如下数据,替换为实际值
         String url = "https://smsapi.cn-south-1.myhuaweicloud.com:443/sms/batchSendSms/v1"; //APP接入地址+接口访问URI
         String appKey = "iZA4u69023CpkvGGxrXxrBuNMp1B"; //APP_Key
@@ -55,6 +69,9 @@ public class HwSmsUtil {
         if (StringUtils.isBlank(templateId)) {
             templateId = TEMPLATE_ID;
         }
+        if (StringUtils.isBlank(sender)) {
+            sender = SENDER;
+        }
         //条件必填,国内短信关注,当templateId指定的模板类型为通用模板时生效且必填,必须是已审核通过的,与模板类型一致的签名名称
         //国际/港澳台短信不用关注该参数
         String signature = null; //签名名称
@@ -75,7 +92,7 @@ public class HwSmsUtil {
         String templateParas = "["+code+"]"; //模板变量
 
         //请求Body,不携带签名名称时,signature请填null
-        String body = buildRequestBody(SENDER, receiver, templateId, templateParas, statusCallBack, signature);
+        String body = buildRequestBody(sender, receiver, templateId, templateParas, statusCallBack, signature);
         if (null == body || body.isEmpty()) {
             System.out.println("body is null.");
             return null;

+ 52 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/utils/PasswordGenerator.java

@@ -0,0 +1,52 @@
+package com.rongwei.bscommon.sys.utils;
+
+import java.security.SecureRandom;
+
+public class PasswordGenerator {
+    private static final String LOWERCASE_CHARS = "abcdefghijklmnopqrstuvwxyz";
+    private static final String UPPERCASE_CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+    private static final String NUMBERS = "0123456789";
+    private static final String SPECIAL_CHARS = "!@#$%^&*()-_=+";
+
+    public static String generatePassword(int length) {
+        StringBuilder password = new StringBuilder();
+        SecureRandom random = new SecureRandom();
+
+        // 添加至少一个小写字母
+        password.append(LOWERCASE_CHARS.charAt(random.nextInt(LOWERCASE_CHARS.length())));
+        // 添加至少一个大写字母
+        password.append(UPPERCASE_CHARS.charAt(random.nextInt(UPPERCASE_CHARS.length())));
+        // 添加至少一个数字
+        password.append(NUMBERS.charAt(random.nextInt(NUMBERS.length())));
+        // 添加至少一个特殊字符
+        password.append(SPECIAL_CHARS.charAt(random.nextInt(SPECIAL_CHARS.length())));
+
+        // 生成剩余的字符
+        for (int i = 4; i < length; i++) {
+            String allChars = LOWERCASE_CHARS + UPPERCASE_CHARS + NUMBERS + SPECIAL_CHARS;
+            password.append(allChars.charAt(random.nextInt(allChars.length())));
+        }
+
+        // 将生成的密码随机打乱顺序
+        String shuffledPassword = shuffleString(password.toString());
+
+        return shuffledPassword;
+    }
+
+    private static String shuffleString(String input) {
+        char[] chars = input.toCharArray();
+        SecureRandom random = new SecureRandom();
+        for (int i = chars.length - 1; i > 0; i--) {
+            int index = random.nextInt(i + 1);
+            char temp = chars[index];
+            chars[index] = chars[i];
+            chars[i] = temp;
+        }
+        return new String(chars);
+    }
+
+    public static void main(String[] args) {
+        String password = generatePassword(12);
+        System.out.println("Generated Password: " + password);
+    }
+}

+ 53 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/utils/SmsCodeGenerateUtils.java

@@ -0,0 +1,53 @@
+package com.rongwei.bscommon.sys.utils;
+
+import java.security.SecureRandom;
+
+/**
+ * @author zhuang
+ */
+public class SmsCodeGenerateUtils {
+
+    private static final SecureRandom secureRandom = new SecureRandom();
+    private static final StringBuilder codeStringBuilder = new StringBuilder();
+    /**
+     * 采用单例模式以重用StringBuilder,同时提供一个方法来生成指定长度的验证码
+     */
+    private static final SmsCodeGenerateUtils INSTANCE = new SmsCodeGenerateUtils();
+
+    /**
+     * 私有化构造方法防止外部实例化
+     */
+    private SmsCodeGenerateUtils() {
+        // 初始化6位
+        codeStringBuilder.setLength(CxConstants.CODE_LENGTH);
+    }
+
+    /**
+     * 提供一个接口来获取验证码生成器实例,这样也使得未来如果有需要,可以轻松地修改生成逻辑
+     * @return
+     */
+    public static SmsCodeGenerateUtils getInstance() {
+        return INSTANCE;
+    }
+
+    /**
+     * 生成6位验证码方法
+     * @return
+     */
+    public String generateVerificationCode() {
+        codeStringBuilder.setLength(0);
+        for (int i = 0; i < CxConstants.CODE_LENGTH; i++) {
+            codeStringBuilder.append(generateRandomDigit());
+        }
+        return codeStringBuilder.toString();
+    }
+
+
+    /**
+     * 生成一个随机数字,0到9之间的整数
+     * @return
+     */
+    private int generateRandomDigit() {
+        return secureRandom.nextInt(10);
+    }
+}

+ 1 - 0
business-server/pom.xml

@@ -6,6 +6,7 @@
         <artifactId>rw-business</artifactId>
         <groupId>com.rongwei</groupId>
         <version>1.0-SNAPSHOT</version>
+        <relativePath/>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

+ 13 - 0
business-server/src/main/java/com/rongwei/bsserver/controller/ZhcxApiController.java

@@ -51,4 +51,17 @@ public class ZhcxApiController {
         R r = zhcxApiService.resetPassword(map);
         return r;
     }
+
+    @RequestMapping("/sendReviewSupervisionMail")
+    public R sendReviewSupervisionMail(@RequestBody Map<String,Object> map){
+        R r = zhcxApiService.sendReviewSupervisionMail(map);
+        return r;
+    }
+
+    @RequestMapping("/getCoreInspectionDetailList")
+    public R getCoreInspectionDetailList(@RequestBody Map<String,Object> map){
+        R r = zhcxApiService.getCoreInspectionDetailList(map);
+        return r;
+    }
+
 }

+ 43 - 0
business-server/src/main/java/com/rongwei/bsserver/controller/ZhcxRegisterController.java

@@ -0,0 +1,43 @@
+package com.rongwei.bsserver.controller;
+
+import com.alibaba.fastjson.JSONObject;
+import com.rongwei.bscommon.sys.service.ZhcxRegisterService;
+import com.rongwei.bsentity.domain.ZhcxSupervisionCustomUserManageDo;
+import com.rongwei.rwcommon.base.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author zhuang
+ */
+@RestController
+@RequestMapping("/zhcxRegister")
+public class ZhcxRegisterController {
+
+    @Autowired
+    private ZhcxRegisterService zhcxRegisterService;
+
+    @RequestMapping("/supervisionRegister")
+    public R supervisionRegister(@RequestBody JSONObject jsonObject){
+        R r = zhcxRegisterService.supervisionRegister(jsonObject);
+        return r;
+    }
+
+    @RequestMapping("/sendCode")
+    public R sendCode(@RequestBody Map<String,Object> map){
+        R r = zhcxRegisterService.sendCode(map);
+        return r;
+    }
+
+    @RequestMapping("/checkSupervisionUser")
+    public R checkSupervisionUser(@RequestBody List<ZhcxSupervisionCustomUserManageDo> list){
+        R r = zhcxRegisterService.checkSupervisionUser(list);
+        return r;
+    }
+
+}