From 0eb9482d1315c1da1e16bf00312093b5d66e1075 Mon Sep 17 00:00:00 2001
From: houruijun <411269194@kidgrow.com>
Date: Mon, 17 Aug 2020 09:08:31 +0800
Subject: [PATCH] 1.增加注册用户自动充入试用套餐功能 2.取消注册用户需要审核的参数值

---
 kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysUserServiceImpl.java                          |   40 ++++++-
 kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/constant/CommonConstant.java                                              |   13 ++
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/fallback/ProductOrderFallbackFactory.java |   19 +++
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ProductOrderController.java       |   28 +++++
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ProductOrderServiceImpl.java       |  115 +++++++++++++++++++++++
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IProductOrderService.java               |    6 +
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/ProductOrderService.java                  |   28 +++++
 kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/pom.xml                                                                                            |    4 
 8 files changed, 245 insertions(+), 8 deletions(-)

diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/ProductOrderService.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/ProductOrderService.java
new file mode 100644
index 0000000..aedf30b
--- /dev/null
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/ProductOrderService.java
@@ -0,0 +1,28 @@
+package com.kidgrow.oprationcenter.feign;
+
+import com.kidgrow.common.constant.ServiceNameConstants;
+import com.kidgrow.common.model.ResultBody;
+import com.kidgrow.oprationcenter.feign.fallback.ProductOrderFallbackFactory;
+import com.kidgrow.ribbon.config.FeignHttpInterceptorConfig;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+
+import java.util.Map;
+
+/**
+ * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
+ * @Description: 扣费业务相关内部调用
+ * @Project: 运营中心
+ * @CreateDate: Created in 2020-06-27 15:26:33 <br>
+ * @Author: <a href="411269194@kidgrow.com">houruijun</a>
+ * @version: 1.0
+ */
+@FeignClient(value = ServiceNameConstants.OPRATION_SERVER,configuration= FeignHttpInterceptorConfig.class,
+        fallbackFactory = ProductOrderFallbackFactory.class, decode404 = true)
+public interface ProductOrderService {
+    /**
+     * 冲试用套餐  用于注册医生自动充值
+     */
+    @PostMapping(value = "contract/saveTemp")
+    ResultBody saveProductDetail(Map<String,Object> params);
+}
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/fallback/ProductOrderFallbackFactory.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/fallback/ProductOrderFallbackFactory.java
new file mode 100644
index 0000000..1355d0c
--- /dev/null
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/fallback/ProductOrderFallbackFactory.java
@@ -0,0 +1,19 @@
+package com.kidgrow.oprationcenter.feign.fallback;
+
+import com.kidgrow.common.model.ResultBody;
+import com.kidgrow.oprationcenter.feign.ProductOrderService;
+import feign.hystrix.FallbackFactory;
+
+import java.util.Map;
+
+public class ProductOrderFallbackFactory implements FallbackFactory<ProductOrderService> {
+    @Override
+    public ProductOrderService create(Throwable throwable) {
+        return new ProductOrderService() {
+            @Override
+            public ResultBody saveProductDetail(Map<String, Object> params) {
+                return ResultBody.failed().msg("saveProductDetail的FeignClient调用失败");
+            }
+        };
+    }
+}
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IProductOrderService.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IProductOrderService.java
index 46648b1..5500ca0 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IProductOrderService.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IProductOrderService.java
@@ -45,5 +45,11 @@
      * @return
      */
     int delProductDetail(Long orderId);
+    /**
+     * 用户充值(创建订单,增加充值记录,冲套餐)
+     * @param params
+     * @return
+     */
+    boolean saveProductDetail(Map<String,Object> params);
 }
 
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ProductOrderServiceImpl.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ProductOrderServiceImpl.java
index 44cae85..0b93508 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ProductOrderServiceImpl.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ProductOrderServiceImpl.java
@@ -2,18 +2,28 @@
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.kidgrow.common.annotation.LoginUser;
+import com.kidgrow.common.constant.CommonConstant;
 import com.kidgrow.common.model.PageResult;
 import com.kidgrow.common.model.ResultBody;
 import com.kidgrow.common.model.SysUser;
 import com.kidgrow.common.service.impl.SuperServiceImpl;
+import com.kidgrow.common.utils.DateUtil;
+import com.kidgrow.common.utils.RandomValueUtils;
 import com.kidgrow.oprationcenter.feign.RoleOrganizationService;
