Ver código fonte

红包回调分公司新增方法,部门查询优化

lmx 1 mês atrás
pai
commit
a61e1afa7a

+ 2 - 0
fs-service/src/main/java/com/fs/company/mapper/CompanyDeptMapper.java

@@ -120,4 +120,6 @@ public interface CompanyDeptMapper
     void deleteCompanyDeptByCompanyIds(Long[] companyIds);
 
     List<CompanyDept> selectCompanyDeptByIds(@Param("depts")List<Long> deptIds);
+
+    List<Long> getCurrentDeptIdDownTreeIds(@Param("deptId") Long deptId);
 }

+ 9 - 0
fs-service/src/main/java/com/fs/his/service/IFsStorePaymentService.java

@@ -103,6 +103,15 @@ public interface IFsStorePaymentService
 
     String transferNotify(String notifyData, HttpServletRequest request);
 
+    /**
+     * 分公司配置回调地址
+     * @param companyId
+     * @param notifyData
+     * @param request
+     * @return
+     */
+    String TransferNotifyWithCompanyId(Long companyId,String notifyData, HttpServletRequest request);
+
     Boolean isEntityNull(FsStorePaymentParam fsStorePayment);
 
     Long selectFsStorePaymentExcelVOCount(FsStorePaymentParam fsStorePayment);

+ 44 - 0
fs-service/src/main/java/com/fs/his/service/impl/FsStorePaymentServiceImpl.java

@@ -940,6 +940,50 @@ public class FsStorePaymentServiceImpl implements IFsStorePaymentService {
         }
     }
 
