he2802 před 4 roky
rodič
revize
4eb2076637

+ 1 - 0
zhongzheng-admin/src/main/resources/application.yml

@@ -255,6 +255,7 @@ aliyun:
     loginTemplateCode: SMS_228670005
     forgetTemplateCode: SMS_228685033
     pwdTemplateCode: SMS_230220381
+    bindNewTelCode: SMS_232178371
     accessKeyId: LTAIgC8O2WUXvXuR
     accessKeySecret: 1yyCazuT1M6MruBXzgFjP0p9gdMlwX
     OpenTheGoodsCode: SMS_230970155     #商品开通提醒

+ 7 - 0
zhongzheng-api/src/main/java/com/zhongzheng/controller/user/SmsController.java

@@ -46,4 +46,11 @@ public class SmsController extends BaseController {
         iSmsService.sendForgetSms(bo.getTel());
         return AjaxResult.success();
     }
+
+    @ApiOperation("获取绑定新手机短信")
+    @PostMapping("/bindNew")
+    public AjaxResult bindNew(@RequestBody SmsAddBo bo) {
+        iSmsService.sendBindNewTelSms(bo.getTel());
+        return AjaxResult.success();
+    }
 }

+ 8 - 4
zhongzheng-api/src/main/java/com/zhongzheng/controller/user/UserController.java

@@ -6,10 +6,7 @@ import com.zhongzheng.common.core.domain.AjaxResult;
 import com.zhongzheng.common.enums.BusinessType;
 import com.zhongzheng.common.utils.ServletUtils;
 import com.zhongzheng.framework.web.service.WxTokenService;
-import com.zhongzheng.modules.user.bo.RanKingUserQuery;
-import com.zhongzheng.modules.user.bo.UserAppAccountLoginBo;
-import com.zhongzheng.modules.user.bo.UserAppBindIdBo;
-import com.zhongzheng.modules.user.bo.UserEditBo;
+import com.zhongzheng.modules.user.bo.*;
 import com.zhongzheng.modules.user.entity.ClientLoginUser;
 import com.zhongzheng.modules.user.service.IUserService;
 import com.zhongzheng.modules.user.vo.RanKingUser;
@@ -97,4 +94,11 @@ public class UserController extends BaseController {
         return AjaxResult.success(vo);
     }
 
+    @ApiOperation("绑定新手机")
+    @PostMapping("/bindNewTel")
+    public AjaxResult<Void> bindNewTel(@RequestBody UserAppSmsLoginBo bo) {
+        ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
+        bo.setUserId(loginUser.getUser().getUserId());
+        return toAjax(iUserService.bindNewTel(bo)? 1 : 0);
+    }
 }

+ 1 - 0
zhongzheng-api/src/main/resources/application.yml

@@ -253,6 +253,7 @@ aliyun:
     loginTemplateCode: SMS_228670005
     forgetTemplateCode: SMS_228685033
     pwdTemplateCode: SMS_230220381
+    bindNewTelCode: SMS_232178371
     accessKeyId: LTAIgC8O2WUXvXuR
     accessKeySecret: 1yyCazuT1M6MruBXzgFjP0p9gdMlwX
     OpenTheGoodsCode: SMS_230970155     #商品开通提醒

+ 25 - 0
zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/UserServiceImpl.java

@@ -599,6 +599,31 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
         return map;
     }
 
