zouxuan 5 年之前
父节点
当前提交
f1f73df271

+ 34 - 3
src/main/java/com/ym/mec/collectfee/controller/UserController.java

@@ -16,6 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.dao.DuplicateKeyException;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpSession;
 import java.util.Date;
 
 @RestController()
@@ -212,11 +213,11 @@ public class UserController extends BaseController {
      */
 //    @ApiOperation(value = "开启乐团缴费功能")
     @PostMapping("/openClassPay")
-    public Object openClassPay(Integer id){
-        if(id == null){
+    public Object openClassPay(Integer id,String smsMsg){
+        if(id == null || StringUtils.isEmpty(smsMsg)){
             return failed(Constants.PARAM_VERIFY_ERROR_MSG);
         }
-        schoolService.openClassPay(id);
+        schoolService.openClassPay(id,smsMsg);
         return succeed();
     }
 
@@ -283,4 +284,34 @@ public class UserController extends BaseController {
     public Object mecUserIsExist(String phone){
         return succeed(applyInfoService.mecUserIsExist(phone));
     }
+
+    /**
+     * 发送短信验证码
+     * @param mobile
+     * @return
+     */
+    @GetMapping("/sendSmsCode")
+    public Object sendLoginVerifyCode(String mobile, HttpSession session) {
+        if(StringUtils.isEmpty(mobile)){
+            return failed(Constants.PARAM_VERIFY_ERROR_MSG);
+        }
+        applyInfoService.sendValidCode(mobile,session);
+        return succeed();
+    }
+
+    /**
+     * 验证短信验证码
+     * @param smsCode
+     * @return
+     */
+    @PostMapping("/verifySmsCode")
+    public Object verifySmsCode(String mobile,String smsCode,HttpSession session) {
+        if(StringUtils.isEmpty(smsCode)){
+            return failed(Constants.PARAM_VERIFY_ERROR_MSG);
+        }
+        if(applyInfoService.verifySmsCode(mobile,smsCode,session)){
+            return succeed();
+        }
+        return failed("验证失败");
+    }
 }

+ 15 - 0
src/main/java/com/ym/mec/collectfee/service/ApplyInfoService.java

@@ -4,6 +4,7 @@ import com.ym.mec.collectfee.common.page.PageInfo;
 import com.ym.mec.collectfee.common.service.BaseService;
 import com.ym.mec.collectfee.entity.*;
 
+import javax.servlet.http.HttpSession;
 import java.util.List;
 import java.util.Map;
 
@@ -82,4 +83,18 @@ public interface ApplyInfoService extends BaseService<Integer, ApplyInfo> {
      * @param phone
      */
     boolean mecUserIsExist(String phone);
+
+    /**
+     * 发送短信验证码
+     * @param mobile
+     * @return
+     */
+    boolean sendValidCode(String mobile, HttpSession session);
+
+    /**
+     * 验证短信验证码
+     * @param smsCode
+     * @return
+     */
+    boolean verifySmsCode(String mobile,String smsCode,HttpSession session);
 }

+ 1 - 1
src/main/java/com/ym/mec/collectfee/service/SchoolService.java

@@ -12,5 +12,5 @@ public interface SchoolService extends BaseService<Integer, School> {
      * 开启乐团缴费
      * @param classId
      */
-    void openClassPay(Integer classId);
+    void openClassPay(Integer classId,String smsMsg);
 }

+ 40 - 4
src/main/java/com/ym/mec/collectfee/service/impl/ApplyInfoServiceImpl.java

@@ -4,20 +4,20 @@ import com.thoughtworks.xstream.XStream;
 import com.ym.mec.collectfee.common.dao.BaseDAO;
 import com.ym.mec.collectfee.common.page.PageInfo;
 import com.ym.mec.collectfee.common.service.impl.BaseServiceImpl;
+import com.ym.mec.collectfee.common.sms.SmsExample;
 import com.ym.mec.collectfee.dao.*;
 import com.ym.mec.collectfee.entity.*;
 import com.ym.mec.collectfee.service.ApplyInfoService;
-import com.ym.mec.collectfee.utils.CDesECB;
-import com.ym.mec.collectfee.utils.HttpUtil;
-import com.ym.mec.collectfee.utils.MapUtil;
-import com.ym.mec.collectfee.utils.XStreamUtil;
+import com.ym.mec.collectfee.utils.*;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.RandomStringUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.servlet.http.HttpSession;
 import java.io.StringWriter;
 import java.io.Writer;
 import java.util.*;
@@ -47,6 +47,22 @@ public class ApplyInfoServiceImpl extends BaseServiceImpl<Integer, ApplyInfo> im
 
 	@Value("${common.properties.key}")
 	private String key;
+	@Value("${common.properties.sms-appId}")
+	private String appId;
+	@Value("${common.properties.sms-secretKey}")
+	private String secretKey;
+	@Value("${common.properties.sms-host-dev}")
+	private String host;
+	@Value("${common.properties.sms-send-request-url}")
+	private String sendUrl;
+	// 加密算法
+	private String algorithm = "AES/ECB/PKCS5Padding";
+	// 编码
+	private String encode = "UTF-8";
+	// 是否压缩
+	private boolean isGizp = true;
+
+	private final String loginVerifyCodeKey = "loginVerifyCode:";
 
 	@Override
 	public BaseDAO<Integer, ApplyInfo> getDAO() {
@@ -340,6 +356,26 @@ public class ApplyInfoServiceImpl extends BaseServiceImpl<Integer, ApplyInfo> im
 		return false;
 	}
 
+	@Override
+	public boolean sendValidCode(String mobile, HttpSession session) {
+		String code = RandomStringUtils.randomNumeric(6);
+		session.setMaxInactiveInterval(900);
+		session.setAttribute(loginVerifyCodeKey + mobile,code);
+		SmsExample.setSingleSms(appId,secretKey,host,algorithm,String.format(Constants.SEND_LOGIN_SME_MSG, code),null,null,mobile,isGizp,encode);
+		return true;
+	}
+
+	@Override
+	public boolean verifySmsCode(String mobile,String smsCode,HttpSession session) {
+		Object attribute = session.getAttribute(loginVerifyCodeKey + mobile);
+		if(attribute != null){
+			if(StringUtils.isNotEmpty(attribute.toString()) && attribute.toString().equals(smsCode)){
+				return true;
+			}
+		}
+		return false;
+	}
+
 
 	private List<MecCourse> getCourses(String body) throws Exception{
 		body = getBody(body,123031);

+ 5 - 4
src/main/java/com/ym/mec/collectfee/service/impl/SchoolServiceImpl.java

@@ -74,7 +74,7 @@ public class SchoolServiceImpl extends BaseServiceImpl<Integer, School> implemen
 	}
 
 	@Override
-	public void openClassPay(Integer classId) {
+	public void openClassPay(Integer classId,String smsMsg) {
 		School school = schoolDao.get(classId);
 		if(school != null && school.getStatus() == 1){
 			school.setUpdateTime(new Date());
@@ -85,9 +85,10 @@ public class SchoolServiceImpl extends BaseServiceImpl<Integer, School> implemen
 			//获取所有用户手机号列表
 			List<String> userPhone = applyInfoDao.findUserByClass(classId,null);
 			String[] objects=userPhone.toArray(new String[userPhone.size()]);
-			SmsExample.setBatchOnlySms(appId,secretKey,host,algorithm,
-					String.format(Constants.SMS_TEMPLATE, DateUtils.getDayForAfter(new Date(), 2), ShortUrlUtil.sinaShortUrl(url)),
-					null,objects,isGizp,encode);
+//			SmsExample.setBatchOnlySms(appId,secretKey,host,algorithm,
+//					String.format(Constants.SMS_TEMPLATE, DateUtils.getDayForAfter(new Date(), 2), ShortUrlUtil.sinaShortUrl(url)),
+//					null,objects,isGizp,encode);
+			SmsExample.setBatchOnlySms(appId,secretKey,host,algorithm,smsMsg,null,objects,isGizp,encode);
 		}
 	}
 	

+ 2 - 0
src/main/java/com/ym/mec/collectfee/utils/Constants.java

@@ -5,4 +5,6 @@ public interface Constants {
     String PARAM_EXIST_ERROR_MSG = "该用户已在其他乐团报名";
     
     String SMS_TEMPLATE = "家长您好:恭喜您的孩子被管乐团录取!请您收到录取通知书后,于%s晚24:00前点此链接%s 或扫录取通知书上的二维码为学生完成入团注册缴费手续,专业以录取专业为准。完成后请关注深圳大雅乐盟(D-Y-M-E)点击菜单栏乐人进入乐团助手页面,查看课程安排。";
+
+    String SEND_LOGIN_SME_MSG = "您的验证码是:%s, 在15分钟内有效,请勿向任何人提供您收到的短信验证码。";
 }