浏览代码

企业微信接口

pengjing 7 月之前
父节点
当前提交
bc5235cd64

+ 9 - 4
parth5/parth5/src/app/api/account/index.ts

@@ -5,7 +5,7 @@ import {DESModel, DesService} from "../../service/des.service";
 
 @Injectable({providedIn: 'root'})
 export class AccountApi {
-  constructor(private configService: ConfigService,private desService: DesService) {
+  constructor(private configService: ConfigService, private desService: DesService) {
   }
 
   login(model: DESModel): Observable<RequsetData> {
@@ -13,9 +13,14 @@ export class AccountApi {
   }
 
   loginByWxUserId(wxUserId: string): Observable<RequsetData> {
-    let id = this.desService.GetToken(wxUserId);
-    return this.configService.HttpGetRomote('/appApi/home/loginByWxUserId', {
-      id
+    let desModel = this.desService.GetToken(wxUserId);
+    return this.configService.HttpPostRomote('/appApi/home/loginByWxUserId', desModel);
+  }
+
+  bindWxUserId(userId: string, wxUserId: string): Observable<RequsetData> {
+    return this.configService.HttpPostRomote('/appApi/home/bindWxUserId', {
+      userId: userId,
+      wxUserId: wxUserId
     });
   }
 

+ 3 - 3
parth5/parth5/src/app/views/index/index.page.ts

@@ -32,16 +32,16 @@ export class IndexPage implements OnInit {
 
     if (this.wxcpService.isWechat() && this.routePath.indexOf("wxMessage") < 0) {
       const wxUserId = urlParams["wxUserId"] || this.userService.getWxUserID();
-      if (!wxUserId) {
+      if (wxUserId) {
         //根据微信用户id登录系统
-        this.accountService.loginByWxUserId(wxUserId, null);
+        this.accountService.loginByWxUserId(wxUserId, null).then(e => {
+        });
       } else {
         this.wxcpService.wxAuth(this.routePath);
       }
     } else {
       this.router.navigate([this.routePath], {queryParams: {random: Math.random()}});
     }
-
   }
 
 }

+ 6 - 0
parth5/parth5/src/app/views/login/login.page.html

@@ -14,6 +14,12 @@
     <ion-icon name="lock-closed-outline"></ion-icon>
     <ion-input [(ngModel)]="userPwd" type="password" placeholder="请输入密码"></ion-input>
   </ion-item>
+  <ion-item style="padding-left: 20px;">
+    <ion-checkbox [(ngModel)]="isBindWxUser"></ion-checkbox>
+    <ion-label style="padding-left: 10px;">绑定微信账号
+      <span>{{wxUserId}}</span>
+    </ion-label>
+  </ion-item>
   <div style="text-align: center;padding-top: 30px;">
     <ion-button clickLog logTitle="app.login-click" [logUserid]="userLid" logOpmodule="用户登录" fill="solid"
                 (click)="Login()" style="width: 80%;font-size: 20px;font-weight: bold;--border-radius: 18px;height: 40px;--background:#E80000" >登    录

+ 13 - 1
parth5/parth5/src/app/views/login/login.page.ts

@@ -8,6 +8,8 @@ import {DESModel, DesService} from '../../service/des.service';
 import {LoadingController} from '@ionic/angular';
 import {UsemodularService} from "../../service/usemodular.service";
 import {WxpayService} from "../../service/wxpay.service";
+import {getUrlParams} from "../../utils/urlUtils";
+import {AccountApi} from "../../api/account";
 
 @Component({
   selector: 'app-login',
@@ -22,11 +24,13 @@ export class LoginPage implements OnInit {
   userLid: string = '';
   userPwd: string = '';
   isDev: boolean = false;
+  wxUserId: string = '';
+  isBindWxUser: boolean = false;
 
   constructor(private router: Router, private route: ActivatedRoute,
               private configService: ConfigService, private userService: UserService, private jsBridgeService: JsBridgeService,
               private desService: DesService, private loadingController: LoadingController, private usemodularService: UsemodularService,
-              private wxpayService: WxpayService) {
+              private wxpayService: WxpayService, private accountApi: AccountApi) {
     this.route.queryParams.subscribe(params => {
 
     });
@@ -36,6 +40,11 @@ export class LoginPage implements OnInit {
     });
   }
 
+  ionViewWillEnter() {
+    const urlParams = getUrlParams() as any;
+    this.wxUserId = urlParams["wxUserId"] || this.userService.getWxUserID();
+  }
+
   /*ionViewWillEnter(){
     this.wxpayService.getWechatCode();
   }*/
@@ -64,6 +73,9 @@ export class LoginPage implements OnInit {
         this.userService.ReadUserDataScope(req.item.curRoleId, this.configService);
         this.usemodularService.getButtonList();
         //this.configService.HttpPostRomote()
+        if (this.isBindWxUser) {
+          this.accountApi.bindWxUserId(this.userService.GetUser().userid, this.wxUserId).subscribe(e=>{});
+        }
         this.router.navigate(['/tapp/tabs/tabMain']);
       } else {
         this.errorShow = true;

+ 91 - 57
src/main/java/com/ghsc/partybuild/controller/app/AppHomeController.java

@@ -471,80 +471,114 @@ public class AppHomeController {
             if (cfUsers == null)
                 throw new Exception("");
 
-            request.setAttribute("UserLoginId", desDatas[0]);
+            res = loginSuccessBack(response, request, cfUsers);
+        } catch (Exception ex) {
+            res.setSuccess(false);
+            res.setMsg("用户名或密码错误!");
+        }
 
-            user.put("id", cfUsers.getUserid());
-            user.putAll(userService.extendUserPartyInfo((String) user.get("id")));
-            user.put("userid", user.get("id"));
-            user.put("username", user.get("name"));
+        return res;
+    }
 
+    @PostMapping("/loginByWxUserId")
+    public RequsetData<Map<String, Object>> loginByWxUserId(HttpServletResponse response, HttpServletRequest request, @RequestBody DesModel model) {
+        RequsetData<Map<String, Object>> res = new RequsetData<>();
+        Map<String, Object> user = new HashMap<>();
+
+        try {
+            String dataLogin = commonService.DesTokenData(model.getToken(), dateUtils.DateToDateTime(model.getTm()));
+            String[] desDatas = dataLogin.split("\\|");
 
-            List<CfRoles> userRoles = roleService.getRolesByUid(user.get("id").toString());
-            Map<String, Object> ext = new HashMap<>();
-            ext.put("userRoles", userRoles);
+            CfUsers cfUsers = userService.loginByWxUserId(desDatas[0]);
+            if (cfUsers == null)
+                throw new Exception("");
 
-            if (userRoles.size() > 0 && user.get("id") != null) {
-                String dataDzzdm = userService.getUserDzzdmForShowData(user.get("id").toString(), userRoles.get(0).getRoleid()), dataDzzmc = "";
-                if (!stringUtils.IsNullOrEmpty(dataDzzdm)) {
-                    ZzZzqkxx party = partyService.getPartyByDm(dataDzzdm);
-                    dataDzzmc = party != null ? party.getDzzmc() : "";
-                }
+            res = loginSuccessBack(response, request, cfUsers);
 
-                user.put("dataDzzdm", dataDzzdm);//数据范围
-                user.put("dataDzzmc", dataDzzmc);//数据范围
-                user.put("dataScope", userService.getUserDataScope(user.get("id").toString(), userRoles.get(0).getRoleid()));//数据范围
-            }
-            if (user.get("DZZDM") != null) {
-                //个人所属党委
-                ZzZzqkxx dwModel = partyService.getUserDwInfo(user.get("DZZDM").toString());
-                if (dwModel != null) {
-                    user.put("dwdm", dwModel.getDzzdm());
-                    user.put("dwmc", dwModel.getDzzmc());
-                }
+        } catch (Exception ex) {
+            res.setSuccess(false);
+            res.setMsg("用户名或密码错误!");
+        }
 
-                //个人所属党支部(总支)
-                ZzZzqkxx dzzModel = partyService.getUserDZZInfo(user.get("DZZDM").toString());
-                if (dzzModel != null) {
-                    user.put("dzbdm", dzzModel.getDzzdm());
-                    user.put("dzbmc", dzzModel.getDzzmc());
-                }
+        return res;
+    }
+
+    public RequsetData<Map<String, Object>> loginSuccessBack(HttpServletResponse response, HttpServletRequest request, CfUsers cfUsers) {
+        RequsetData<Map<String, Object>> res = new RequsetData<>();
+        Map<String, Object> user = new HashMap<>();
+
+        request.setAttribute("UserLoginId", cfUsers.getUsername());
+
+        user.put("id", cfUsers.getUserid());
+        user.putAll(userService.extendUserPartyInfo((String) user.get("id")));
+        user.put("userid", user.get("id"));
+        user.put("username", user.get("name"));
+
+        List<CfRoles> userRoles = roleService.getRolesByUid(user.get("id").toString());
+        Map<String, Object> ext = new HashMap<>();
+        ext.put("userRoles", userRoles);
+
+        if (userRoles.size() > 0 && user.get("id") != null) {
+            String dataDzzdm = userService.getUserDzzdmForShowData(user.get("id").toString(), userRoles.get(0).getRoleid()), dataDzzmc = "";
+            if (!stringUtils.IsNullOrEmpty(dataDzzdm)) {
+                ZzZzqkxx party = partyService.getPartyByDm(dataDzzdm);
+                dataDzzmc = party != null ? party.getDzzmc() : "";
             }
 
-            ext.put("userInfo", partyUserService.getUserInfo(cfUsers.getUserid()));
-            res.setExtdata(ext);
+            user.put("dataDzzdm", dataDzzdm);//数据范围
+            user.put("dataDzzmc", dataDzzmc);//数据范围
+            user.put("dataScope", userService.getUserDataScope(user.get("id").toString(), userRoles.get(0).getRoleid()));//数据范围
+        }
+        if (user.get("DZZDM") != null) {
+            //个人所属党委
+            ZzZzqkxx dwModel = partyService.getUserDwInfo(user.get("DZZDM").toString());
+            if (dwModel != null) {
+                user.put("dwdm", dwModel.getDzzdm());
+                user.put("dwmc", dwModel.getDzzmc());
+            }
 
-            CfLog log = new CfLog();
+            //个人所属党支部(总支)
+            ZzZzqkxx dzzModel = partyService.getUserDZZInfo(user.get("DZZDM").toString());
+            if (dzzModel != null) {
+                user.put("dzbdm", dzzModel.getDzzdm());
+                user.put("dzbmc", dzzModel.getDzzmc());
+            }
+        }
 
-            log.setRequestip(IpUtils.getIpAddr(request));
-            log.setOpmodule("用户登录");
-            log.setUserid(user.get("id").toString());
-            log.setLogtitle("login");
-            log.setClientinfo("App");
-            log.setResponsetime(0);
-            log.setIserror(0);
-            logService.SaveLog(log);
+        ext.put("userInfo", partyUserService.getUserInfo(cfUsers.getUserid()));
+        res.setExtdata(ext);
 
-            UsernamePasswordToken userToken = new UsernamePasswordToken(desDatas[0], desDatas[1].toUpperCase());
-            org.apache.shiro.subject.Subject currentUser = SecurityUtils.getSubject();
-            currentUser.login(userToken);
-            String token = jwtUtils.generateToken(cfUsers.getUserid());
+        CfLog log = new CfLog();
+        log.setRequestip(IpUtils.getIpAddr(request));
+        log.setOpmodule("用户登录");
+        log.setUserid(user.get("id").toString());
+        log.setLogtitle("login");
+        log.setClientinfo("App");
+        log.setResponsetime(0);
+        log.setIserror(0);
+        logService.SaveLog(log);
 
-            /*Cookie cookie = new Cookie(jwtUtils.getTokenName(), token);
-            cookie.setHttpOnly(true);
-            cookie.setPath("/");
-            response.addCookie(cookie);*/
+        UsernamePasswordToken userToken = new UsernamePasswordToken(cfUsers.getUsername(), cfUsers.getUserpwd().toUpperCase());
+        org.apache.shiro.subject.Subject currentUser = SecurityUtils.getSubject();
+        currentUser.login(userToken);
+        String token = jwtUtils.generateToken(cfUsers.getUserid());
 
-            user.put(jwtUtils.getTokenName(), token);
+        user.put(jwtUtils.getTokenName(), token);
 
-            res.setItem(user);
+        res.setItem(user);
 
-            res.setSuccess(true);
+        res.setSuccess(true);
 
-        } catch (Exception ex) {
-            res.setSuccess(false);
-            res.setMsg("用户名或密码错误!");
-        }
 
         return res;
     }
+
+    @PostMapping("/bindWxUserId")
+    public void bindWxUserId(@RequestBody Map<String, Object> reqMap) {
+        String userId = reqMap.get("userId").toString();
+        String wxUserId = reqMap.get("wxUserId").toString();
+
+        userService.bindWxUserId(userId, wxUserId);
+    }
+
 }

+ 4 - 0
src/main/java/com/ghsc/partybuild/service/UserService.java

@@ -412,4 +412,8 @@ public interface UserService {
 
     CfUsers login(String account,String password);
 
+    CfUsers loginByWxUserId(String wxUserId);
+
+    void bindWxUserId(String userId,String wxUserId);
+
 }

+ 15 - 0
src/main/java/com/ghsc/partybuild/service/impl/UserServiceImpl.java

@@ -1280,4 +1280,19 @@ public class UserServiceImpl implements UserService {
 
         return cfUsersMapper.selectByExample(exp).stream().findFirst().orElse(null);
     }
+
+    public CfUsers loginByWxUserId(String wxUserId) {
+        CfUsersExample exp = new CfUsersExample();
+        CfUsersExample.Criteria cri = exp.or();
+        cri.andWxuseridEqualTo(wxUserId.trim());
+
+        return cfUsersMapper.selectByExample(exp).stream().findFirst().orElse(null);
+    }
+
+    public void bindWxUserId(String userId, String wxUserId) {
+        CfUsers cfUsers = cfUsersMapper.selectByPrimaryKey(userId);
+        cfUsers.setWxuserid(wxUserId);
+
+        cfUsersMapper.updateByPrimaryKey(cfUsers);
+    }
 }