+import com.kidgrow.oprationcenter.mapper.ProductOrderDetailMapper;
 import com.kidgrow.oprationcenter.mapper.ProductOrderMapper;
+import com.kidgrow.oprationcenter.mapper.ProductOrderRecordMapper;
 import com.kidgrow.oprationcenter.model.ProductOrder;
+import com.kidgrow.oprationcenter.model.ProductOrderDetail;
+import com.kidgrow.oprationcenter.model.ProductOrderRecord;
+import com.kidgrow.oprationcenter.model.SysProduct;
 import com.kidgrow.oprationcenter.service.IProductOrderService;
+import com.kidgrow.oprationcenter.service.ISysProductService;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.MapUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.Date;
 import java.util.List;
@@ -32,6 +42,12 @@
 public class ProductOrderServiceImpl extends SuperServiceImpl<ProductOrderMapper, ProductOrder> implements IProductOrderService {
     @Autowired
     private RoleOrganizationService roleOrganizationService;
+    @Autowired
+    private ISysProductService sysProductService;
+    @Autowired
+    private ProductOrderDetailMapper productOrderDetailMapper;
+    @Autowired
+    private ProductOrderRecordMapper productOrderRecordMapper;
     /**
      * 列表
      * @param params
@@ -80,4 +96,103 @@
     public int delProductDetail(Long orderId) {
         return baseMapper.delProductDetail(orderId);
     }
+
+    /**
+     * 用户充值(创建订单,增加充值记录,冲套餐)
+     * @param params
+     * @return
+     */
+    @Override
+    @Transactional(rollbackFor = {Exception.class})
+    public boolean saveProductDetail(Map<String,Object> params)
+    {
+        //指定套餐数据
+        SysProduct sysProduct=sysProductService.getById(CommonConstant.REG_USER_PRODUCT_ID);
+        if (sysProduct != null) {
+            //订单合同数据
+            ProductOrder productOrder=new ProductOrder();
+            productOrder.setIsDel(false);
+            productOrder.setEnabled(true);
+            productOrder.setContractBeginTime(new Date());
+            productOrder.setContractEndTime(DateUtil.addDays(new Date(), CommonConstant.REG_USER_CONTRACT_DAY));
+            productOrder.setContractTime(new Date());
+            productOrder.setContractNo(RandomValueUtils.getRandom(10));
+            productOrder.setContractTitle(CommonConstant.REG_USER_CONTRACT_NAME);
+            productOrder.setHospitalId(Long.valueOf(params.get("departmentId").toString()));
+            productOrder.setHospitalName(params.get("hospitalName").toString());
+            productOrder.setDepartmentId(Long.valueOf(params.get("hospitalId").toString()));
+            productOrder.setDepartmentName(params.get("departmentName").toString());
+            productOrder.setCreateUserId(CommonConstant.CREATE_USER_ID);
+            productOrder.setCreateUserName(CommonConstant.CREATE_USER_NAME);
+            if (baseMapper.insert(productOrder)==1) {
+                //套餐数据
+                ProductOrderDetail productOrderDetail=new ProductOrderDetail();
+                productOrderDetail.setEnabled(true);
+                productOrderDetail.setIsDel(false);
+                productOrderDetail.setAilightCount(sysProduct.getAilightCount());
+                productOrderDetail.setRecordCount(sysProduct.getRecordCount());
+                productOrderDetail.setProBegintime(new Date());
+                //0 天 1 月 2 年
+                switch(sysProduct.getProTimeUnit())
+                {
+                    case 0:
+                    default:
+                        productOrderDetail.setProEndtime(DateUtil.addDays(new Date(),sysProduct.getProTime()));
+                        break;
+                    case 1:
+                        productOrderDetail.setProEndtime(DateUtil.addMonths(new Date(),sysProduct.getProTime()));
+                        break;
+                    case 2:
+                        productOrderDetail.setProEndtime(DateUtil.addYears(new Date(),sysProduct.getProTime()));
+                        break;
+                }
+                productOrderDetail.setProId(sysProduct.getId());
+                productOrderDetail.setProName(sysProduct.getProName());
+                productOrderDetail.setOrderId(productOrder.getId());
+                productOrderDetail.setProType(sysProduct.getProType());
+                if(productOrderDetailMapper.insert(productOrderDetail)==1)
+                {
+                    //充值记录
+                    ProductOrderRecord productOrderRecord=new ProductOrderRecord();
+                    productOrderRecord.setEnabled(true);
+                    productOrderRecord.setIsDel(false);
+                    productOrderRecord.setAilightCount(sysProduct.getAilightCount());
+                    productOrderRecord.setRecordCount(sysProduct.getRecordCount());
+                    productOrderRecord.setProBegintime(new Date());
+                    //0 天 1 月 2 年
+                    switch(sysProduct.getProTimeUnit())
+                    {
+                        case 0:
+                        default:
+                            productOrderRecord.setProEndtime(DateUtil.addDays(new Date(),sysProduct.getProTime()));
+                            break;
+                        case 1:
+                            productOrderRecord.setProEndtime(DateUtil.addMonths(new Date(),sysProduct.getProTime()));
+                            break;
+                        case 2:
+                            productOrderRecord.setProEndtime(DateUtil.addYears(new Date(),sysProduct.getProTime()));
+                            break;
+                    }
+                    productOrderRecord.setProId(sysProduct.getId());
+                    productOrderRecord.setProName(sysProduct.getProName());
+                    productOrderRecord.setOrderId(productOrder.getId());
+                    productOrderRecord.setProType(sysProduct.getProType());
+                    if(productOrderRecordMapper.insert(productOrderRecord)<1)
+                    {
+                        baseMapper.deleteById(productOrder.getId());
+                        productOrderDetailMapper.deleteById(productOrderDetail.getId());
+                    }
+                    else
+                    {
+                        return true;
+                    }
+                }
+                else
+                {
+                    baseMapper.deleteById(productOrder.getId());
+                }
+            }
+        }
+        return false;
+    }
 }
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ProductOrderController.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ProductOrderController.java
index 93e048a..ee1269e 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ProductOrderController.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ProductOrderController.java
@@ -6,6 +6,7 @@
 import com.kidgrow.common.model.ResultBody;
 import com.kidgrow.common.model.SysOrganization;
 import com.kidgrow.common.model.SysUser;
