Kaynağa Gözat

注册相关调整

zhuang 1 yıl önce
ebeveyn
işleme
b241bfa24e
16 değiştirilmiş dosya ile 445 ekleme ve 10 silme
  1. 4 0
      business-common/src/main/java/com/rongwei/bscommon/sys/dao/ZhcxRegisterDao.java
  2. 8 0
      business-common/src/main/java/com/rongwei/bscommon/sys/dao/ZhcxSupervisionCustomUserManageDao.java
  3. 19 0
      business-common/src/main/java/com/rongwei/bscommon/sys/feign/RwCommonServerFeignService.java
  4. 25 0
      business-common/src/main/java/com/rongwei/bscommon/sys/feign/RwCommonServerFeignServiceImpl.java
  5. 2 0
      business-common/src/main/java/com/rongwei/bscommon/sys/service/ZhcxApiService.java
  6. 17 0
      business-common/src/main/java/com/rongwei/bscommon/sys/service/ZhcxRegisterService.java
  7. 4 0
      business-common/src/main/java/com/rongwei/bscommon/sys/service/ZhcxSupervisionCustomUserManageService.java
  8. 34 4
      business-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ZhcxApiServiceImpl.java
  9. 1 0
      business-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ZhcxLoginServiceImpl.java
  10. 194 0
      business-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ZhcxRegisterServiceImpl.java
  11. 11 0
      business-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ZhcxSupervisionCustomUserManageServiceImpl.java
  12. 23 6
      business-common/src/main/java/com/rongwei/bscommon/sys/utils/HwSmsUtil.java
  13. 52 0
      business-common/src/main/java/com/rongwei/bscommon/sys/utils/PasswordGenerator.java
  14. 1 0
      business-server/pom.xml
  15. 7 0
      business-server/src/main/java/com/rongwei/bsserver/controller/ZhcxApiController.java
  16. 43 0
      business-server/src/main/java/com/rongwei/bsserver/controller/ZhcxRegisterController.java

+ 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 JOIN SYS_USER su ON sur.USERID = su.ID \n" +
+            "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;
+    }
+}

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

@@ -18,4 +18,6 @@ public interface ZhcxApiService {
     R getAccountInfoForForgotPassword(Map<String, Object> map);
 
     R resetPassword(Map<String, Object> map);
+
+    R sendReviewSupervisionMail(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);
 }

+ 34 - 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,11 @@ public class ZhcxApiServiceImpl implements ZhcxApiService {
         return R.error("重置密码失败, 请联系管理员!");
     }
 
+    @Override
+    public R sendReviewSupervisionMail(Map<String, Object> map) {
+        return null;
+    }
+
     private R sendSmsCode(String templateId, String redisKeyName, String mobile, String redisLabelName) {
         boolean exists = redisService.hasKey(redisKeyName);
         String sendCodeTimeObj = (String) redisService.getRedisCatchObj(redisKeyName);
@@ -164,7 +194,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;

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

@@ -0,0 +1,194 @@
+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.HwSmsUtil;
+import com.rongwei.bscommon.sys.utils.PasswordGenerator;
+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.Transactional;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Random;
+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;
+
+    public static final String PY_NEWS_MAIL_CONTENT = "您好,有新的监理账号注册,请您及时登录系统审批,地址:https://cxqm.zpmc.com";
+    @Override
+    public R supervisionRegister(JSONObject jsonObject) {
+        try {
+            String jygs = jsonObject.getString("jygs");
+            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(jygs);
+                    ManageDo.setStatus("待审核");
+                    manageService.save(ManageDo);
+                }
+            }else{
+                return R.error("验证码错误,请重新输入");
+            }
+            try {
+                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();
+        }
+        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(PY_NEWS_MAIL_CONTENT);
+        rwCommonServerFeignService.sendHtmlMail(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("register_"+mobile);
+        String sendCodeTimeObj = (String) redisService.getRedisCatchObj("registerCount_"+mobile);
+        if (StringUtils.isBlank(sendCodeTimeObj)) {
+            sendCodeTimeObj = "0";
+        }
+        int sendCodeTime = Integer.parseInt(sendCodeTimeObj);
+        if( exists && sendCodeTime >= 5 ){
+            return R.error("501","验证码发送频繁,请过5分钟后再尝试");
+        }
+        StringBuilder code = new StringBuilder();
+        for (int i = 0; i < 6; i++) {
+            if(i == 0){
+                code.append(new Random().nextInt(9)+1);
+            }else{
+                code.append(new Random().nextInt(10));
+            }
+        }
+        try {
+            JSONObject jsonObject = HwSmsUtil.sendSms(null,null, code.toString(), mobile);
+            String returnCode = jsonObject.getString("code");
+            if("000000".equals(returnCode)){
+                if(!exists){
+                    redisService.redisCatchInit("registerCount_"+mobile,0,300);
+                }
+                sendCodeTime += 1;
+                redisService.redisCatchInit("registerCount_"+mobile,String.valueOf(sendCodeTime),300);
+                redisService.redisCatchInit("register_"+mobile,code.toString(),120);
+                return R.ok("发送成功");
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return R.error();
+    }
+
+    @Override
+    @Transactional
+    public R checkSupervisionUser(List<ZhcxSupervisionCustomUserManageDo> list) {
+        try {
+            List<String> userIdList = list.stream().map(ZhcxSupervisionCustomUserManageDo::getUserid).collect(Collectors.toList());
+            list.forEach((item)->{
+                if ("待审核".equals(item.getStatus())) {
+                    item.setStatus("正常");
+                }
+            });
+            manageService.updateBatchById(list);
+            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);
+                try {
+                    HwSmsUtil.sendSms("7133b7ce87a84896a143b02edf5a4757","8823102504763",item.getAccount()+","+pwd,item.getMobile());
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            });
+        } catch (Exception e) {
+            e.printStackTrace();
+            return R.error();
+        }
+        return R.ok();
+    }
+}

+ 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);
+    }
 }

+ 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(null,null, "1234","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);
+    }
+}

+ 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>
 

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

@@ -51,4 +51,11 @@ 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;
+    }
+
 }

+ 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;
+    }
+
+}