+    @Override
+    public Boolean bindNewTel(UserAppSmsLoginBo bo) {
+        if(bo.getTel()==null){
+            throw new CustomException("手机号不能为空");
+        }
+        String key = Constants.LOGIN_SMS + bo.getTel();
+        String code =  redisCache.getCacheObject(key);
+        if(code==null){
+            throw new CustomException("验证码错误");
+        }
+        if(!code.equals(bo.getCode())){
+            throw new CustomException("验证码错误");
+        }
+        User user = getOne(new LambdaQueryWrapper<User>()
+                .eq(User::getTelphone,bo.getTel()).last("limit 1"));
+        if(Validator.isNotEmpty(user)){
+            throw new CustomException("该手机号已被注册");
+        }
+        User update = new User();
+        update.setUserId(bo.getUserId());
+        update.setTelphone(bo.getTel());
+        update.setUpdateTime(DateUtils.getNowTime());
+        return this.updateById(update);
+    }
+
     @Override
     public Map<String, Object> accountLogin(UserAppAccountLoginBo bo) {
         if(Validator.isEmpty(bo.getAccount())){

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/alisms/service/IAliSmsService.java

@@ -17,4 +17,6 @@ public interface IAliSmsService {
     Boolean sendLoginSms(String tel);
 
     Boolean sendPwdSms(String tel,String code);
+
+    Boolean sendBindNewTelSms(String tel);
 }

+ 34 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/alisms/service/impl/AliSmsServiceImpl.java

@@ -47,6 +47,8 @@ public class AliSmsServiceImpl implements IAliSmsService {
     private String FORGETTEMPLATECODE;
     @Value("${aliyun.sms.pwdTemplateCode}")
     private String PWDTEMPLATECODE;
+    @Value("${aliyun.sms.bindNewTelCode}")
+    private String BINDNEWTELCODE;
 
     @Autowired
     private IUserService iUserService;
@@ -202,4 +204,36 @@ public class AliSmsServiceImpl implements IAliSmsService {
         }
         return false;
     }
+
+    @Override
+    public Boolean sendBindNewTelSms(String tel) {
+        if(tel==null){
+            throw new CustomException("手机号码不能为空");
+        }
+        User user = iUserService.getOne(new LambdaQueryWrapper<User>()
+                .eq(User::getTelphone,tel).last("limit 1"));
+        if(Validator.isNotEmpty(user)){
+            throw new CustomException("该手机号已被使用");
+        }
+        String code = ToolsUtils.getSmsCode();
+        String key = Constants.LOGIN_SMS + tel;
+        redisCache.setCacheObject(key,code,5, TimeUnit.MINUTES);//5分钟
+        try{
+            Map<String,Object> param = new HashMap<>();
+            param.put("code",code);
+            SendSmsResponse response = SmsUtils.sendSms(tel,SIGNNAME,BINDNEWTELCODE, JSON.toJSONString(param),ACCESSKEYID,ACCESSKEYSECRET);
+            if(response.getBody().getMessage().equals("OK")){
+                SmsAddBo smsAddBo = new SmsAddBo();
+                smsAddBo.setCode(code);
+                smsAddBo.setTel(tel);
+                smsAddBo.setType(5L);
+                smsAddBo.setIp(IpUtils.getIpAddr(ServletUtils.getRequest()));
+                iSmsService.insertByAddBo(smsAddBo);
+                return true;
+            }
+        }catch (Exception e){
+            throw new CustomException(e.getMessage());
+        }
+        return false;
+    }
 }

+ 12 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/vo/CourseMenuVo.java

@@ -54,6 +54,18 @@ public class CourseMenuVo {
 
 	@ApiModelProperty("录播和回放的url地址")
 	private String recordingUrl;
+	@ApiModelProperty("直播url地址")
+	private String liveUrl;
+	/** 节类型 1录播 2直播 3回放 */
+	@ApiModelProperty("节类型 1录播 2直播 3回放")
+	private Integer sectionType;
+
+	/** 直播开始时间 */
+	@ApiModelProperty("直播开始时间")
+	private Long liveStartTime;
+	/** 直播结束时间 */
+	@ApiModelProperty("直播结束时间")
+	private Long liveEndTime;
 
 	/** 章模块关系 */
 	@Excel(name = "章模块关系")

+ 2 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/vo/CourseUserChapterSectionVo.java

@@ -98,10 +98,11 @@ public class CourseUserChapterSectionVo {
 	@ApiModelProperty("直播结束时间")
 	private Long liveEndTime;
 
-
 	@ApiModelProperty("1已学习")
 	private Long learning;
 
+	@ApiModelProperty("直播url地址")
+	private String liveUrl;
 
 	@ApiModelProperty("做卷类型  1练习 2考试")
 	private Long doType;

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/vo/CourseUserMenuVo.java

@@ -73,6 +73,8 @@ public class CourseUserMenuVo {
 	@ApiModelProperty("1已学习")
 	private Long learning;
 
+	@ApiModelProperty("直播url地址")
+	private String liveUrl;
 	/** 章模块关系 */
 	@Excel(name = "章模块关系")
 	@ApiModelProperty("章模块关系")

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserAppSmsLoginBo.java

@@ -18,5 +18,7 @@ public class UserAppSmsLoginBo {
     private String tel;
     @ApiModelProperty("验证码")
     private String code;
+    @ApiModelProperty("用户ID")
+    private Long userId;
 
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/IUserService.java

@@ -84,6 +84,8 @@ public interface IUserService extends IService<User> {
 
 	Map<String,Object> smsLogin(UserAppSmsLoginBo bo);
 
+	Boolean bindNewTel(UserAppSmsLoginBo bo);
+
 	Map<String,Object> accountLogin(UserAppAccountLoginBo bo);
 
 	Boolean bindIdCard(UserAppBindIdBo bo);

+ 1 - 0
zhongzheng-system/src/main/resources/mapper/modules/course/CourseChapterSectionMapper.xml

@@ -48,6 +48,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="liveEndTime" column="live_end_time"/>
         <result property="recordingUrl" column="recording_url"/>
         <result property="doType" column="do_type"/>
+        <result property="liveUrl" column="live_url"/>
     </resultMap>
 
 

+ 21 - 2
zhongzheng-system/src/main/resources/mapper/modules/course/CourseMenuMapper.xml

@@ -26,6 +26,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="menuName" column="menu_name"/>
         <result property="durationTime" column="duration_time"/>
         <result property="sort" column="sort"/>
+        <result property="sectionType" column="section_type"/>
+        <result property="liveStartTime" column="live_start_time"/>
+        <result property="liveEndTime" column="live_end_time"/>
+        <result property="recordingUrl" column="recording_url"/>
+        <result property="liveUrl" column="live_url"/>
     </resultMap>
 
     <resultMap type="com.zhongzheng.modules.course.vo.CourseUserMenuVo" id="CourseUserMenuVo">
@@ -43,7 +48,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="liveStartTime" column="live_start_time"/>
         <result property="liveEndTime" column="live_end_time"/>
         <result property="recordingUrl" column="recording_url"/>
-
+        <result property="liveUrl" column="live_url"/>
     </resultMap>
 
     <select id="selectList" parameterType="com.zhongzheng.modules.course.bo.CourseMenuQueryBo"  resultMap="CourseMenuResultVo">
@@ -66,7 +71,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                     0
                 WHEN m.type = 3 THEN
                     cs.duration_time
-                END duration_time
+                END duration_time,
+            cs.section_type,
+            cs.live_start_time,
+            cs.live_end_time,
+            cs.live_url,
+            CASE
+                WHEN m.type = 1 THEN
+                    ''
+                WHEN m.type = 2 THEN
+                    ''
+                WHEN m.type = 3 THEN
+                    cs.recording_url
+                END recording_url
+
         FROM
             course_menu m
                 LEFT JOIN course_module cm ON m.menu_id = cm.module_id
@@ -105,6 +123,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             cs.section_type,
             cs.live_start_time,
             cs.live_end_time,
+            cs.live_url,
             CASE
                 WHEN m.type = 1 THEN
                     ''