Quellcode durchsuchen

Merge remote-tracking branch 'origin/master'

liweifan vor 3 Jahren
Ursprung
Commit
356b17191e

+ 3 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/MessageTypeEnum.java

@@ -77,6 +77,9 @@ public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
     NOT_EVALUATE_TEACHER_PRACTICE("NOT_EVALUATE_TEACHER_PRACTICE","当日陪练课未对老师评价(每晚9点,已评价不发)"),
     NOT_EVALUATE_TEACHER_PRACTICE("NOT_EVALUATE_TEACHER_PRACTICE","当日陪练课未对老师评价(每晚9点,已评价不发)"),
     FANSGROUP_APPLY_SUCCESS("FANSGROUP_APPLY_SUCCESS","粉丝群申请通过"),
     FANSGROUP_APPLY_SUCCESS("FANSGROUP_APPLY_SUCCESS","粉丝群申请通过"),
 
 
+    TEACHER_STYLE_VIDEO_SUCCESS("TEACHER_STYLE_VIDEO_SUCCESS","个人风采审核通过"),
+    TEACHER_STYLE_VIDEO_FAIL("TEACHER_STYLE_VIDEO_FAIL","个人风采审核失败"),
+
     //------短信模板------
     //------短信模板------
     SMS_BUY_LIVE("SMS_BUY_LIVE","直播课购买成功"),
     SMS_BUY_LIVE("SMS_BUY_LIVE","直播课购买成功"),
     SMS_LIVE_COMPLETION_SUCCESS("SMS_LIVE_COMPLETION_SUCCESS","直播课成课"),
     SMS_LIVE_COMPLETION_SUCCESS("SMS_LIVE_COMPLETION_SUCCESS","直播课成课"),

+ 47 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/LingXinService.java

@@ -0,0 +1,47 @@
+package com.yonge.cooleshow.biz.dal.service;
+
+/**
+ * @author: cy
+ * @date: 2022/5/18 14:52
+ */
+public interface LingXinService {
+    /**
+     * 签署协议
+     *
+     * @param realName 真实姓名
+     * @param idcard   身份证号
+     * @param mobileNo 手机号
+     * @param serialNo 唯一标识
+     * @return
+     */
+    boolean signContract(String realName, String idcard, String mobileNo, String serialNo);
+
+    /**
+     * 查询协议
+     *
+     * @param serialNo 唯一标识
+     * @return
+     */
+    String querySignContractResult(String serialNo);
+
+    /**
+     * 单笔提现
+     *
+     * @param outerOrderNo  唯一单号
+     * @param name          收款方姓名
+     * @param mobile        收款方电话
+     * @param certificateNo 收款方身份证号
+     * @param predictAmount 应发金额(单位为:分,范围: 1~10000000000)
+     * @param payAccount    收款方银行卡号
+     * @return
+     */
+    String withdraw(String outerOrderNo, String name, String mobile, String certificateNo, Integer predictAmount, String payAccount);
+
+    /**
+     * 查询接口
+     *
+     * @param outerOrderNo 商户唯一订单号
+     * @throws Exception
+     */
+    String query(String outerOrderNo);
+}

+ 236 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/LingXinServiceImpl.java

