Преглед на файлове

Merge remote-tracking branch 'origin/master'

Guos преди 1 седмица
родител
ревизия
68f4d48c03

+ 14 - 1
fs-admin/src/main/java/com/fs/company/controller/CompanyDeductController.java

@@ -14,6 +14,7 @@ import com.fs.company.domain.CompanyDeduct;
 import com.fs.company.domain.CompanyMoneyLogs;
 import com.fs.company.service.ICompanyDeductService;
 import com.fs.company.service.ICompanyMoneyLogsService;
+import com.fs.company.service.ICompanyRechargeService;
 import com.fs.company.service.ICompanyService;
 import com.fs.company.vo.CompanyDeductExportVO;
 import com.fs.company.vo.CompanyDeductVO;
@@ -45,6 +46,10 @@ public class CompanyDeductController extends BaseController
     private ICompanyService companyService;
     @Autowired
     private ICompanyMoneyLogsService moneyLogsService;
+
+    @Autowired
+    private ICompanyRechargeService companyRechargeService;
+
     /**
      * 查询扣款列表
      */
@@ -128,7 +133,15 @@ public class CompanyDeductController extends BaseController
         LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
         if(deduct.getIsAudit()==1){
             Company company=companyService.selectCompanyByIdForUpdate(deduct.getCompanyId());
-            company.setMoney(company.getMoney().subtract(deduct.getMoney()));
+
+            // 同步redis缓存
+            R r = companyRechargeService.syncUpdateRedisCompanyRecharge(company, deduct.getMoney(), 2);
+            if(!"200".equals(r.get("code").toString())){
+                return r;
+            }
+            // 充值后,需要同步更新余额到数据库,否则余额与缓存中的不一致
+            String newMoney = r.get("newMoney").toString();
+            company.setMoney(new BigDecimal(newMoney));
             companyService.updateCompany(company);
             CompanyMoneyLogs log=new CompanyMoneyLogs();
             log.setCompanyId(deduct.getCompanyId());

+ 1 - 1
fs-admin/src/main/java/com/fs/company/controller/CompanyRechargeController.java

@@ -125,7 +125,7 @@ public class CompanyRechargeController extends BaseController
 
             // 同步redis缓存
             // 注意:在进行充值审核之前,需要先执行一下定时任务同步缓存数据到数据库,再进行后续操作,否则金额不正确
-            R r = companyRechargeService.syncUpdateRedisCompanyRecharge(company, companyRecharge.getMoney());
+            R r = companyRechargeService.syncUpdateRedisCompanyRecharge(company, companyRecharge.getMoney(), 1);
             if(!"200".equals(r.get("code").toString())){
                 return r;
             }

+ 2 - 1
fs-service/src/main/java/com/fs/company/service/ICompanyRechargeService.java

@@ -55,9 +55,10 @@ public interface ICompanyRechargeService
      * 同步到缓存余额
      * @param company 公司
      * @param rechargeMoney 充值金额
+     * @param type 同步类型,1-充值,2-扣款
      * @return 是否成功
      */
-    R syncUpdateRedisCompanyRecharge(Company company, BigDecimal rechargeMoney);
+    R syncUpdateRedisCompanyRecharge(Company company, BigDecimal rechargeMoney, Integer type);
 
     List<CompanyRechargeVO> selectCompanyRechargeListVO(CompanyRechargeVO companyRecharge);
     /**

+ 9 - 4
fs-service/src/main/java/com/fs/company/service/impl/CompanyRechargeServiceImpl.java

@@ -109,9 +109,9 @@ public class CompanyRechargeServiceImpl implements ICompanyRechargeService
     }
 
     @Override
-    public R syncUpdateRedisCompanyRecharge(Company company, BigDecimal rechargeMoney) {
+    public R syncUpdateRedisCompanyRecharge(Company company, BigDecimal rechargeMoney, Integer type) {
         if(company.getCompanyId() == null){
-            log.error("公司充值-审核-同步更新到缓存,参数错误,公司id:{}, 充值余额:{}", company.getCompanyId(), rechargeMoney);
+            log.error("公司充值/扣款-审核-同步更新到缓存,参数错误,公司id:{}, 充值/扣款余额:{},类型:{}", null, rechargeMoney, type);
             return R.error("公司id为空");
         }
 
@@ -136,13 +136,18 @@ public class CompanyRechargeServiceImpl implements ICompanyRechargeService
                     redisMoney = company.getMoney();
                 }
 
-                newMoney = redisMoney.add(rechargeMoney);
+                if(type == 1){
+                    // 充值
+                    newMoney = redisMoney.add(rechargeMoney);
+                } else {
+                    newMoney = redisMoney.subtract(rechargeMoney);
+                }
 
                 redisCache.setCacheObject(companyMoneyKey, newMoney.toString());
             }
             return R.ok().put("newMoney", newMoney);
         } catch (Exception e) {
-            log.error("公司充值-审核-同步更新到缓存,参数错误,请求异常,异常信息:{}", e.getMessage(), e);
+            log.error("公司充值/扣款-审核-同步更新到缓存,参数错误,请求异常,异常信息:{}", e.getMessage(), e);
             return R.error("审核失败,请重试");
         } finally {
             if (lockAcquired && lock.isHeldByCurrentThread()) {

+ 1 - 0
fs-service/src/main/java/com/fs/company/service/impl/StatisticManageServiceImpl.java

@@ -120,6 +120,7 @@ public class StatisticManageServiceImpl implements IStatisticManageService {
         StopWatch stopWatch = new StopWatch();
         stopWatch.start("gs-执行数据统计任务");
         List<CompanyDeptUserInfo> companyDeptdUserList = statisticManageMapper.getCompanyAndDeptAndDeptUserList(null);
+        log.info("统计人数列表:{}", companyDeptdUserList.size());
         companyDeptdUserList.forEach(companyDeptUserInfo -> {
             CompanyDeptUserInfoDTO statisticNum =  new CompanyDeptUserInfoDTO();
             boolean empty = null == companyDeptUserInfo.getUserId(); //用户id为空返回true

+ 5 - 5
fs-service/src/main/resources/mapper/company/StatisticManageMapper.xml

@@ -40,7 +40,7 @@
                 qw_external_contact AS qec
             WHERE
                 date_format( qec.create_time, '%y%m%d' ) = date_format(now(), '%y%m%d' )
-              AND qec.company_user_id = 327
+              AND qec.company_user_id = #{userIds}
         ),
         t2 AS (
                  SELECT
@@ -50,11 +50,11 @@
                  WHERE
                      date_format( qec.create_time, '%y%m%d' ) = date_format(now(), '%y%m%d' )
                    AND qec.fs_user_id IS NOT NULL
-                   AND qec.company_user_id = 327
+                   AND qec.company_user_id = #{userIds}
              ),
-             t3 AS ( SELECT count(*) AS completeNum FROM fs_course_watch_log AS fcwl WHERE date_format(fcwl.create_time, '%y%m%d' ) = date_format( now(), '%y%m%d') and fcwl.log_type = 2 AND fcwl.company_user_id = 327 ),
-             t4 AS ( SELECT count(*) AS answerNum FROM fs_course_answer_logs AS fcal WHERE date_format(fcal.create_time, '%y%m%d' ) = date_format( now(), '%y%m%d')  and fcal.company_user_id = 327 ),
-             t5 AS ( SELECT count(*) AS redPacketNum FROM fs_course_red_packet_log AS fcrpl WHERE date_format(fcrpl.create_time, '%y%m%d' ) = date_format( now(), '%y%m%d' )  and  fcrpl.company_user_id = 327 )
+             t3 AS ( SELECT count(*) AS completeNum FROM fs_course_watch_log AS fcwl WHERE date_format(fcwl.create_time, '%y%m%d' ) = date_format( now(), '%y%m%d') and fcwl.log_type = 2 AND fcwl.company_user_id = #{userIds} ),
+             t4 AS ( SELECT count(*) AS answerNum FROM fs_course_answer_logs AS fcal WHERE date_format(fcal.create_time, '%y%m%d' ) = date_format( now(), '%y%m%d')  and fcal.company_user_id = #{userIds} ),
+             t5 AS ( SELECT count(*) AS redPacketNum FROM fs_course_red_packet_log AS fcrpl WHERE date_format(fcrpl.create_time, '%y%m%d' ) = date_format( now(), '%y%m%d' )  and  fcrpl.company_user_id = #{userIds} )
         SELECT * FROM t1,t2,t3,t4,t5
     </select>