无关风月
2025-05-08 9486766c806fe1d9e082b2fd02ea1cc558f1b443
cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/TaskUtil.java
@@ -1,8 +1,20 @@
package com.dsh.guns.modular.system.util;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.dsh.guns.modular.system.model.OperatorAuth;
import com.dsh.guns.modular.system.model.OperatorAuthAlipay;
import com.dsh.guns.modular.system.model.OperatorUser;
import com.dsh.guns.modular.system.model.TOperator;
import com.dsh.guns.modular.system.service.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.List;
/**
@@ -10,12 +22,131 @@
 */
@Component
public class TaskUtil {
    @Autowired
    private TOperatorService operatorService;
    @Autowired
    private TOperatorCityService operatorCityService;
    @Autowired
    private IOperatorAuthService operatorAuthService;
    @Autowired
    private IOperatorAuthWxService operatorAuthWxService;
    @Autowired
    private IOperatorUserService operatorUserService;
    // 每隔5分钟执行一次 查询商户支付宝和微信绑定状态
    @Scheduled(fixedRate = 5 * 60 * 1000)
    public void queryWxAndZfbState() {
        // 支付宝
        List<OperatorAuthAlipay> list = operatorAuthService.list();
        for (OperatorAuthAlipay operatorAuthAlipay : list) {
            OperatorUser operatorId = operatorUserService.getOne(new QueryWrapper<OperatorUser>()
                    .eq("operatorId", operatorAuthAlipay.getOperatorId()));
            if (operatorId == null)return;
            operatorId.setAlipayAudit(operatorAuthAlipay.getAuditState());
            operatorUserService.updateById(operatorId);
        }
        // 微信
        List<OperatorAuth> list1 = operatorAuthWxService.list();
        for (OperatorAuth operatorAuth : list1) {
            OperatorUser operatorId = operatorUserService.getOne(new QueryWrapper<OperatorUser>()
                    .eq("operatorId", operatorAuth.getOperatorId()));
            if (operatorId == null)return;
            operatorId.setWechatAudit(operatorAuth.getAuditState());
            operatorUserService.updateById(operatorId);
        }
    }
    // 每隔5分钟执行一次 查询商户支付宝和微信绑定状态 如果两者都进件成功 那么修改t_operator表为商户绑定成功状态
    @Scheduled(fixedRate = 5 * 60 * 1000)
    public void queryOperatorState() {
        List<TOperator> list2 = operatorService.list();
        for (TOperator tOperator : list2) {
            OperatorUser operatorId = operatorUserService.getOne(new QueryWrapper<OperatorUser>()
                    .eq("operatorId", tOperator.getId()));
            if (operatorId == null)return;
            if (operatorId.getAlipayAudit() == 2 && operatorId.getWechatAudit() == 2){
                tOperator.setState(2);
                operatorService.updateById(tOperator);
            }
        }
    }
    @Scheduled(fixedRate = 1 * 60 * 1000)
    public void queryOperatorState1() {
        List<OperatorAuth> list = operatorAuthWxService.list();
        for (OperatorAuth operatorAuth : list) {
            queryState(operatorAuth.getOrderNo());
        }
    }
    /**
     * 查询进件申请单审核状态
     */
    public JSONObject queryState(String orderNo) {
        String url = "https://api.mch.weixin.qq.com/v3/ecommerce/applyments/out-request-no/"+orderNo;
        String req1 = HttpRequestUtil.getReq1(url, new HashMap<>());
        System.err.println("查询申请单审核状态字符串"+req1);
        JSONObject jsonObject = JSON.parseObject(req1);
        System.err.println("查询申请单审核状态Json"+jsonObject);
        String applymentState = jsonObject.getString("applyment_state");
        String outBizNo = jsonObject.getString("out_request_no");
        OperatorAuth operatorAuth = operatorAuthWxService.getOne(
                new QueryWrapper<OperatorAuth>()
                        .eq("outBizNo", outBizNo));
        if (operatorAuth == null)return null;
        OperatorUser operatorUser = operatorUserService.getOne(new QueryWrapper<OperatorUser>()
                .eq("operatorId", operatorAuth.getOperatorId()));
        // 审核状态
        operatorAuth.setApplymentState(applymentState);
        if (applymentState.equals("REJECTED") || applymentState.equals("FROZEN")){
            operatorUser.setWechatAudit(3);
            operatorAuth.setAuditState(2);
            // 如果被拒 赋值拒绝原因
            operatorAuth.setRefuseReason(jsonObject.getJSONObject("audit_detail").getString("reject_reason"));
        }
        if (applymentState.equals("NEED_SIGN")){
            operatorAuth.setSignUrl(jsonObject.getString("sign_url"));
            operatorAuth.setMerchantNumber(jsonObject.getString("sub_mchid"));
        }
        if (applymentState.equals("FINISH")){
            operatorAuth.setMerchantNumber(jsonObject.getString("sub_mchid"));
            operatorUser.setWechatAudit(2);
            operatorAuth.setAuditState(1);
        }
        if (applymentState.equals("ACCOUNT_NEED_VERIFY")){
            operatorAuth.setLegalValidationUrl(jsonObject.getString("legal_validation_url"));
        }
        return jsonObject;
        /**
         * {
         *   "applyment_state" : "FINISH",
         *   "applyment_state_desc" : "审核中",
         *   "sign_url" : "https://pay.weixin.qq.com/public/apply4ec_sign/s?applymentId=2000002126198476&sign=b207b673049a32c858f3aabd7d27c7ec",
         *   "sub_mchid" : "1542488631",
         *   "account_validation" : {
         *     "account_name" : "aOf7Gk2qT26kakkuTZpbFAn7Mb7xcar0LlQaYoi3+LnnWwgAsfaUUTg9+GmYJq6YCz+RiluWHeHFq1lt8n3eIkF0laVvqmAU80xIWGZgWJnRmnRuZxsg0HJZfnUac2JfqyuL8OoyM2YSuYDqdsyvcOlgUQgq8MPCR6pmvhBCmIeJvnVSm8J+L+yx912itUmTDxhdBlu1CFBIUefME9nYB70vCVTNAVXgURkf65mjHMBiE9Y+wrPZVmTIIz3C3PtPVMZYDEvBT4rDdICA3ZYXshYqeOSslSjSMf+MhhC4oaujiISFzq3AE+as7mAEDJly+DgRuVs74msmKUH8pl+3oA==",
         *     "account_no" : "aOf7Gk2qT26kakkuTZpbFAn7Mb7xcar0LlQaYoi3+LnnWwgAsfaUUTg9+GmYJq6YCz+RiluWHeHFq1lt8n3eIkF0laVvqmAU80xIWGZgWJnRmnRuZxsg0HJZfnUac2JfqyuL8OoyM2YSuYDqdsyvcOlgUQgq8MPCR6pmvhBCmIeJvnVSm8J+L+yx912itUmTDxhdBlu1CFBIUefME9nYB70vCVTNAVXgURkf65mjHMBiE9Y+wrPZVmTIIz3C3PtPVMZYDEvBT4rDdICA3ZYXshYqeOSslSjSMf+MhhC4oaujiISFzq3AE+as7mAEDJly+DgRuVs74msmKUH8pl+3oA==",
         *     "pay_amount" : 124,
         *     "destination_account_number" : "7222223333322332",
         *     "destination_account_name" : "财付通支付科技有限公司",
         *     "destination_account_bank" : "招商银行威盛大厦支行",
         *     "city" : "深圳",
         *     "remark" : "入驻账户验证",
         *     "deadline" : "2018-12-10 17:09:01"
         *   },
         *   "audit_detail" : [
         *     {
         *       "param_name" : "id_card_copy",
         *       "reject_reason" : "身份证背面识别失败,请上传更清晰的身份证图片。"
         *     }
         *   ],
         *   "legal_validation_url" : "https://pay.weixin.qq.com/public/apply4ec_sign/s?applymentId=2000002126198476&sign=b207b673049a32c858f3aabd7d27c7ec",
         *   "out_request_no" : "APPLYMENT_00000000001",
         *   "applyment_id" : 2000002124775691,
         *   "sign_state" : "SIGNED"
         * }
         */
    }
    /**
     * 每月第一天的1点执行的任务