@@ -0,0 +1,236 @@
+package com.yonge.cooleshow.biz.dal.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.JSONPath;
+import com.yonge.cooleshow.biz.dal.service.LingXinService;
+import com.yonge.toolset.base.exception.ThirdpartyException;
+import com.yonge.toolset.thirdparty.lingxinpay.Md5EncryptUtils;
+import com.yonge.toolset.thirdparty.lingxinpay.RSA;
+import com.yonge.toolset.utils.date.DateUtil;
+import com.yonge.toolset.utils.http.HttpUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author: cy
+ * @date: 2022/5/18 14:54
+ */
+@Service("lingXinService")
+public class LingXinServiceImpl implements LingXinService {
+    private static final Logger logger = LoggerFactory.getLogger(LingXinServiceImpl.class);
+
+    @Value("${withdraw.publicKey}")
+    private String publicKey;
+    @Value("${withdraw.md5Key}")
+    private String md5Key;
+    @Value("${withdraw.memberNo}")
+    private String memberNo;// 商户号
+    @Value("${withdraw.contractNo}")
+    private String contractNo;// 模板协议号
+    @Value("${withdraw.contractNotifyUrl}")
+    private String contractNotifyUrl;//签署协议回调地址
+    @Value("${withdraw.contractApiUrl}")
+    private String contractApiUrl;//签署协议url
+    @Value("${withdraw.notifyUrl}")
+    private String notifyUrl;//提现回调地址
+    @Value("${withdraw.apiUrl}")
+    private String apiUrl;//提现第三方url
+
+    private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+
+    /**
+     * 签署协议
+     *
+     * @param realName 真实姓名
+     * @param idcard   身份证号
+     * @param mobileNo 手机号
+     * @param serialNo 唯一标识
+     * @return
+     */
+    public boolean signContract(String realName, String idcard, String mobileNo, String serialNo) {
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("signType", "RSA");
+        jsonObject.put("service", "bpotop.zx.contract");
+        jsonObject.put("charset", "UTF-8");
+        jsonObject.put("version", "1.0");
+        jsonObject.put("createTime", sdf.format(new Date()));
+
+        jsonObject.put("outMemberNo", memberNo);// 公司商户号
+        jsonObject.put("serialNo", serialNo);// 流水号(商户唯一标识)
+        jsonObject.put("contractNo", contractNo);// 合同模板号
+        jsonObject.put("notifyUrl", contractNotifyUrl);// 返回结果异步通知地址
+
+        JSONObject jsonObject2 = new JSONObject();
+        jsonObject2.put("name", realName);
+        jsonObject2.put("phone", mobileNo);
+        jsonObject2.put("identityId", idcard);
+        jsonObject2.put("citizenship", "0");
+        jsonObject2.put("signTime", sdf.format(new Date()));
+        jsonObject.put("contractSignInfo", jsonObject2);
+        String jsonStr = JSONObject.toJSONString(jsonObject);
+
+        try {
+            String encryptStr = RSA.encryptPub(jsonStr, publicKey);
+            jsonObject.put("sign", encryptStr);
+        } catch (Exception e) {
+            logger.error("加密失败", e);
+            throw new ThirdpartyException("加密失败:{}", e.getMessage());
+        }
+        logger.info("[合同签署]请求参数:{}", jsonObject.toJSONString());
+        try {
+            String s = HttpUtil.postForHttp(contractApiUrl + "/api/signContract", jsonObject.toJSONString(), null);
+            logger.info("请求[合同签署]响应参数:{}", s);
+
+            jsonObject = JSONObject.parseObject(s);
+            if (StringUtils.equals(jsonObject.getString("return_code"), "T")) {
+                return true;
+            }
+            throw new ThirdpartyException("合同签署失败:{}", jsonObject.getString("content"));
+        } catch (IOException e) {
+            logger.error("请求[合同签署]接口报错", e);
+            throw new ThirdpartyException("请求[合同签署]接口报错:{}", e.getMessage());
+        }
+    }
+
+    /**
+     * 查询协议
+     *
+     * @param serialNo 唯一标识
+     * @return
+     */
+    public String querySignContractResult(String serialNo) {
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("outMemberNo", memberNo);
+        jsonObject.put("serialNo", serialNo);
+        jsonObject.put("contractNo", contractNo);
+        try {
+            String encryptStr = RSA.encryptPub(JSONObject.toJSONString(jsonObject), publicKey);
+            jsonObject.put("sign", encryptStr);
+        } catch (Exception e) {
+            logger.error("加密失败", e);
+            throw new ThirdpartyException("加密失败:{}", e.getMessage());
+        }
+        jsonObject.put("signType", "RSA");
+        jsonObject.put("service", "bpotop.zx.contract");
+        jsonObject.put("charset", "UTF-8");
+        jsonObject.put("version", "1.0");
+        jsonObject.put("createTime", sdf.format(new Date()));
+        try {
+            String s = HttpUtil.postForHttp(contractApiUrl + "/api/queryContractInfo", jsonObject.toJSONString(), null);
+            logger.info("[合同查询]响应参数:{}", s);
+
+            jsonObject = JSONObject.parseObject(s);
+            if (StringUtils.equals(jsonObject.getString("return_code"), "T")) {
+                return (String) JSONPath.eval(jsonObject, "$.content.contractUrl");
+            }
+        } catch (IOException e) {
+            logger.error("请求[合同查询]接口报错", e);
+        }
+        return null;
+    }
+
+    /**
+     * 单笔提现
+     *
+     * @param outerOrderNo  商户唯一订单号
+     * @param name          收款方姓名(银行预留姓名等)
+     * @param mobile        收款方电话
+     * @param certificateNo 收款方身份证号
+     * @param predictAmount 应发金额(单位为:分,范围: 1~10000000000)
+     * @param payAccount    收款方账号(银行卡号/支付宝账号 /open_id)以实际业务为准
+     * @return
+     */
+    public String withdraw(String outerOrderNo, String name, String mobile, String certificateNo, Integer predictAmount,
+                           String payAccount) {
+        Map<String, Object> map = new HashMap<>();
+        map.put("outMemberNo", memberNo);
+        map.put("outerOrderNo", outerOrderNo);
+        map.put("name", name);
+        map.put("certificateNo", certificateNo);
+        map.put("predictAmount", predictAmount);
+        String signs = Md5EncryptUtils.sign(map, md5Key);
+
+        map.put("charset", "UTF-8");
+        map.put("mobile", mobile);
+        map.put("version", "1.1");
+        map.put("service", "bpotop.zx.pay.order");
+        map.put("Md5Key", signs);
+        map.put("notifyUrl", notifyUrl);
+        map.put("cardType", "DC");
+        map.put("salaryType", "4");
+        map.put("projectName", name + "-" + DateUtil.getStrDate());
+        map.put("payType", "1");
+        map.put("cardAttribute", "C");
+        map.put("payAccount", payAccount);
+        String jsonStr = JSONObject.toJSONString(map);
+
+        //签名
+        JSONObject mapParam = new JSONObject();
+        try {
+            //使用公钥加密
+            String encryptStr = RSA.encryptPub(jsonStr, publicKey);
+            mapParam.put("outMemberNo", memberNo);
+            mapParam.put("signType", "RSA");
+            mapParam.put("sign", encryptStr);
+            logger.info("单笔请求请求参数:{}", JSONObject.toJSONString(mapParam));
+        } catch (Exception e) {
+            logger.info("加密失败:{}", e);
+        }
+
+        //发送
+        try {
+            String resultJsonStr = HttpUtil.postForHttp(apiUrl + "/bpotop_trade/single", JSONObject.toJSONString(mapParam), null);
+            logger.info("单笔请求返回参数:{}", resultJsonStr);
+            return resultJsonStr;
+        } catch (IOException e) {
+            logger.info("发送失败:{}", e);
+        }
+        return null;
+    }
+
+    /**
+     * 查询接口
+     *
+     * @param outerOrderNo 商户唯一订单号
+     * @throws Exception
+     */
+    public String query(String outerOrderNo) {
+        Map<String, Object> requestMap = new HashMap<>();
+        requestMap.put("outMemberNo", memberNo);
+        requestMap.put("outerOrderNo", outerOrderNo);
+        requestMap.put("service", "bpotop.zx.pay.order");
+        requestMap.put("version", "1.0");
+        requestMap.put("signType", "RSA");
+        requestMap.put("charset", "UTF-8");
+        String jsonStr = JSONObject.toJSONString(requestMap);
+        String encryptStr = null;
+        try {
+            encryptStr = RSA.encryptPub(jsonStr, publicKey);
+        } catch (Exception e) {
+            throw new ThirdpartyException("加密失败:{}", e.getMessage());
+        }
+
+        Map<String, Object> requestMap2 = new HashMap<>();
+        requestMap2.put("outMemberNo", memberNo);
+        requestMap2.put("sign", encryptStr);
+        logger.info("单笔查询请求参数:{}", JSONObject.toJSONString(requestMap2));
+        String resultJsonStr = null;
+        try {
+            resultJsonStr = HttpUtil.postForHttp(apiUrl + "/bpotop_trade/order_query", JSONObject.toJSONString(requestMap2), null);
+            logger.info("单笔查询响应参数:{}", resultJsonStr);
+            return resultJsonStr;
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+}

+ 2 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherFreeTimeServiceImpl.java

@@ -46,7 +46,7 @@ public class TeacherFreeTimeServiceImpl extends ServiceImpl<TeacherFreeTimeDao,
                 teacherFreeTime.getFreeMinutes());
                 teacherFreeTime.getFreeMinutes());
         System.out.println(teacherFreeTime.getMonday());
         System.out.println(teacherFreeTime.getMonday());
         //结束时间减去休息时间
         //结束时间减去休息时间
