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