+    /**
+     * 分公司配置回调地址
+     * @param companyId
+     * @param notifyData
+     * @param request
+     * @return
+     */
+    @Override
+    public String TransferNotifyWithCompanyId(Long companyId,String notifyData, HttpServletRequest request) {
+        logger.info("分公司回调::companyId:{}",companyId);
+        logger.info("zyp \n【收到转账回调::分公司】:{}",notifyData);
+        try {
+            String json = companyConfigMapper.selectRedPacketConfigByKey(companyId);
+//            String json = configService.selectConfigByKey("redPacket.config");
+            RedPacketConfig config = JSONUtil.toBean(json, RedPacketConfig.class);
+            //创建微信订单
+            WxPayConfig payConfig = new WxPayConfig();
+            BeanUtils.copyProperties(config,payConfig);
+            WxPayService wxPayService = new WxPayServiceImpl();
+            wxPayService.setConfig(payConfig);
+            SignatureHeader signatureHeader = new SignatureHeader();
+            signatureHeader.setTimeStamp(request.getHeader("Wechatpay-Timestamp"));
+            signatureHeader.setNonce(request.getHeader("Wechatpay-Nonce"));
+            signatureHeader.setSerial(request.getHeader("Wechatpay-Serial"));
+            signatureHeader.setSignature(request.getHeader("Wechatpay-Signature"));
+            WxPayTransferBatchesNotifyV3Result result = wxPayService.parseTransferBatchesNotifyV3Result(notifyData,signatureHeader);
+            logger.info("到零钱回调::分公司:{}",result.getResult());
+            if (result.getResult().getBatchStatus().equals("FINISHED") && result.getResult().getFailNum()==0) {
+                R r = redPacketLogService.syncRedPacket(result.getResult().getOutBatchNo(),result.getResult().getBatchId());
+                logger.info("result:{}",r);
+                if (r.get("code").equals(200)){
+                    return WxPayNotifyResponse.success("处理成功");
+                }else {
+                    return WxPayNotifyResponse.fail("");
+                }
+            }else {
+                return WxPayNotifyResponse.fail("");
+            }
+        } catch (WxPayException e) {
+            logger.error("zyp \n【转账回调异常】:{}", e.getReturnMsg());
+            return WxPayNotifyResponse.fail(e.getMessage());
+        }
+    }
+
     @Override
     public Boolean isEntityNull(FsStorePaymentParam param) {
         if (param == null) {

+ 12 - 0
fs-service/src/main/java/com/fs/qw/mapper/QwWatchLogMapper.java

@@ -148,6 +148,12 @@ public interface QwWatchLogMapper extends BaseMapper<QwWatchLog>{
             "<if test ='deptId !=null and deptId!=\"\"'>\n" +
             "   and cu.dept_id = #{deptId}\n" +
             "</if>" +
+            " <if test=\"filterDeptIds != null and filterDeptIds.size() != 0\">\n" +
+            "     and cu.dept_id  in\n" +
+            "      <foreach collection=\"deptIds\" item=\"item\" open=\"(\" close=\")\" separator=\",\">\n" +
+            "         ${item}\n" +
+            "      </foreach>\n" +
+            " </if> " +
             "<if test ='ids !=null and ids!=\"\"'>\n" +
             "   and qec.qw_user_id in (${ids})\n" +
             "</if>" +
@@ -191,6 +197,12 @@ public interface QwWatchLogMapper extends BaseMapper<QwWatchLog>{
             "<if test ='(deptIds == null or deptIds.size == 0) and deptId !=null and deptId!=\"\"'>\n" +
             "   and cu.dept_id = #{deptId}\n" +
             "</if>" +
+            " <if test=\"deptIds != null and deptIds.size() != 0\">\n" +
+            "     and cu.dept_id  in\n" +
+            "      <foreach collection=\"deptIds\" item=\"item\" open=\"(\" close=\")\" separator=\",\">\n" +
+            "         ${item}\n" +
+            "      </foreach>\n" +
+            " </if> " +
             "<if test ='ids !=null and ids!=\"\"'>\n" +
             "   and qec.qw_user_id in (${ids})\n" +
             "</if>" +

+ 1 - 0
fs-service/src/main/java/com/fs/qw/param/QwWatchLogStatisticsListParam.java

@@ -40,4 +40,5 @@ public class QwWatchLogStatisticsListParam {
 
     private Long pageNum;
     private Long pageSize;
+    private List<Long> filterDeptIds;
 }

+ 5 - 0
fs-service/src/main/java/com/fs/qw/service/impl/QwWatchLogServiceImpl.java

@@ -249,6 +249,11 @@ public class QwWatchLogServiceImpl extends ServiceImpl<QwWatchLogMapper, QwWatch
         CompanyDept companyDept = companyDeptMapper.selectCompanyDeptById(param.getDeptId());
         if (ObjectUtils.isNotEmpty(companyDept)&&companyDept.getParentId()==0L){
             param.setDeptId(null);
+        }else {
+            //通过部门id去找到所有子部门id
+            List<Long> currentDeptIdDownTreeIds = companyDeptMapper.getCurrentDeptIdDownTreeIds(param.getDeptId());
+            param.setFilterDeptIds(currentDeptIdDownTreeIds);
+            param.setDeptId(null);
         }
         TableDataInfo rspData = new TableDataInfo();
         rspData.setCode(HttpStatus.SUCCESS);

+ 19 - 0
fs-service/src/main/resources/mapper/company/CompanyDeptMapper.xml

@@ -179,4 +179,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </foreach>
     </select>
 
+    <select id="getCurrentDeptIdDownTreeIds" parameterType="Long"  resultType="Long">
+        WITH RECURSIVE cte AS (
+            SELECT
+                *,
+                0 AS level
+            FROM company_dept
+            WHERE dept_id = #{deptId}
+
+            UNION ALL
+
+            SELECT
+                t.*,
+                cte.level + 1 AS level
+            FROM company_dept t
+            INNER JOIN cte
+            ON t.parent_id = cte.dept_id
+        )
+        SELECT dept_id FROM cte ORDER BY level;
+    </select>
 </mapper>

+ 14 - 0
fs-user-app/src/main/java/com/fs/app/controller/course/CourseTransferController.java

@@ -56,5 +56,19 @@ public class CourseTransferController {
     }
 
 
+    /**
+     * 分公司配置回调地址
+     * @param companyId
+     * @param notifyData
+     * @param request
+     * @param response
+     * @return
+     * @throws Exception
+     */
+    @PostMapping( "/transferNotifyWithCompanyId/{companyId}")
+    public String transferNotifyWithCompanyId(@PathVariable("companyId") Long companyId,@RequestBody String notifyData,HttpServletRequest request, HttpServletResponse response) throws Exception {
+
+        return paymentService.TransferNotifyWithCompanyId(companyId,notifyData,request);
+    }
 
 }