-        if (StringUtil.isNotBlank(teacherFreeTime.getMonday())){
+/*        if (StringUtil.isNotBlank(teacherFreeTime.getMonday())){
             teacherFreeTime.setMonday(timeOffSet(teacherFreeTime.getMonday(), teacherFreeTime.getFreeMinutes()));
             teacherFreeTime.setMonday(timeOffSet(teacherFreeTime.getMonday(), teacherFreeTime.getFreeMinutes()));
         }
         }
         if (StringUtil.isNotBlank(teacherFreeTime.getTuesday())){
         if (StringUtil.isNotBlank(teacherFreeTime.getTuesday())){
@@ -66,7 +66,7 @@ public class TeacherFreeTimeServiceImpl extends ServiceImpl<TeacherFreeTimeDao,
         }
         }
         if (StringUtil.isNotBlank(teacherFreeTime.getSunday())){
         if (StringUtil.isNotBlank(teacherFreeTime.getSunday())){
             teacherFreeTime.setSunday(timeOffSet(teacherFreeTime.getSunday(),teacherFreeTime.getFreeMinutes()));
             teacherFreeTime.setSunday(timeOffSet(teacherFreeTime.getSunday(),teacherFreeTime.getFreeMinutes()));
-        }
+        }*/
 
 
         //删除原有设置
         //删除原有设置
         if(Objects.nonNull(oldTeacherFreeTime)){
         if(Objects.nonNull(oldTeacherFreeTime)){

+ 54 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherStyleVideoServiceImpl.java

@@ -2,6 +2,7 @@ package com.yonge.cooleshow.biz.dal.service.impl;
 
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dto.req.AuthOperaReq;
 import com.yonge.cooleshow.biz.dal.dto.req.AuthOperaReq;
 import com.yonge.cooleshow.biz.dal.dto.search.TeacherStyleSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.TeacherStyleSearch;
@@ -9,11 +10,18 @@ import com.yonge.cooleshow.biz.dal.dto.search.TeacherStyleVideoSearch;
 import com.yonge.cooleshow.biz.dal.entity.Teacher;
 import com.yonge.cooleshow.biz.dal.entity.Teacher;
 import com.yonge.cooleshow.biz.dal.entity.TeacherAuthMusicianRecord;
 import com.yonge.cooleshow.biz.dal.entity.TeacherAuthMusicianRecord;
 import com.yonge.cooleshow.biz.dal.enums.AuthStatusEnum;
 import com.yonge.cooleshow.biz.dal.enums.AuthStatusEnum;
+import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
+import com.yonge.cooleshow.biz.dal.enums.MessageTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
 import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
+import com.yonge.cooleshow.biz.dal.service.SysMessageService;
 import com.yonge.cooleshow.biz.dal.vo.TeacherStyleVideoVo;
 import com.yonge.cooleshow.biz.dal.vo.TeacherStyleVideoVo;
 import com.yonge.cooleshow.biz.dal.vo.TeacherVo;
 import com.yonge.cooleshow.biz.dal.vo.TeacherVo;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.toolset.thirdparty.message.MessageSenderPluginContext;
 import org.apache.commons.beanutils.BeanUtils;
 import org.apache.commons.beanutils.BeanUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import com.yonge.cooleshow.biz.dal.entity.TeacherStyleVideo;
 import com.yonge.cooleshow.biz.dal.entity.TeacherStyleVideo;
 import com.yonge.cooleshow.biz.dal.dao.TeacherStyleVideoDao;
 import com.yonge.cooleshow.biz.dal.dao.TeacherStyleVideoDao;
@@ -21,12 +29,24 @@ import com.yonge.cooleshow.biz.dal.service.TeacherStyleVideoService;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
 
 
 import java.util.Date;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
 import java.util.List;
+import java.util.Map;
 
 
 
 
 @Service
 @Service
 public class TeacherStyleVideoServiceImpl extends ServiceImpl<TeacherStyleVideoDao, TeacherStyleVideo> implements TeacherStyleVideoService {
 public class TeacherStyleVideoServiceImpl extends ServiceImpl<TeacherStyleVideoDao, TeacherStyleVideo> implements TeacherStyleVideoService {
 
 
+    private static final Logger log = LoggerFactory.getLogger(TeacherStyleVideoService.class);
+
+    @Autowired
+    private SysMessageService sysMessageService;
+
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+
+
     @Override
     @Override
     public TeacherStyleVideoVo detail(Long id) {
     public TeacherStyleVideoVo detail(Long id) {
         return baseMapper.detail(id);
         return baseMapper.detail(id);
@@ -49,7 +69,40 @@ public class TeacherStyleVideoServiceImpl extends ServiceImpl<TeacherStyleVideoD
         build.setReason(authOperaReq.getReason());
         build.setReason(authOperaReq.getReason());
         build.setVerifyUserId(sysUser.getId());
         build.setVerifyUserId(sysUser.getId());
         build.setUpdateTime(new Date());
         build.setUpdateTime(new Date());
-        return HttpResponseResult.succeed(baseMapper.updateById(build) > 0);
+        HttpResponseResult<Boolean> result = HttpResponseResult.succeed(baseMapper.updateById(build) > 0);
+        if (result.getStatus()) {
+            sendAuthMessage(authOperaReq.getPass(),build.getUserId(),authOperaReq.getReason());
+        }
+        return result;
+    }
+
+    /**
+     *  发送个人风采审核
+     *
+     * @param pass 通过/失败
+     */
+    private void sendAuthMessage(Boolean pass, Long teacherId,String remark) {
+        if (Boolean.TRUE.equals(pass)) {
+            try {
+                SysUser user = sysUserFeignService.queryUserById(teacherId);
+                Map<Long, String> teacherReceivers = new HashMap<>();
+                teacherReceivers.put(user.getId(), user.getPhone());
+                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.TEACHER_STYLE_VIDEO_SUCCESS,
+                       teacherReceivers, null, 0, null, ClientEnum.TEACHER.getCode());
+            }catch (Exception e) {
+                log.warn("老师个人风采审核成功消息发送失败,{}",e.getMessage());
+            }
+        } else {
+            try {
+                SysUser user = sysUserFeignService.queryUserById(teacherId);
+                Map<Long, String> teacherReceivers = new HashMap<>();
+                teacherReceivers.put(user.getId(), user.getPhone());
+                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.TEACHER_STYLE_VIDEO_FAIL,
+                                                   teacherReceivers, null, 0, null, ClientEnum.TEACHER.getCode(),remark);
+            }catch (Exception e) {
+                log.warn("老师个人风采审核失败消息发送失败,{}",e.getMessage());
+            }
+        }
     }
     }
 
 
     @Override
     @Override

+ 10 - 2
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/WithdrawController.java

@@ -2,6 +2,7 @@ package com.yonge.cooleshow.teacher.controller;
 
 
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
 import com.yonge.cooleshow.biz.dal.entity.UserWithdrawalCallback;
 import com.yonge.cooleshow.biz.dal.entity.UserWithdrawalCallback;
+import com.yonge.cooleshow.biz.dal.service.LingXinService;
 import com.yonge.cooleshow.biz.dal.service.UserWithdrawalCallbackService;
 import com.yonge.cooleshow.biz.dal.service.UserWithdrawalCallbackService;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.toolset.thirdparty.lingxinpay.RSA;
 import com.yonge.toolset.thirdparty.lingxinpay.RSA;
@@ -12,6 +13,7 @@ import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletRequest;
@@ -29,8 +31,8 @@ import java.util.UUID;
 public class WithdrawController extends BaseController {
 public class WithdrawController extends BaseController {
     private final static Logger log = LoggerFactory.getLogger(WithdrawController.class);
     private final static Logger log = LoggerFactory.getLogger(WithdrawController.class);
 
 
-    //这里需要填写商户自己生成的私钥
-    private String privateKey = "MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBANf/X1s2raYQAmY5VY929XqOIRESFlpLzWbltA08EI2i0jnJY3/kcCpo1sCHqkyWpDFGRgM1WYE90ayzEpS6EdZpyJ2/N5JFJzx4wMil5KHLdtQUmVv9si+xuYNOKfJW6Xn6zI/Wh81J1+hMlUY4WigU5Qci7DjdOjg5OD6e5DO3AgMBAAECgYEAor9ENhII3SsK48MneKWFaQZWW+po9ThQV8uT0rUDM/UOuYPIeMDC0vGTfhW6d2K57Haqohg8jGjr51g2E+HvNV+fARaBfCwy00DGcxjI6N8gEInj2AppsGV6a0ZtzGBh3BxGhEFV7x3NmTylDk3WkGnkGDqDNyrBUgK0BzCJEmECQQD+gYckYRevVfrZEHDQHRNzzMUlV9/ljA9x8dt0LoCNbd/wFvs0Ekjhas/2lUBkewEd4Kr0jaFcYzlUO/qihcpNAkEA2UP5W44yLuIo8ttPpdsfkH/8Ax64IywQHrXWq+thH7I91VwY2vomTduw8x0PafZtp8xryF3LixTZwQ7gsYbwEwJAQbb8SB5x2SogPVALcREw5qOm+/92pnTFwCws+BDRzLLkMcAdWNKn0tybmhXrrIY+QZKzUbYIRiywrtlV3AUjuQJBAJbnFnfX4NUdchGT79Mjyd2kdxZ3rK+JOD0MUWkhWFkahMX/bKgTXK1xLIr/ISiY53rHigkl1Gzqc4Aa5EeJkI8CQFlzlBOfoVnq3fPMZCCZcZSm97L12MgHho0AzoNj9sw9YYn9WPM7bw2HT8GUheiU3aiZGCyGGpYuVHMiBGa7l9U=";
+    @Value("${withdraw.privateKey}")
+    private String privateKey;//商户自己生成的私钥
 
 
     @Autowired
     @Autowired
     private UserWithdrawalCallbackService callbackService;
     private UserWithdrawalCallbackService callbackService;
@@ -44,6 +46,7 @@ public class WithdrawController extends BaseController {
      */
      */
     @PostMapping("/callback")
     @PostMapping("/callback")
     public String test(@RequestBody String content, HttpServletRequest request) {
     public String test(@RequestBody String content, HttpServletRequest request) {
+        System.out.println(privateKey);
         log.info("交易回调请求地址:{} 请求参数:{}", request.getRemoteAddr(), content);
         log.info("交易回调请求地址:{} 请求参数:{}", request.getRemoteAddr(), content);
         try {
         try {
             if (StringUtils.isBlank(content)) {
             if (StringUtils.isBlank(content)) {
@@ -63,6 +66,11 @@ public class WithdrawController extends BaseController {
         return "success";
         return "success";
     }
     }
 
 
+    /**
+     * 提现测试接口
+     * @param remark
+     * @return
+     */
     @GetMapping("/test")
     @GetMapping("/test")
     public String a(String remark) {
     public String a(String remark) {
         WithdrawSdk withdraw = new WithdrawSdk();
         WithdrawSdk withdraw = new WithdrawSdk();

+ 7 - 0
toolset/utils/src/main/java/com/yonge/toolset/utils/date/DateUtil.java

@@ -1422,6 +1422,13 @@ public class DateUtil {
 		return dateStr;
 		return dateStr;
 	}
 	}
 
 
+	public static String getStrDate() {
+		Date currentTime = new Date();
+		SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+		String dateStr = simpleDateFormat.format(currentTime);
+		return dateStr;
+	}
+
 	public static void main(String[] args) throws ParseException {
 	public static void main(String[] args) throws ParseException {
 		// DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
 		// DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
 		DateFormat df1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 		DateFormat df1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");