ソースを参照

企微扫码登录

seyason 2 年 前
コミット
12f87681cb

+ 2 - 7
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/AuthRedirectController.java

@@ -225,11 +225,10 @@ public class AuthRedirectController {
 
                     }
                 }
-                reqParam.put("hasTriedAutoLogin", 1);
                 if (!StringUtils.isEmpty(state) && state.length() > 1) {
                     reqParam.put("path", state);
                 }
-                String router = "index";
+                String router = "login";
                 if (companyId > 0) {
                     HashMap compExpireInfo = getCompExpireInfo(companyId);
                     if (compExpireInfo != null) {
@@ -239,11 +238,7 @@ public class AuthRedirectController {
                         reqParam.put("version", compExpireInfo.get("version"));
                     }
                 }
-                if (isMobile) {
-                    redirecUrl = "http://mobworktime.ttkuaiban.com/#/" + router;
-                } else {
-                    redirecUrl = "http://worktime.ttkuaiban.com/#/" + router;
-                }
+                redirecUrl = "http://worktime.ttkuaiban.com/#/" + router;
             }
         }
         ModelAndView modelAndView = new ModelAndView(

+ 64 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ExpenseSheetServiceImpl.java

@@ -54,9 +54,13 @@ import java.util.stream.Collectors;
 @Service
 @Transactional
 public class ExpenseSheetServiceImpl extends ServiceImpl<ExpenseSheetMapper, ExpenseSheet> implements ExpenseSheetService {
+    @Resource
+    private HttpServletRequest request;
     @Resource
     private UserMapper userMapper;
     @Resource
+    private InformationMapper informationMapper;
+    @Resource
     private ExpenseSheetMapper expenseSheetMapper;
     @Resource
     private ExpenseItemService expenseItemService;
@@ -262,23 +266,83 @@ public class ExpenseSheetServiceImpl extends ServiceImpl<ExpenseSheetMapper, Exp
 
     @Override
     public HttpRespMsg approve(Integer id) {
+        String token = request.getHeader("TOKEN");
+        User user = userMapper.selectById(token);
         ExpenseSheet sheet = new ExpenseSheet();
         sheet.setId(id);
         sheet.setStatus(0);
         expenseSheetMapper.updateById(sheet);
+
+        sheet = expenseSheetMapper.selectById(id);
+        WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", user.getCompanyId()));
+        if (wxCorpInfo != null) {
+            sendAuditResult(wxCorpInfo, user, sheet, null);
+        }
+        saveNotifyToApplier(sheet, user);
+
         return new HttpRespMsg();
     }
 
     @Override
     public HttpRespMsg deny(Integer id,String denyReason) {
+        String token = request.getHeader("TOKEN");
+        User user = userMapper.selectById(token);
         ExpenseSheet sheet = new ExpenseSheet();
         sheet.setId(id);
         sheet.setStatus(2);
         sheet.setDenyReason(denyReason);
         expenseSheetMapper.updateById(sheet);
+
+        //给填报人发送消息
+        sheet = expenseSheetMapper.selectById(id);
+        WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", user.getCompanyId()));
+        if (wxCorpInfo != null) {
+            sendAuditResult(wxCorpInfo, user, sheet, denyReason);
+        }
+        saveNotifyToApplier(sheet, user);
+
         return new HttpRespMsg();
     }
 
+
+    //发送审核结果消息提醒
+    private void sendAuditResult(WxCorpInfo wxCorpInfo, User auditor, ExpenseSheet sheet, String denyReason) {
+        //推送到企业微信
+        StringBuilder stringBuilder = new StringBuilder();
+        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("M月d日");
+        stringBuilder.append("$userName="+auditor.getCorpwxUserid()+"$")
+                .append(sheet.getStatus() == 0?"通过":"驳回")
+                .append("了您")
+                .append(dateTimeFormatter.format(sheet.getCreateDate()))
+                .append("的费用报销申请。");
+        if (sheet.getStatus() == 2) {
+            //驳回加原因
+            stringBuilder.append("原因: ").append(denyReason);
+        }
+
+        String ownerId = sheet.getOwnerId();
+        User owner = userMapper.selectById(ownerId);
+        wxCorpInfoService.sendWXCorpMsg(wxCorpInfo,owner.getCorpwxUserid(), stringBuilder.toString(), "expense",
+                sheet.getStatus() == 0?WxCorpInfoServiceImpl.TEXT_CARD_MSG_EXPENSE_AGREE:WxCorpInfoServiceImpl.TEXT_CARD_MSG_EXPENSE_DENY);
+
+    }
+
+
+    private void saveNotifyToApplier(ExpenseSheet sheet, User auditor) {
+        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("M月d日");
+        String ownerId = sheet.getOwnerId();
+        User owner = userMapper.selectById(ownerId);
+        //系统内消息
+        Information information=new Information();
+        information.setUserId(owner.getId());
+        information.setTime(LocalDateTime.now());
+        information.setMsg("您"+dateTimeFormatter.format(sheet.getCreateDate()) + "费用报销申请审核"+(sheet.getStatus() == 0?"已通过":"已驳回")+", 审核人:"
+                +(auditor.getCorpwxUserid() != null ? ("$userName="+auditor.getCorpwxUserid()+"$"):auditor.getName()));
+        information.setType(3);//费用报销模块
+        information.setContent(sheet.getId()+"");
+        informationMapper.insert(information);
+    }
+
     @Override
     public HttpRespMsg importData(HttpServletRequest request,MultipartFile[] files) {
         HttpRespMsg msg = new HttpRespMsg();

+ 2 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/WxCorpInfoServiceImpl.java

@@ -76,7 +76,8 @@ public class WxCorpInfoServiceImpl extends ServiceImpl<WxCorpInfoMapper, WxCorpI
     public static final int TEXT_CARD_MSG_REPORT_DENY = 10;//日报驳回
     public static final int TEXT_CARD_MSG_REPORT_AGREE = 11; //日报审核通过
 
-    public static final HashMap CURSOR=new HashMap();
+    public static final int TEXT_CARD_MSG_EXPENSE_AGREE = 21;//费用报销审核通过
+    public static final int TEXT_CARD_MSG_EXPENSE_DENY = 22;//费用报销审核驳回
 
     @Value("${suitId}")
     private String suitId;

+ 2 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/resources/application.yml

@@ -15,7 +15,7 @@ spring:
       location: C:/upload/
   datasource:
     driver-class-name: com.mysql.cj.jdbc.Driver
-    url: jdbc:mysql://47.101.180.183:3306/man_dev?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&useSSL=false
+    url: jdbc:mysql://47.101.180.183:3306/man_mld?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&useSSL=false
     username: root
     password: HuoshiDB@2022
     hikari:
@@ -131,7 +131,7 @@ referer:
     - mldworktime.ttkuaiban.com
     - gs.farben.com.cn
     - 47.101.180.183
-excludeUrls: /wxcorp/*,/wxcorp/*/*,/dingding/*,/error,/testClient,/corpWXAuth,/corpInsideWXAuth,/wx-corp-info/*,/clean/*,/innerRoles/*,/report/getReportListByToken,/report/getProcessErrorData,/project/synchronizationProject
+excludeUrls: /wxcorp/*,/wxcorp/*/*,/dingding/*,/error,/testClient,/corpWXAuth,/corpWXScanningAuth,/corpInsideWXAuth,/wx-corp-info/*,/clean/*,/innerRoles/*,/report/getReportListByToken,/report/getProcessErrorData,/project/synchronizationProject
 
 #企业微信相关参数
 suitId: ww4e237fd6abb635af

+ 15 - 3
fhKeeper/formulahousekeeper/timesheet/src/views/Login.vue

@@ -109,9 +109,9 @@
             if (ua.indexOf("wxwork") > 0) {
                 this.isCorpWX = true;
             } 
+            let href = window.location.href;
             if (this.isCorpWX) {
                 //企业微信环境下,尝试自动登录
-                let href = window.location.href;
                 //判断企业微信,是否存在授权
                 //尝试自动登录
                 if (href.indexOf('hasTriedAutoLogin') == -1) {
@@ -147,7 +147,19 @@
                     }
                 }
             } else {
-                if (localStorage.userInfo != null) {
+                //浏览器上使用扫码登录
+                if (href.indexOf("userId") > 0) {
+                    //后台经过验证后,重定向过来带上了userId
+                    var loginUserId = href.substring(href.indexOf("userId=")+"userId=".length);
+                    if (loginUserId.includes('#/')) {
+                        loginUserId = loginUserId.substring(0, loginUserId.indexOf('#/'));
+                    }
+                    var path = null;
+                    if (href.indexOf('path') > 0) {
+                        path = href.split('path=')[1].split('&')[0];
+                    }
+                    this.loginByUserId(loginUserId, path);
+                } else if (localStorage.userInfo != null) {
                     var user = JSON.parse(localStorage.userInfo);
                     if (user.company.packageSimple == 1) {
                         //简易模式,直接进入工时统计表
@@ -211,7 +223,7 @@
                 // })
                 var appId = "wwf11426cf618e1703";//企业微信第三方的SUIT ID
                 var url = "http://worktime.ttkuaiban.com/api/corpWXScanningAuth";//授权回调页面
-                var weixinUrl=`https://open.work.weixin.qq.com/wwopen/sso/3rd_qrConnect?appid=${appId}&redirect_uri=${url}&state=99276&usertype=member`;
+                var weixinUrl=`https://open.work.weixin.qq.com/wwopen/sso/3rd_qrConnect?appid=${appId}&redirect_uri=${url}&state=0&usertype=member`;
                 window.location.href = weixinUrl;
             },
             getStaffInfo() {

+ 1 - 1
fhKeeper/formulahousekeeper/timesheet/src/views/team/index.vue

@@ -215,7 +215,7 @@
                 </el-table-column>
                 <el-table-column :label="$t('state.states')" width="100">
                     <template slot-scope="scope">
-                        <span>{{scope.row.isActive==0 ? $t('ting-yong')+'(' + scope.row.inactiveDate + ')' : $t('zai-zhi')}}</span>
+                        <span>{{scope.row.isActive==0 ? $t('ting-yong')+(scope.row.inactiveDate != null? '(' + scope.row.inactiveDate + ')':''): $t('zai-zhi')}}</span>
                     </template>
                 </el-table-column>
                 <el-table-column :label="$t('creationtime')" width="150" prop="createTime">