linxk 3 hete
szülő
commit
e738c0494a

+ 7 - 0
cif-service/src/main/java/com/txz/cif/constants/MyConstants.java

@@ -19,6 +19,13 @@ public class MyConstants {
      * 主营收入账户(损益类)id
      */
     public static final Long INNER_INCOME = 3L;
+
+    /**
+     * 主营业务支出-红包(损益类)id
+     */
+    public static final Long INNER_RED = 4L;
+
+
     
     /**
      * 主营支出-退款(损益类)id

+ 4 - 0
cif-service/src/main/java/com/txz/cif/service/FlowService.java

@@ -2,6 +2,7 @@ package com.txz.cif.service;
 import com.txz.cif.dto.Result;
 import com.txz.cif.model.Flow;
 import com.txz.cif.core.Service;
+import com.txz.cif.model.RedEnvelope;
 import com.txz.cif.param.*;
 
 /**
@@ -54,4 +55,7 @@ public interface FlowService extends Service<Flow> {
     Result withdraw(WithdrawParam param);
 
 
+    Result settle(RedEnvelope redEnvelope);
+
+
 }

+ 2 - 0
cif-service/src/main/java/com/txz/cif/service/RedEnvelopeService.java

@@ -30,4 +30,6 @@ public interface RedEnvelopeService extends Service<RedEnvelope> {
     List<UserTopBo> top(Integer type, Integer page, Integer size);
 
     EarningsDTO sumWithOrderNo(String orderNo);
+
+    void settle(RedEnvelope redEnvelope);
 }

+ 38 - 8
cif-service/src/main/java/com/txz/cif/service/impl/FlowServiceImpl.java

@@ -2,12 +2,10 @@ package com.txz.cif.service.impl;
 
 import cn.hutool.core.date.DateUtil;
 import com.txz.cif.constants.MyConstants;
+import com.txz.cif.core.ServiceException;
 import com.txz.cif.dao.FlowMapper;
 import com.txz.cif.dto.Result;
-import com.txz.cif.model.Account;
-import com.txz.cif.model.AccountFlow;
-import com.txz.cif.model.AccountFreezd;
-import com.txz.cif.model.Flow;
+import com.txz.cif.model.*;
 import com.txz.cif.param.*;
 import com.txz.cif.service.AccountFlowService;
 import com.txz.cif.service.AccountFreezdService;
@@ -145,19 +143,19 @@ public class FlowServiceImpl extends AbstractService<Flow> implements FlowServic
         if (account == null){
             return Result.genFailResult("账号未找到");
         }
-        Account innerCapitalAccount = accountService.findById(MyConstants.INNER_CAPITAL);
+        Account innerCapitalAccount = accountService.findById(MyConstants.INNER_MARKETING);
         if (innerCapitalAccount == null){
             return Result.genFailResult("账号未找到");
         }
         Date today = DateUtil.date();
         Flow flow = Flow.builder().amount(param.getAmount()).bizType(param.getBizType())
                 .bizNo(param.getBizNo()).createTime(today).updateTime(today).transTime(param.getTransTime())
-                .debitAccount(MyConstants.INNER_CAPITAL).creditAccount(account.getId())
+                .debitAccount(MyConstants.INNER_MARKETING).creditAccount(account.getId())
                 .bizId(param.getBizId()).type(1)
                 .build();
         saveUseGeneratedKeys(flow);
-        //借 :平台资金银行xx元  内部户1(资产类:借方账户)+钱
-        accountService.deal(AccountFlow.builder().accountId(MyConstants.INNER_CAPITAL).amount(flow.getAmount())
+        //借 :平台营销账户(负债类)xx元  平台营销账户(负债类)+钱
+        accountService.deal(AccountFlow.builder().accountId(MyConstants.INNER_MARKETING).amount(flow.getAmount())
                 .bizId(flow.getBizId()).aliases(innerCapitalAccount.getAliases()).transTime(param.getTransTime())
                 .bizNo(flow.getBizNo()).balance(innerCapitalAccount.getBalance().add(flow.getAmount()))
                 .freezeAmount(innerCapitalAccount.getFreezeAmount())
@@ -308,5 +306,37 @@ public class FlowServiceImpl extends AbstractService<Flow> implements FlowServic
         return Result.genSuccessResult();
     }
 
+    @Override
+    public Result settle(RedEnvelope redEnvelope) {
+        Account account = accountService.getAccount(redEnvelope.getUserId(), 2);
+        if (account == null){
+            throw  new ServiceException("收益账户未找到");
+        }
+        Account innerCapitalAccount = accountService.findById(MyConstants.INNER_RED);
+        if (innerCapitalAccount == null){
+            throw  new ServiceException("账户未找到");
+        }
+        Date today = DateUtil.date();
+        Flow flow = Flow.builder().amount(redEnvelope.getAmount()).bizType(redEnvelope.getBizType())
+                .bizNo(redEnvelope.getOrderNo()).createTime(today).updateTime(today).transTime(redEnvelope.getTransTime())
+                .debitAccount(MyConstants.INNER_RED).creditAccount(account.getId())
+                .bizId(redEnvelope.getId()+"").type(1)
+                .build();
+        saveUseGeneratedKeys(flow);
+        //借 :主营业务支出-红包(损益类)xx元  主营业务支出-红包(损益类)+钱
+        accountService.deal(AccountFlow.builder().accountId(MyConstants.INNER_RED).amount(flow.getAmount())
+                .bizId(flow.getBizId()).aliases(innerCapitalAccount.getAliases()).transTime(redEnvelope.getTransTime())
+                .bizNo(flow.getBizNo()).balance(innerCapitalAccount.getBalance().add(flow.getAmount()))
+                .freezeAmount(innerCapitalAccount.getFreezeAmount())
+                .flowType(1).type(2).bizType(redEnvelope.getBizType()).flowId(flow.getId()).build());
+        //贷 :客户资金账户xx元 客户账号(负债类:贷方账户)+钱
+        accountService.deal(AccountFlow.builder().accountId(account.getId()).amount(flow.getAmount())
+                .bizId(flow.getBizId()).aliases(account.getAliases()).transTime(redEnvelope.getTransTime())
+                .bizNo(flow.getBizNo()).balance(account.getBalance().add(flow.getAmount()))
+                .freezeAmount(account.getFreezeAmount())
+                .flowType(1).type(2).bizType(redEnvelope.getBizType()).flowId(flow.getId()).build());
+        return Result.genSuccessResult();
+    }
+
 
 }

+ 16 - 8
cif-service/src/main/java/com/txz/cif/service/impl/RedEnvelopeServiceImpl.java

@@ -5,22 +5,17 @@ import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.IdUtil;
 import com.github.pagehelper.PageHelper;
 import com.txz.cif.constants.MyConstants;
+import com.txz.cif.core.ServiceException;
 import com.txz.cif.dao.RedEnvelopeMapper;
 import com.txz.cif.dto.EarningsDTO;
 import com.txz.cif.dto.Result;
 import com.txz.cif.dubbo.client.OperatingConfigDubboServiceClient;
 import com.txz.cif.enums.BizTypeEnum;
-import com.txz.cif.model.Account;
-import com.txz.cif.model.ConfigMember;
-import com.txz.cif.model.RedEnvelope;
-import com.txz.cif.model.User;
+import com.txz.cif.model.*;
 import com.txz.cif.param.OrderParam;
 import com.txz.cif.param.SignRedEnvelopeParam;
-import com.txz.cif.service.AccountService;
-import com.txz.cif.service.ConfigMemberService;
-import com.txz.cif.service.RedEnvelopeService;
+import com.txz.cif.service.*;
 import com.txz.cif.core.AbstractService;
-import com.txz.cif.service.UserService;
 import com.txz.cif.web.bo.UserTopBo;
 import com.txz.cif.web.para.RedEnvelopeParam;
 import com.txz.operating.dto.ConfigDTO;
@@ -49,6 +44,9 @@ public class RedEnvelopeServiceImpl extends AbstractService<RedEnvelope> impleme
     @Resource
     private AccountService accountService;
 
+    @Resource
+    private FlowService flowService;
+
     @Resource
     private UserService userService;
 
@@ -115,6 +113,16 @@ public class RedEnvelopeServiceImpl extends AbstractService<RedEnvelope> impleme
         return cRedEnvelopeMapper.sumWithOrderNo(orderNo);
     }
 
+    @Override
+    public void settle(RedEnvelope redEnvelope) {
+        flowService.settle(redEnvelope);
+        update(RedEnvelope.builder().id(redEnvelope.getId()).status(2).build());
+    }
+
+    public static void main(String[] args) {
+        System.out.println(DateUtil.now());
+    }
+
     /**
      * 构建红包对象
      * @param userId

+ 41 - 10
cif-service/src/main/java/com/txz/cif/task/GeneralJob.java

@@ -1,19 +1,25 @@
 package com.txz.cif.task;
 
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.http.HttpRequest;
 import cn.hutool.http.HttpResponse;
 import com.txz.cif.configurer.Parameters;
 import com.txz.cif.dubbo.client.OrderDubboServiceClient;
+import com.txz.cif.model.RedEnvelope;
 import com.txz.cif.service.DayCutService;
 import com.txz.cif.service.RechargeRecordService;
+import com.txz.cif.service.RedEnvelopeService;
 import com.xxl.job.core.biz.model.ReturnT;
 import com.xxl.job.core.handler.annotation.XxlJob;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Component;
+import tk.mybatis.mapper.entity.Condition;
 
 import javax.annotation.Resource;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -42,6 +48,9 @@ public class GeneralJob {
     
     @Resource
     private RechargeRecordService rechargeRecordService;
+
+    @Resource
+    private RedEnvelopeService redEnvelopeService;
     
     /**
      * 日切
@@ -58,6 +67,37 @@ public class GeneralJob {
         }
         return ReturnT.SUCCESS;
     }
+
+    /**
+     * 结算
+     * @param param
+     * @return
+     * @throws Exception
+     */
+    @XxlJob("settle")
+    public ReturnT<String> settle(String param) throws Exception {
+        try {
+            logger.info("【执行结算】开始");
+            Condition c = new Condition(RedEnvelope.class);
+            c.createCriteria().andEqualTo("status",1).andLessThanOrEqualTo("settleTime", DateUtil.now());
+            List<RedEnvelope> redEnvelopes = redEnvelopeService.findByCondition(c);
+            if (CollUtil.isNotEmpty(redEnvelopes)){
+                for (RedEnvelope r: redEnvelopes){
+                    try {
+                        redEnvelopeService.settle(r);
+                    }catch (Exception e) {
+                        logger.error("【执行结算】异常:e{}", e);
+                        return ReturnT.FAIL;
+                    }
+                }
+            }
+            logger.info("【执行结算】完成");
+        } catch (Exception e) {
+            logger.error("【执行结算】异常:e{}", e);
+            return ReturnT.FAIL;
+        }
+        return ReturnT.SUCCESS;
+    }
     
     @XxlJob("checkin")
     public ReturnT<String> checkin(String param) throws Exception {
@@ -72,16 +112,7 @@ public class GeneralJob {
         logger.error("[checkin]:" + ret);
         
         
-        //        JSONObject json = new JSONObject();
-        //        json.put("username","linxinkai");
-        //        json.put("password","Lin123456");
-        //        String ret2 = HttpUtil.post("https://c4.a0.chat/v1/user/login/",json.toString());
-        //        String token = JSONUtil.parseObj(ret2).getJSONObject("data").getStr("token");
-        //        json = new JSONObject();
-        //        json.put("action","sign_today");
-        //        ret = HttpRequest.post("https://c4.a0.chat/v1/user/info/").body(json.toString()).header("Authorization",token).timeout(-1).execute().body();
-        //        logger.error("[checkin]:"+ret);
-        
+
         return ReturnT.SUCCESS;
     }