Bläddra i källkod

Merge remote-tracking branch 'origin/ScrmStores' into ScrmStores

yjwang 4 dagar sedan
förälder
incheckning
8074c2aba6

+ 6 - 0
fs-common/src/main/java/com/fs/common/utils/date/DateUtil.java

@@ -132,6 +132,12 @@ public final class DateUtil {
 		return formatter.format(localDateTime);
 	}
 
+
+	public static String formatLocalTime(LocalTime time){
+		DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm");
+		return formatter.format(time);
+	}
+
 	public static String formatLocalDate(LocalDate localDate, String pattern){
 		DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
 		return formatter.format(localDate);

+ 71 - 4
fs-company/src/main/java/com/fs/company/controller/company/IndexStatisticsController.java

@@ -1,18 +1,35 @@
 package com.fs.company.controller.company;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.fs.common.core.domain.R;
 import com.fs.common.core.redis.RedisCache;
+import com.fs.common.utils.PubFun;
 import com.fs.common.utils.ServletUtils;
+import com.fs.common.utils.date.DateUtil;
+import com.fs.company.domain.Company;
+import com.fs.company.domain.CompanyTrafficRecord;
+import com.fs.company.domain.CompanyTrafficRecordLog;
+import com.fs.company.mapper.CompanyMapper;
+import com.fs.company.mapper.CompanyMoneyLogsMapper;
+import com.fs.company.mapper.CompanyTrafficRecordLogMapper;
+import com.fs.company.mapper.CompanyTrafficRecordMapper;
 import com.fs.framework.security.LoginUser;
 import com.fs.framework.service.TokenService;
 import com.fs.statis.StatisticsRedisConstant;
 import com.fs.statis.dto.*;
 import com.fs.statis.service.IStatisticsService;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.*;
 
+import java.math.BigDecimal;
+import java.math.MathContext;
+import java.math.RoundingMode;
+import java.time.LocalDate;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.function.Function;
+import java.util.stream.Collectors;
 
 import static com.fs.statis.StatisticsRedisConstant.*;
 
@@ -30,6 +47,34 @@ public class IndexStatisticsController {
 
     @Autowired
     private IStatisticsService statisticsService;
+    @Autowired
+    private CompanyMoneyLogsMapper moneyLogsMapper;
+    @Autowired
+    private CompanyMapper companyMapper;
+    @Autowired
+    private CompanyTrafficRecordMapper companyTrafficRecordMapper;
+    @Autowired
+    private CompanyTrafficRecordLogMapper companyTrafficRecordLogMapper;
+    @Value("${cloud_host.company_name}")
+    private String signProjectName;
+
+    Function<Long, String> tranTraffic = traffic -> {
+        int unitInt = 1024;
+        BigDecimal unit = BigDecimal.valueOf(unitInt);
+        BigDecimal kb = BigDecimal.valueOf(traffic);
+        if(traffic < unitInt){
+            return traffic + "KB";
+        }
+        BigDecimal mb = kb.divide(unit, 2, RoundingMode.HALF_UP);
+        if(mb.doubleValue() < unitInt){
+            return mb + "MB";
+        }
+        BigDecimal gb = mb.divide(unit, 2, RoundingMode.HALF_UP);
+        if(gb.doubleValue() < unitInt){
+            return mb + "GB";
+        }
+        return gb.divide(unit, 2, RoundingMode.HALF_UP) + "TB";
+    };
 
     /**
      * 分析概览
@@ -62,9 +107,17 @@ public class IndexStatisticsController {
     public R rechargeComsumption(){
         LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
         Long companyId = loginUser.getCompany().getCompanyId();
-
-        ConsumptionBalanceDataDTO consumptionBalanceDataDTO = redisCache.getCacheObject(String.format("%s:%d",StatisticsRedisConstant.DATA_OVERVIEW_DEALER_BALANCE,companyId));
-        return R.ok().put("data", consumptionBalanceDataDTO);
+        ConsumptionBalanceDataDTO dto;
+        if("医健宝".equals(signProjectName)){
+            dto = new ConsumptionBalanceDataDTO();
+            Company company = companyMapper.selectCompanyById(companyId);
+            List<BigDecimal> subList = moneyLogsMapper.selectCompanyRedPackage(companyId);
+            dto.setBalance(company.getMoney());
+            dto.setTodayComsumption(subList.stream().map(BigDecimal::abs).reduce(BigDecimal.ZERO, BigDecimal::add));
+        }else{
+            dto = redisCache.getCacheObject(String.format("%s:%d",StatisticsRedisConstant.DATA_OVERVIEW_DEALER_BALANCE,companyId));
+        }
+        return R.ok().put("data", dto);
     }
 
     /**
@@ -75,7 +128,21 @@ public class IndexStatisticsController {
     public R getTrafficLog(){
         LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
         Long companyId = loginUser.getCompany().getCompanyId();
-        TrafficLogDTO trafficLogDTO = redisCache.getCacheObject(String.format("%s:%d",DATA_OVERVIEW_TRAFFIC_LOG,companyId));
+        CompanyTrafficRecord companyTrafficRecord = companyTrafficRecordMapper.selectOne(new QueryWrapper<CompanyTrafficRecord>().eq("company_id", companyId));
+        TrafficLogDTO trafficLogDTO;
+        if("医健宝".equals(signProjectName)){
+            trafficLogDTO = new TrafficLogDTO();
+            if(companyTrafficRecord != null){
+                trafficLogDTO.setTraffic(tranTraffic.apply(companyTrafficRecord.getBalance()));
+                List<CompanyTrafficRecordLog> monthLogs = companyTrafficRecordLogMapper.selectMonth(companyId);
+                List<CompanyTrafficRecordLog> toDayLos = monthLogs.stream().filter(e -> DateUtil.dateToLocalDateTime(e.getCreateTime()).toLocalDate().equals(LocalDate.now())).collect(Collectors.toList());
+                Function<List<CompanyTrafficRecordLog>, Long> traffic = list -> list.stream().mapToLong(CompanyTrafficRecordLog::getTrafficAmount).sum();
+                trafficLogDTO.setToday(traffic.apply(toDayLos));
+                trafficLogDTO.setThisMonth(traffic.apply(monthLogs));
+            }
+        }else{
+            trafficLogDTO = redisCache.getCacheObject(String.format("%s:%d",DATA_OVERVIEW_TRAFFIC_LOG,companyId));
+        }
         return R.ok().put("data",trafficLogDTO);
     }
 

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

@@ -326,4 +326,6 @@ public interface CompanyMoneyLogsMapper
     Integer selectCompanyMoneyLogsExport1Counts(@Param("maps")FsCompanyMoneyLogsExportParam param);
 
     List<CompanyRedPackage> selectCompanyRedPackageListVO(CompanyRedPackage companyRedPackage);
+
+    List<BigDecimal> selectCompanyRedPackage(@Param("companyId") Long companyId);
 }

+ 3 - 0
fs-service/src/main/java/com/fs/company/mapper/CompanyTrafficRecordLogMapper.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.fs.company.domain.CompanyTrafficRecordLog;
 import com.fs.company.param.CompanyTrafficRecordLogQueryParam;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -11,4 +12,6 @@ import java.util.List;
 public interface CompanyTrafficRecordLogMapper extends BaseMapper<CompanyTrafficRecordLog> {
 
     List<CompanyTrafficRecordLog> list(CompanyTrafficRecordLogQueryParam record);
+
+    List<CompanyTrafficRecordLog> selectMonth(@Param("companyId") Long companyId);
 }

+ 1 - 5
fs-service/src/main/java/com/fs/company/service/impl/CompanyServiceImpl.java

@@ -1353,11 +1353,7 @@ public class CompanyServiceImpl implements ICompanyService
                 companyMapper.updateCompany(company);
                 CompanyMoneyLogs log=new CompanyMoneyLogs();
                 log.setCompanyId(company.getCompanyId());
-                if(end != null && start.getHour() != end.getHour()){
-                    log.setRemark("扣除"+start.getHour() + "到" + end.getHour() +"点红包金额");
-                }else{
-                    log.setRemark("扣除"+start.getHour()+"点红包金额");
-                }
+                log.setRemark("扣除"+DateUtil.formatLocalTime(start) + "到" + DateUtil.formatLocalTime(end) +"点红包金额");
                 log.setMoney(money.multiply(new BigDecimal(-1)));
                 log.setLogsType(15);
                 log.setBalance(company.getMoney());

+ 20 - 4
fs-service/src/main/java/com/fs/company/service/impl/CompanyTrafficRecordServiceImpl.java

@@ -3,6 +3,7 @@ package com.fs.company.service.impl;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fs.common.core.redis.RedisCache;
 import com.fs.common.exception.base.BaseException;
@@ -56,6 +57,8 @@ public class CompanyTrafficRecordServiceImpl extends ServiceImpl<CompanyTrafficR
 
     @Autowired
     private ICompanyTrafficRecordLogService companyTrafficRecordLogService;
+    @Autowired
+    private CompanyTrafficRecordMapper companyTrafficRecordMapper;
 
     @Autowired
     private FsCourseTrafficLogMapper fsCourseTrafficLogMapper;
@@ -103,14 +106,15 @@ public class CompanyTrafficRecordServiceImpl extends ServiceImpl<CompanyTrafficR
     @Override
     public void refreshTraffic() {
         log.info("【定时更新流量】:{}", "开始");
-        List<CompanyTrafficRecord> companyTrafficRecords = baseMapper.selectList(new LambdaQueryWrapper<>());
-        for (CompanyTrafficRecord companyTrafficRecord : companyTrafficRecords) {
-            doReduce(companyTrafficRecord);
+        List<Company> companyList = companyService.selectCompanyList(new Company());
+//        List<CompanyTrafficRecord> companyTrafficRecords = baseMapper.selectList(new LambdaQueryWrapper<>());
+        for (Company company : companyList) {
+            doReduce(company);
         }
     }
 
     //通过redis更新表流量并添加扣除日志
-    private void doReduce(CompanyTrafficRecord companyTrafficRecord) {
+    private void doReduce(Company company) {
         LocalDateTime now = LocalDateTime.now();
         // 获取上一个小时的开始时间
         LocalDateTime startTime = now.minusHours(1)
@@ -120,6 +124,18 @@ public class CompanyTrafficRecordServiceImpl extends ServiceImpl<CompanyTrafficR
         LocalDateTime endTime = startTime
                 .withMinute(59)
                 .withSecond(59);
+        CompanyTrafficRecord companyTrafficRecord = companyTrafficRecordMapper.selectOne(new QueryWrapper<CompanyTrafficRecord>().eq("company_id", company.getCompanyId()));
+        if(companyTrafficRecord == null){
+            companyTrafficRecord = new CompanyTrafficRecord();
+            companyTrafficRecord.setBalance(0L);
+            companyTrafficRecord.setCompanyId(company.getCompanyId());
+            companyTrafficRecord.setDeptId(company.getDeptId());
+            companyTrafficRecord.setCompanyName(company.getCompanyName());
+            companyTrafficRecord.setCreateTime(new Date());
+            companyTrafficRecord.setCreateBy(company.getUserId());
+            companyTrafficRecord.setDeptId(company.getDeptId());
+            baseMapper.insert(companyTrafficRecord);
+        }
         //根据fs_course_traffic_log表获取公司昨天流量
         Long trafficAmountYesterday = fsCourseTrafficLogMapper.sumTrafficByCompanyYesterday(companyTrafficRecord.getCompanyId(), DateUtil.formatLocalDateTime(startTime), DateUtil.formatLocalDateTime(endTime));
         if (trafficAmountYesterday != null && trafficAmountYesterday > 0) {

+ 10 - 0
fs-service/src/main/java/com/fs/course/service/impl/FsUserCourseVideoServiceImpl.java

@@ -23,9 +23,11 @@ import com.fs.common.utils.StringUtils;
 import com.fs.common.utils.date.DateUtil;
 import com.fs.company.constant.CompanyTrafficConstants;
 import com.fs.company.domain.Company;
+import com.fs.company.domain.CompanyTrafficRecord;
 import com.fs.company.domain.CompanyUser;
 import com.fs.company.mapper.CompanyMapper;
 import com.fs.company.mapper.CompanyMoneyLogsMapper;
+import com.fs.company.mapper.CompanyTrafficRecordMapper;
 import com.fs.company.mapper.CompanyUserMapper;
 import com.fs.company.service.ICompanyService;
 import com.fs.config.cloud.CloudHostProper;
@@ -139,6 +141,8 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
     @Autowired
     private QwGroupChatMapper qwGroupChatMapper;
     @Autowired
+    private CompanyTrafficRecordMapper companyTrafficRecordMapper;
+    @Autowired
     private QwGroupChatUserMapper qwGroupChatUserMapper;
     @Autowired
     private IFsUserService fsUserService;
@@ -537,6 +541,12 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
                 return R.error(500, "该用户("+fsUser.getUserId() + ")已成为其他销售会员");
             }
         }
+        if("医健宝".equals(signProjectName)){
+            CompanyTrafficRecord companyTrafficRecord = companyTrafficRecordMapper.selectOne(new QueryWrapper<CompanyTrafficRecord>().eq("company_id", param.getCompanyId()));
+            if(companyTrafficRecord == null || companyTrafficRecord.getBalance() <= 0){
+                return R.error(500, "暂时无法观看,请联系管理员(流量)");
+            }
+        }
         Integer isRoom = param.getIsRoom();
 
         // 处理逻辑

+ 3 - 3
fs-service/src/main/resources/application-config-druid-yjb.yml

@@ -56,11 +56,11 @@ watch:
   password3: v9xsKuqn_$d2y
 
 fs :
-  commonApi: http://127.0.0.1:7771
-  h5CommonApi: http://127.0.0.1
+  commonApi: http://10.206.0.15:7771
+  h5CommonApi: http://10.206.0.15:7771
   jwt:
     # 加密秘钥
-    secret: f4e2e52034348f86b67cde581c0f9eb5
+    secret: 7af48cb753c96945816b5fdaaa01e879
     # token有效时长,7天,单位秒
     expire: 31536000
     header: AppToken

+ 2 - 2
fs-service/src/main/resources/mapper/company/CompanyMapper.xml

@@ -48,7 +48,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         select * from company
     </sql>
 
-    <select id="selectCompanyList" parameterType="Company" resultMap="CompanyResult">
+    <select id="selectCompanyList" parameterType="com.fs.company.domain.Company" resultType="com.fs.company.domain.Company">
         <include refid="selectCompanyVo"/>
         <where>
             <if test="companyId != null"> and company_id = #{companyId}</if>
@@ -68,7 +68,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </where>
     </select>
 
-    <select id="selectCompanyById" parameterType="Long" resultMap="CompanyResult">
+    <select id="selectCompanyById" parameterType="Long" resultType="com.fs.company.domain.Company">
         <include refid="selectCompanyVo"/>
         where company_id = #{companyId}
     </select>

+ 4 - 1
fs-service/src/main/resources/mapper/company/CompanyMoneyLogsMapper.xml

@@ -94,5 +94,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             #{logsId}
         </foreach>
     </delete>
-    
+
+    <select id="selectCompanyRedPackage" resultType="java.math.BigDecimal">
+        select money from company_money_logs where logs_type = 15 and company_id = #{companyId} and DATE(create_time) = DATE(now())
+    </select>
 </mapper>

+ 4 - 0
fs-service/src/main/resources/mapper/company/CompanyTrafficRecordLogMapper.xml

@@ -34,4 +34,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </where>
         order by create_time desc
     </select>
+
+    <select id="selectMonth" resultType="com.fs.company.domain.CompanyTrafficRecordLog">
+        select * from company_traffic_record_log where company_id = #{companyId} and operation_type = 2 and date_format(create_time,'%y%m') = date_format(now(),'%y%m')
+    </select>
 </mapper>