yangdamao 11 месяцев назад
Родитель
Сommit
a102a50519

+ 15 - 0
zhongzheng-api/src/main/java/com/zhongzheng/controller/cmmon/CommonController.java

@@ -38,6 +38,7 @@ import com.zhongzheng.modules.order.domain.Printer;
 import com.zhongzheng.modules.system.bo.SysTenantQueryBo;
 import com.zhongzheng.modules.system.service.ISysConfigService;
 import com.zhongzheng.modules.system.service.ISysTenantService;
+import com.zhongzheng.modules.system.vo.SysTenantLoginSignVo;
 import com.zhongzheng.modules.user.bo.UserLiveAccountLoginBo;
 import com.zhongzheng.modules.user.service.IUserService;
 import com.zhongzheng.modules.user.vo.UserLiveAccountLoginVo;
@@ -430,4 +431,18 @@ public class CommonController extends BaseController {
         Long time = iCourseService.getLiveTime();
         return AjaxResult.success(time);
     }
+
+    @ApiOperation("获取系统登录标识")
+    @GetMapping("/login/sign")
+    public AjaxResult<SysTenantLoginSignVo> getSysLoginSign() {
+        SysTenantLoginSignVo sign = iSysTenantService.getSysLoginSign();
+        return AjaxResult.success(sign);
+    }
+
+    @ApiOperation("获取系统学前提示语")
+    @GetMapping("/prompt")
+    public AjaxResult<String> getSysStudyPrompt() {
+        String prompt = iSysTenantService.getSysStudyPrompt();
+        return AjaxResult.success("成功",prompt);
+    }
 }

+ 13 - 0
zhongzheng-api/src/main/java/com/zhongzheng/controller/wx/WxLoginController.java

@@ -196,4 +196,17 @@ public class WxLoginController
         return AjaxResult.success(map);
     }
 
+    /**
+     * 校验公众号openId是否存在
+     *
+     * @param loginBody 登公众号录信息
+     * @return 结果
+     */
+    @ApiOperation("校验公众号openId是否存在")
+    @PostMapping("/app/common/check/gzh_openId")
+    public AjaxResult checkGzh_openId(@RequestBody WxLoginBody loginBody)
+    {
+        Map<String,String> map = wxLoginService.checkGzh_openId(loginBody);
+        return AjaxResult.success(map);
+    }
 }

+ 29 - 0
zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/SysTenantServiceImpl.java

@@ -21,6 +21,7 @@ import com.zhongzheng.common.utils.ServletUtils;
 import com.zhongzheng.modules.order.domain.Order;
 import com.zhongzheng.modules.order.service.IOrderService;
 import com.zhongzheng.modules.system.bo.*;
+import com.zhongzheng.modules.system.domain.SysConfig;
 import com.zhongzheng.modules.system.domain.SysOldOrg;
 import com.zhongzheng.modules.system.domain.SysRoleMenu;
 import com.zhongzheng.modules.system.domain.SysTenant;
@@ -29,6 +30,7 @@ import com.zhongzheng.modules.system.mapper.SysTenantMapper;
 import com.zhongzheng.modules.system.service.*;
 import com.zhongzheng.modules.system.vo.SysTenantAccountVo;
 import com.zhongzheng.modules.system.vo.SysTenantBankAccountVo;
+import com.zhongzheng.modules.system.vo.SysTenantLoginSignVo;
 import com.zhongzheng.modules.system.vo.SysTenantVo;
 import com.zhongzheng.modules.top.goods.domain.TopOldOrder;
 import com.zhongzheng.modules.top.goods.service.ITopOldOrderService;
@@ -510,6 +512,33 @@ public class SysTenantServiceImpl extends ServiceImpl<SysTenantMapper, SysTenant
         return baseMapper.getExamRoomTenant();
     }
 