+import com.kidgrow.common.utils.StringUtils;
 import com.kidgrow.oprationcenter.model.ProductOrder;
 import com.kidgrow.oprationcenter.service.IBusinessRecordsService;
 import com.kidgrow.oprationcenter.service.IProductOrderService;
@@ -112,6 +113,33 @@
     }
 
     /**
+     * 冲试用套餐  用于注册医生自动充值
+     * @param params
+     * @return
+     */
+    @ApiOperation(value = "套餐充值")
+    @PostMapping("/saveTemp")
+    public ResultBody saveProductDetail(Map<String,Object> params)
+    {
+        if (StringUtils.isNotBlank(params.get("hospitalId").toString()) &&
+                StringUtils.isNotBlank(params.get("departmentId").toString())&&
+                        StringUtils.isNotBlank(params.get("hospitalName").toString())&&
+                                StringUtils.isNotBlank(params.get("departmentName").toString())) {
+            boolean isResult= productOrderService.saveProductDetail(params);
+            if (isResult) {
+                return ResultBody.ok().data(isResult).msg("试用套餐充值成功");
+            }
+            else
+            {
+                return ResultBody.failed().data(isResult).msg("试用套餐充值失败");
+            }
+        }
+        else
+        {
+            return ResultBody.failed().data(false).msg("充值参数有误");
+        }
+    }
+    /**
      * 删除
      */
     @ApiOperation(value = "删除")
diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/pom.xml b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/pom.xml
index e144b90..48c10b4 100644
--- a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/pom.xml
+++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/pom.xml
@@ -30,5 +30,9 @@
             <groupId>com.kidgrow</groupId>
             <artifactId>kidgrow-plugin-sms-api</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.kidgrow</groupId>
+            <artifactId>kidgrow-opration-center-api</artifactId>
+        </dependency>
     </dependencies>
 </project>
\ No newline at end of file
diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysUserServiceImpl.java b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysUserServiceImpl.java
index 560a717..9f9d8ee 100644
--- a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysUserServiceImpl.java
+++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysUserServiceImpl.java
@@ -18,6 +18,7 @@
 import com.kidgrow.common.utils.AesUtils;
 import com.kidgrow.common.utils.DateUtils;
 import com.kidgrow.common.utils.Pinyin4jUtil;
