forked from kidgrow-microservices-platform

zxh
2020-08-24 5de71af808d0e5838826ea641b92f5bf1af91571
Merge branch 'dev' of ssh://192.168.2.240:29418/kidgrow-microservices-platform into dev
9 files modified
165 ■■■■ changed files
kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/ConsumptionRecordMapper.java 6 ●●●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ConsumptionRecordServiceImpl.java 38 ●●●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ProductOrderDetailServiceImpl.java 21 ●●●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/ConsumptionRecordMapper.xml 16 ●●●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-opration-center/pom.xml 4 ●●●● patch | view | raw | blame | history
kidgrow-commons/kidgrow-ribbon-spring-boot-starter/src/main/java/com/kidgrow/ribbon/config/FeignHttpInterceptorConfig.java 1 ●●●● patch | view | raw | blame | history
kidgrow-commons/kidgrow-ribbon-spring-boot-starter/src/main/java/com/kidgrow/ribbon/config/FeignHttpTenantInterceptorConfig.java 1 ●●●● patch | view | raw | blame | history
kidgrow-config/src/main/resources/application-uat.properties 77 ●●●●● patch | view | raw | blame | history
kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital.html 1 ●●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/ConsumptionRecordMapper.java
@@ -37,4 +37,10 @@
     * @return
     */
    List<ConsumptionRecord> findList(@Param("p") Map<String, Object> params);
    /**
     * 查询有效预扣费
     * @param DetailList 有效的套餐
     * @return
     */
    List<ConsumptionRecord> findDetailList(@Param("p") List<Long> DetailList);
}
kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ConsumptionRecordServiceImpl.java
@@ -20,7 +20,6 @@
import org.apache.commons.collections4.MapUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@@ -116,7 +115,8 @@
                //2.没有扣费,检查是否已经预扣费
                if (!isBeforeDeduction(consumptionRecordList, ConsumptionConstant.BEFORE_DEDUCTION)) {
                    //3.没有预扣,查询余额
                    if (VateUserNowProduct(consumptionRequest.getConsumptionCount(),consumptionRequest.getHospitalId(),consumptionRequest.getDepartmentId())) {
                    Map<String,Object> vateMap=VateUserNowProduct(consumptionRequest.getConsumptionCount(),consumptionRequest.getHospitalId(),consumptionRequest.getDepartmentId());
                    if (Boolean.parseBoolean(vateMap.get("vateRe").toString())) {
                        //4.余额充足 获取要扣的套餐 写预扣费记录
                        if (beforeConsumption(consumptionRequest)) {
                            //预扣费成功
@@ -129,9 +129,9 @@
                            bcode = ConsumptionConstant.BUSINESS_CODE_ERROR;
                        }
                    } else {
                        //余额不足
                        //余额不足 或获取异常
                        isSuccess = false;
                        reMsg = "余额不足或获取失败!";
                        reMsg = vateMap.get("vateMsg").toString();
                        bcode = ConsumptionConstant.BUSINESS_CODE_FAIL;
                    }
                } else {
@@ -179,7 +179,8 @@
                //2.没有扣费,检查是否已经预扣费
                if (!isBeforeDeduction(consumptionRecordList, ConsumptionConstant.BEFORE_DEDUCTION)) {
                    //2.1.没有预扣,查询余额
                    if (VateUserNowProduct(consumptionRequest.getConsumptionCount(),hospitalId,consumptionRequest.getDepartmentId())) {
                    Map<String,Object> vateMap=VateUserNowProduct(consumptionRequest.getConsumptionCount(),hospitalId,consumptionRequest.getDepartmentId());
                    if (Boolean.parseBoolean(vateMap.get("vateRe").toString())) {
                        //2.2.余额充足 获取要扣的套餐 写预扣费记录
                        if (beforeConsumption(consumptionRequest)) {
                            //预扣费成功
@@ -194,7 +195,7 @@
                    } else {
                        //余额不足
                        isSuccess = false;
                        reMsg = "余额不足或获取失败!";
                        reMsg = vateMap.get("vateMsg").toString();
                        bcode = ConsumptionConstant.BUSINESS_CODE_FAIL;
                        return ResultReturn(consumptionRequest, bcode,ConsumptionConstant.BEFORE_DEDUCTION, reMsg, isSuccess);
                    }
@@ -380,7 +381,8 @@
                //2.没有扣费,检查是否已经预扣费
                if (!isBeforeDeduction(consumptionRecordList, ConsumptionConstant.BEFORE_DEDUCTION)) {
                    //3.没有预扣,查询余额
                    if (VateUserNowProduct(consumptionRequest.getConsumptionCount(),consumptionRequest.getHospitalId(),consumptionRequest.getDepartmentId())) {
                    Map<String,Object> vateMap=VateUserNowProduct(consumptionRequest.getConsumptionCount(),consumptionRequest.getHospitalId(),consumptionRequest.getDepartmentId());
                    if (Boolean.parseBoolean(vateMap.get("vateRe").toString())) {
                        //4.余额充足 获取要扣的套餐 写预扣费记录
                        if (!beforeConsumption(consumptionRequest)) {
                            //预扣费执行失败
@@ -395,7 +397,7 @@
                        }
                    } else {
                        //余额不足
                        reMsg = "余额不足或获取失败!";
                        reMsg = vateMap.get("vateMsg").toString();
                        bcode = ConsumptionConstant.BUSINESS_CODE_FAIL;
                        return ResultReturn(consumptionRequest, bcode,ConsumptionConstant.BEFORE_DEDUCTION, reMsg, isSuccess);
                    }
@@ -564,24 +566,32 @@
     * @param consumptionCount 要扣的数量
     * @return
     */
    private Boolean VateUserNowProduct(int consumptionCount,Long hospitalId,Long departmentId) {
    private Map<String,Object> VateUserNowProduct(int consumptionCount,Long hospitalId,Long departmentId) {
        Map<String,Object> returnMap=new HashMap<>();
        ResultBody biUserPro = productOrderDetailService.biUserNowProduct(hospitalId, departmentId);
        if (biUserPro.getCode() == 0) {
            if (StringUtils.isNotBlank(biUserPro.getData().toString())) {
                //余额
                int userAICount = Integer.parseInt(biUserPro.getData().toString());
                if (userAICount >= consumptionCount) {
                    return true;
                    returnMap.put("vateRe",true);
                    returnMap.put("vateMsg","余额足够!");
                } else {
                    returnMap.put("vateRe",false);
                    returnMap.put("vateMsg","余额不足!");
                    logger.info("医院id:【{}】余额不足!", hospitalId);
                }
            } else {
                returnMap.put("vateRe",false);
                returnMap.put("vateMsg","余额获取异常,data为空!");
                logger.error("医院id:【{}】余额获取异常!", hospitalId);
            }
        } else {
         }else {
            returnMap.put("vateRe",false);
            returnMap.put("vateMsg","余额获取异常,Code非0!");
            logger.info("医院id:【{}】余额获取异常,返回非0!", hospitalId);
        }
        return false;
        return returnMap;
    }
    /**
@@ -672,7 +682,7 @@
     * 发消息到消息队列
     * @return
     */
    @RabbitListener(queues = "BoneAgeEvaluationData")
    //@RabbitListener(queues = "BoneAgeEvaluationData")
    private void MessageToBI(ConsumptionRequest consumptionRequest)
    {
        //发消息到队列
@@ -681,5 +691,7 @@
                "\",\"doctorId\":\"" + consumptionRequest.getDoctorId() +
                "\",\"date\":\"" + DateUtils.formatDate(new Date(),"yyyy-MM-dd")+"\"}";
        rabbitTemplate.convertAndSend(ConsumptionConstant.EXCHANGE_DATA, ConsumptionConstant.ROUTINGKEY_DATA+envName, context);
        log.error("骨龄评价扣费消息已发送:"+context);
    }
}
kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ProductOrderDetailServiceImpl.java
@@ -2,7 +2,6 @@
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.kidgrow.common.constant.ConsumptionConstant;
import com.kidgrow.common.model.*;
import com.kidgrow.common.service.impl.SuperServiceImpl;
import com.kidgrow.common.utils.DateUtils;
@@ -315,18 +314,22 @@
                int depCount = productOrderJoinDetailsListDep.stream().collect(Collectors.summingInt(ProductOrderJoinDetail::getAilightCount));
                //可用的总量
                userAICount = shareCount + depCount;
                //共享套餐里面的detailid
                List<Long> shareDetailId = productOrderJoinDetailListShare.stream().map(m -> m.getId()).collect(Collectors.toList());
                //私有套餐里面的detailid
                List<Long> depDetailId = productOrderJoinDetailsListDep.stream().map(m -> m.getId()).collect(Collectors.toList());
                //获取所有有效的套餐id
                List<Long> nowDetailList=shareDetailId;
                nowDetailList.addAll(depDetailId);
                //查询已预扣 未退还  未扣费的数据
                List<ConsumptionRecord> consumptionRecordList = consumptionRecordMapper.findDetailList(nowDetailList);
                //计算预扣费的总量
                Map<String, Object> selectMap = new HashMap<>();
                selectMap.put("recordType", ConsumptionConstant.BEFORE_DEDUCTION);
                List<ConsumptionRecord> consumptionRecordList = consumptionRecordMapper.findList(selectMap);;
                if (consumptionRecordList.size() > 0) {
                    //共享套餐里面的detailid
                    List<Long> shareDetailId = productOrderJoinDetailListShare.stream().map(m -> m.getId()).collect(Collectors.toList());
                    //私有套餐里面的detailid
                    List<Long> depDetailId = productOrderJoinDetailsListDep.stream().map(m -> m.getId()).collect(Collectors.toList());
                    //共享套餐里面预扣费总数
                    int shareConCount = consumptionRecordList.stream().filter(f -> shareDetailId.contains(f.getProOrderDetailId())).collect(Collectors.summingInt(ConsumptionRecord::getConsumptionCount));
                    //共享套餐里面预扣费总数
                    //私有套餐里面预扣费总数
                    int depConCount = consumptionRecordList.stream().filter(f -> depDetailId.contains(f.getProOrderDetailId())).collect(Collectors.summingInt(ConsumptionRecord::getConsumptionCount));
                    userAICount -= (shareConCount + depConCount);
                }
kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/ConsumptionRecordMapper.xml
@@ -60,4 +60,20 @@
        <include refid="where"/>
        order by id desc
    </select>
    <!--定义根据-ConsumptionRecord当作查询条件返回对象集合-->
    <select id="findDetailList" resultType="com.kidgrow.oprationcenter.model.ConsumptionRecord">
        SELECT * FROM `consumption_record`
        where record_type=1
        and update_time is null
        <where>
            <if test="p!=null and p.size()>0">
                and pro_order_detail_id in
                <foreach item="item" index="index" collection="p" open="(" close=")" separator=",">
                    #{item}
                </foreach>
            </if>
        </where>
        and pro_order_detail_id in (1,1)
        order by id desc
    </select>
</mapper>
kidgrow-business/kidgrow-opration-center/pom.xml
@@ -43,6 +43,10 @@
            <groupId>com.kidgrow</groupId>
            <artifactId>kidgrow-ribbon-spring-boot-starter</artifactId>
        </dependency>
<!--        <dependency>-->
<!--            <groupId>com.kidgrow</groupId>-->
<!--            <artifactId>kidgrow-rabbitmq-spring-boot-starter</artifactId>-->
<!--        </dependency>-->
        <dependency>
            <groupId>com.kidgrow</groupId>
            <artifactId>kidgrow-usercenter-api</artifactId>
kidgrow-commons/kidgrow-ribbon-spring-boot-starter/src/main/java/com/kidgrow/ribbon/config/FeignHttpInterceptorConfig.java
@@ -30,6 +30,7 @@
    @PostConstruct
    public void initialize() {
        requestHeaders.add(SecurityConstants.USER_ID_HEADER);
        requestHeaders.add(SecurityConstants.DOCTOR_ID_HEADER);
        requestHeaders.add(SecurityConstants.USER_HEADER);
        requestHeaders.add(SecurityConstants.USER_DEP_ID_HEADER);
        requestHeaders.add(SecurityConstants.USER_DEP_NAME_HEADER);
kidgrow-commons/kidgrow-ribbon-spring-boot-starter/src/main/java/com/kidgrow/ribbon/config/FeignHttpTenantInterceptorConfig.java
@@ -30,6 +30,7 @@
    @PostConstruct
    public void initialize() {
        requestHeaders.add(SecurityConstants.USER_ID_HEADER);
        requestHeaders.add(SecurityConstants.DOCTOR_ID_HEADER);
        requestHeaders.add(SecurityConstants.USER_HEADER);
        requestHeaders.add(SecurityConstants.USER_DEP_ID_HEADER);
        requestHeaders.add(SecurityConstants.USER_DEP_NAME_HEADER);
kidgrow-config/src/main/resources/application-uat.properties
@@ -1 +1,76 @@
# \u9884\u4E0A\u7EBF\u73AF\u5883
# \u9884\u4E0A\u7EBF\u73AF\u5883
########################## \u7EDF\u4E00\u53D8\u91CF\u914D\u7F6E ##########################
##### \u6570\u636E\u5E93\u914D\u7F6E
kidgrow.datasource.ip=rm-2ze84sb2l40k33a034o.mysql.rds.aliyuncs.com
kidgrow.datasource.username=yingdawangluo
kidgrow.datasource.password=Yingdawangluo2020
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
##### Redis\u914D\u7F6E
# \u662F\u5426\u5F00\u542FRedis\u7F13\u5B58  true\u5F00\u542F   false \u5173\u95ED
spring.redis.open=true
spring.redis.host=182.92.99.224
spring.redis.port=6379
spring.redis.password=kidgrow
spring.redis.timeout=5000
#rabbitmq\u914D\u7F6E
kidgrow.rabbitmq.host=182.92.99.224
kidgrow.rabbitmq.port=5672
kidgrow.rabbitmq.username=liuke
kidgrow.rabbitmq.password=kidgrow2020
kidgrow.rabbitmq.exchangeName=BoneAgeEvaluation
kidgrow.rabbitmq.queueName=test_queue
kidgrow.rabbitmq.routingKeyName=Kidgrow2020
kidgrow.rabbitmq.virtual-host=kidgrow
#\u963F\u91CCDruid\u914D\u7F6E
kidgrow.druid.loginname=admin
kidgrow.druid.loginpwd=123456
#eureka \u6CE8\u518C\u4E2D\u5FC3Url
kidgrow.eureka.client.serviceUrl.defaultZone=http://172.17.97.143:9001/eureka/,http://172.17.64.228:9001/eureka/
kidgrow.eureka.instance.hostname=127.0.0.1
##eureka client\u53D1\u9001\u5FC3\u8DF3\u7ED9server\u7AEF\u7684\u9891\u7387
eureka.instance.lease-renewal-interval-in-seconds=30
#eureka client\u95F4\u9694\u591A\u4E45\u53BB\u62C9\u53D6\u670D\u52A1\u6CE8\u518C\u4FE1\u606F\uFF0C\u9ED8\u8BA4\u4E3A30\u79D2\uFF0C\u5BF9\u4E8Eapi-gateway\uFF0C\u5982\u679C\u8981\u8FC5\u901F\u83B7\u53D6\u670D\u52A1\u6CE8\u518C\u72B6\u6001\uFF0C\u53EF\u4EE5\u7F29\u5C0F\u8BE5\u503C\uFF0C\u6BD4\u59825\u79D2
eureka.instance.lease-expiration-duration-in-seconds=30
##### elasticsearch\u914D\u7F6E
kidgrow.elasticsearch.cluster-name=kidgrow-es
kidgrow.elasticsearch.cluster-nodes=123.57.164.62
##### sentinel\u914D\u7F6E
kidgrow.sentinel.dashboard=127.0.0.1:6999
##### fastDFS\u914D\u7F6E
kidgrow.fdfs.web-url=127.0.0.1
kidgrow.fdfs.trackerList=${kidgrow.fdfs.web-url}:22122
####\u963F\u91CCOSS\u914D\u7F6E
kidgrow.oss.access-key=LTAI4FennfcwZupz3B6hkK3N
kidgrow.oss.accessKeySecret=NzBBGe8SS41qJlp0nA3tlJ3t74lBZM
kidgrow.oss.endpoint=123.kidgrow.cloud
kidgrow.oss.bucketName=kidgrow
kidgrow.oss.domain=http://123.kidgrow.cloud/
##### \u65E5\u5FD7\u94FE\u8DEF\u8FFD\u8E2A
kidgrow.trace.enable=true
##### \u8D1F\u8F7D\u5747\u8861\u9694\u79BB(version\u9694\u79BB\uFF0C\u53EA\u9002\u7528\u4E8E\u5F00\u53D1\u73AF\u5883)
kidgrow.ribbon.isolation.enabled=false
##### mybatis-plus\u6253\u5370\u5B8C\u6574sql(\u53EA\u9002\u7528\u4E8E\u5F00\u53D1\u73AF\u5883)
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
##### \u5BA1\u8BA1\u65E5\u5FD7\u914D\u7F6E
kidgrow.audit-log.enabled=true
kidgrow.audit-log.log-type=db
kidgrow.audit-log.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
kidgrow.audit-log.datasource.jdbc-url=jdbc:mysql://${kidgrow.datasource.ip}:3306/logger_center_${spring.profiles.active}?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai
kidgrow.audit-log.datasource.username=${kidgrow.datasource.username}
kidgrow.audit-log.datasource.password=${kidgrow.datasource.password}
##### \u79FB\u52A8\u7AEF\u4E0A\u4F20\u5149\u7247Web\u5E94\u7528URL
appUrl=https://upload.kidgrow.cloud/
kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital.html
@@ -75,6 +75,7 @@
            headers: { 'Authorization': 'Bearer ' + config.getToken().access_token },
            page: true,
            cols: [[
                { field: 'hospitalId', width: 180, title: '医院编号', fixed: 'left' },
                { field: 'hospitalName', width: 250, title: '医院名称', fixed: 'left' },
                { field: 'departmentName', width: 100, title: '科室/部门', fixed: 'left' },
                {