+    @Override
+    public SysTenantLoginSignVo getSysLoginSign() {
+        String tenantId = ServletUtils.getRequest().getHeader("TenantId");
+        if (StringUtils.isBlank(tenantId)){
+            throw new CustomException("tenantId获取有误");
+        }
+        SysTenant tenant = getById(Long.valueOf(tenantId));
+        if (ObjectUtils.isNull(tenant)){
+            throw new CustomException("机构获取失败");
+        }
+        SysTenantLoginSignVo vo = new SysTenantLoginSignVo();
+        vo.setLoginSign(tenant.getLoginSign());
+        vo.setTelSign(tenant.getTelSign());
+        vo.setWxSign(tenant.getWxSign());
+        return vo;
+    }
+
+    @Override
+    public String getSysStudyPrompt() {
+        String tenantId = ServletUtils.getRequest().getHeader("TenantId");
+        SysConfig config = iSysConfigService.getOne(new LambdaQueryWrapper<SysConfig>()
+                .eq(SysConfig::getConfigKey, "sys.study.prompt")
+                .eq(SysConfig::getTenantId, tenantId)
+                .last("limit 1"));
+        return config.getConfigValue();
+    }
+
     private void initRoles(Long newTenantId,Long tenantId) {
         List<String> roleKey = new ArrayList<>();
         roleKey.add("seller");

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

@@ -2227,6 +2227,11 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
         return baseMapper.getBusinessPhotoSign(orderGoodsId);
     }
 