+import com.kidgrow.oprationcenter.feign.ProductOrderService;
 import com.kidgrow.redis.util.RedisUtils;
 import com.kidgrow.sms.feign.SmsChuangLanService;
 import com.kidgrow.sms.model.ConstantSMS;
@@ -58,14 +59,12 @@
     private final static String LOCK_KEY_USERNAME = CommonConstant.LOCK_KEY_PREFIX + "username:";
     @Autowired
     private PasswordEncoder passwordEncoder;
-
     @Resource
     private ISysRoleUserService roleUserService;
     @Resource
     private ISysDictionariesService sysDictionariesService;
     @Resource
     private SysRoleMenuMapper roleMenuMapper;
-
     @Autowired
     private ISysOrganizationService organizationService;
     @Autowired
@@ -82,13 +81,15 @@
     private DistributedLock lock;
     @Autowired
     private SysDoctorMapper sysDoctorMapper;
-
     @Autowired
     private SysRoleMapper sysRoleMapper;
     @Autowired
     private SysUserRoleMapper sysUserRoleMapper;
     @Autowired
     private SysOrganizationMapper sysOrganizationMapper;
+    @Autowired
+    private ProductOrderService productOrderService;
+
 
     @Override
     public LoginAppUser findByUsername(String username) {
@@ -711,11 +712,17 @@
                     sysDepartment.setServerUserTel("0");
                     sysDepartment.setServerUserName(createUserName);
                     boolean d = departmentService.save(sysDepartment);
-                    if (!d) {
+                    if (d) {
+                        userRegVo.setDepartmentId(sysDepartment.getId());
+                        //自动充入系统指定的试用套餐
+                        if(!saveProductDetail(sysHospital.getId(),sysDepartment.getId(),sysHospital.getHospitalName(),sysDepartment.getDepartmentName()))
+                        {
+                            isSuccess = false;
+                            expMsg = "套餐充值失败";
+                        }
+                    } else {
                         isSuccess = false;
                         expMsg = "科室数据写入失败";
-                    } else {
-                        userRegVo.setDepartmentId(sysDepartment.getId());
                     }
                 } else {
                     isSuccess = false;
@@ -840,7 +847,7 @@
                                 sysDoctor.setServerUserId(isReg ? createUserId : sysUserd.getId());
                                 sysDoctor.setServerUserName(isReg ? createUserName : sysUserd.getUsername());
                                 sysDoctor.setIsAdminUser(false);
-                                sysDoctor.setEnabled(!isReg);
+                                sysDoctor.setEnabled(true);
                                 if (sysDoctorMapper.insert(sysDoctor) == 1) {
                                     //非自主注册的 返回信息带密码
                                     if (!isReg) {
@@ -884,6 +891,25 @@
             return ResultBody.ok().data(sysUser);
         }
     }
+
+    /**
+     * feign客户端调用写入试用套餐
+     * @param hospitalId
+     * @param departmentId
+     * @param hospitalName
+     * @param departmentName
+     * @return
+     */
+    private boolean saveProductDetail(Long hospitalId,Long departmentId,String hospitalName,String departmentName)
+    {
+        Map<String,Object> params=new HashMap<String,Object>();
+        params.put("hospitalId",hospitalId);
+        params.put("departmentId",departmentId);
+        params.put("hospitalName",hospitalName);
+        params.put("departmentName",departmentName);
+        ResultBody resultBody= productOrderService.saveProductDetail(params);
+        return (boolean)resultBody.getData();
+    }
     /**
      * 获取医院科室下的所有H端有效的医生
      *
diff --git a/kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/constant/CommonConstant.java b/kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/constant/CommonConstant.java
index 2c7e8dc..9e8ddbf 100644
--- a/kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/constant/CommonConstant.java
+++ b/kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/constant/CommonConstant.java
@@ -282,7 +282,18 @@
      * 自主注册的科室组织id
      */
     public static final Long DEPARTMENT_ORG_ID=15321234571L;
-
+    /**
+     * 自主注册的用户默认给的产品id
+     */
+    public static final Long REG_USER_PRODUCT_ID=1000000000000000001L;
+    /**
+     * 自主注册的用户合同时长 天
+     */
+    public static final Integer REG_USER_CONTRACT_DAY=15;
+    /**
+     * 自主注册的用户合同名
+     */
+    public static final String REG_USER_CONTRACT_NAME="注册用户免费合同";
     /**
      * 自主注册的创建人id
      */

--
Gitblit v1.8.0