+    @Override
+    public User getUserByGzhOpenId(String openId) {
+        return getOne(new LambdaQueryWrapper<User>().eq(User::getGzhOpenId,openId).last("limit 1"));
+    }
+
     @Override
     public Map<String, Object> accountLogin(UserAppAccountLoginBo bo) {
         if(Validator.isEmpty(bo.getAccount())){

+ 82 - 1
zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/WxLoginService.java

@@ -31,6 +31,7 @@ import com.zhongzheng.modules.goods.domain.Goods;
 import com.zhongzheng.modules.goods.service.IGoodsService;
 import com.zhongzheng.modules.goods.vo.GoodsVo;
 import com.zhongzheng.modules.grade.domain.ClassGradeUser;
+import com.zhongzheng.modules.system.domain.SysConfig;
 import com.zhongzheng.modules.system.domain.SysTenant;
 import com.zhongzheng.modules.system.service.ISysConfigService;
 import com.zhongzheng.modules.system.service.ISysTenantService;
@@ -51,6 +52,7 @@ import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
@@ -169,6 +171,9 @@ public class WxLoginService implements IWxLoginService {
     @Autowired
     private ISysTenantService iSysTenantService;
 
+    @Autowired
+    private ISysConfigService iSysConfigService;
+
     private final String KEY_PREFIX = "GOODS_SHARE";
 
     public void initData(){
@@ -199,7 +204,8 @@ public class WxLoginService implements IWxLoginService {
         String scanCode = ToolsUtils.getCharAndNumr(6);
         String key = "SCAN_LOGIN_" + scanCode;
         String keyStatus = "SCAN_LOGIN_STATUS_" + scanCode; //0未扫码 1已扫码 2已登录
-        String codeUrl = scanLoginHost + "pc/login/" + scanCode;
+//        String codeUrl = scanLoginHost + "pc/login/" + scanCode;
+        String codeUrl = scanLoginHost + "pages4/login/pcLogin?q=" + scanCode;
         String urlBase64 = null;
         try {
             QRCodeWriter qrCodeWriter = new QRCodeWriter();
@@ -1517,4 +1523,79 @@ public class WxLoginService implements IWxLoginService {
         }
         return vo;
     }
+
+    public Map<String, String> checkGzh_openId(WxLoginBody loginBody) {
+        initData();
+        Map<String, String> map = new HashMap<>();
+        String param = String.format(gzh_wxAuthParam, gzh_appid, gzh_appsrcret, loginBody.getCode());
+        String resultString = HttpUtils.sendGet(gzh_wxAuthUrl, param);
+        //解析json
+        JSONObject jsonObject = (JSONObject) JSONObject.parse(resultString);
+        String access_token = String.valueOf(jsonObject.get("access_token"));
+        if(access_token.equals("null")){
+            throw new CustomException( String.valueOf(jsonObject.get("errmsg")));
+        }
+        String openId = String.valueOf(jsonObject.get("openid"));
+        //通过域名获取商户ID
+        SysConfig config = iSysConfigService.getOne(new LambdaQueryWrapper<SysConfig>()
+                .eq(SysConfig::getConfigValue, scanLoginHost)
+                .eq(SysConfig::getConfigKey, "wx.scanLogin.host")
+                .last("limit 1"));
+        if (ObjectUtils.isNull(config)){
+            throw new CustomException("域名配置获取失败,请检查!");
+        }
+        ServletUtils.getResponse().setHeader("TenantId",config.getTenantId().toString());
+        if (StringUtils.isNotBlank(loginBody.getAccount()) && StringUtils.isNotBlank(loginBody.getPassword())){
+            LambdaQueryWrapper<User> queryWrapper =new LambdaQueryWrapper<User>();
+            queryWrapper.and(wq -> wq
+                    .eq(User::getTelphone,EncryptHandler.encrypt(loginBody.getAccount()))
+                    .or()
+                    .eq(User::getIdCard,EncryptHandler.encrypt(loginBody.getAccount())));
+            User user = iUserService.getOne(queryWrapper);
+            if (ObjectUtils.isNull(user)){
+                throw new CustomException("登入信息有误,请检查账号或者密码!");
+            }
+            String password = null;
+            if(loginBody.getPassword().length()>20){
+                String rsaPrivate = null;
+                try {
+                    InputStream certStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("config/pri.key");
+                    rsaPrivate = AES.getStringByInputStream_1(certStream);
+                    certStream.close();
+                    password = AES.decrypt(loginBody.getPassword(),rsaPrivate);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }else{
+                password = loginBody.getPassword();
+            }
+            if (!SecurityUtils.matchesPassword(password,user.getPassword()))
+            {
+                throw new CustomException("登入信息有误,请检查账号或者密码!");
+            }
+            //校验公众号openId
+            if (StringUtils.isNotBlank(user.getGzhOpenId()) && !user.getGzhOpenId().equals(openId)){
+                throw new CustomException("该账号已绑定微信,请使用绑定微信扫码登入");
+            }
+            //登入和补充公众号openId
+            user.setGzhOpenId(openId);
+            iUserService.updateById(user);
+            ClientLoginUser loginUser = new ClientLoginUser();
+            loginUser.setUser(user);
+            map.put(Constants.TOKEN, wxTokenService.createToken(loginUser));
+            map.put("gzhStatus", "1");
+            return map;
+        }
+        //校验公众号openId
+        User user = iUserService.getUserByGzhOpenId(openId);
+        if (ObjectUtils.isNull(user)){
+            map.put("gzhStatus", "0");
+            return map;
+        }
+        ClientLoginUser loginUser = new ClientLoginUser();
+        loginUser.setUser(user);
+        map.put(Constants.TOKEN, wxTokenService.createToken(loginUser));
+        map.put("gzhStatus", "1");
+        return map;
+    }
 }

+ 6 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/system/domain/SysTenant.java

@@ -125,4 +125,10 @@ private static final long serialVersionUID=1L;
     private Integer studentRestudy;
     /** 学员密码默认更改天数*/
     private Integer pwdCheckTime;
+    /** 账号密码登录标识:1隐藏 0显示*/
+    private Integer loginSign;
+    /** 微信登录标识:1隐藏 0显示 */
+    private Integer wxSign;
+    /** 手机验证码登录标识:1隐藏 0显示 */
+    private Integer telSign;
 }

+ 6 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/system/service/ISysTenantService.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.zhongzheng.modules.system.bo.*;
 import com.zhongzheng.modules.system.domain.SysTenant;
 import com.zhongzheng.modules.system.vo.SysTenantBankAccountVo;
+import com.zhongzheng.modules.system.vo.SysTenantLoginSignVo;
 import com.zhongzheng.modules.system.vo.SysTenantVo;
 
 import java.util.Collection;
@@ -73,4 +74,9 @@ public interface ISysTenantService extends IService<SysTenant> {
     List<SysTenant> getListNoTenant(Long tenantId);
 
 	List<SysTenant> getExamRoomTenant();
+
+    SysTenantLoginSignVo getSysLoginSign();
+
+	String getSysStudyPrompt();
+
 }

+ 16 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/system/vo/SysTenantLoginSignVo.java

@@ -0,0 +1,16 @@
+package com.zhongzheng.modules.system.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class SysTenantLoginSignVo implements Serializable {
+
+    /** 账号密码登录标识:1隐藏 0显示*/
+    private Integer loginSign;
+    /** 微信登录标识:1隐藏 0显示 */
+    private Integer wxSign;
+    /** 手机验证码登录标识:1隐藏 0显示 */
+    private Integer telSign;
+}

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

@@ -172,4 +172,6 @@ public interface IUserService extends IService<User> {
     String studyRecord(List<UserStudyExportVo> customerBos);
 
 	Integer getBusinessPhotoSign(Long orderGoodsId);
+
+	User getUserByGzhOpenId(String openId);
 }

+ 6 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/wx/bo/WxLoginBody.java

@@ -65,4 +65,10 @@ public class WxLoginBody {
 
     @ApiModelProperty("小程序openId")
     private String openId;
+
+    @ApiModelProperty("账号")
+    private String account;
+
+    @ApiModelProperty("密码")
+    private String password;
 }