kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/ProductOrderService.java
New file @@ -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); } kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/fallback/ProductOrderFallbackFactory.java
New file @@ -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调用失败"); } }; } } 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); } 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; } } 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 = "删除") 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> 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; @@ -89,6 +90,9 @@ private SysUserRoleMapper sysUserRoleMapper; @Autowired private SysOrganizationMapper sysOrganizationMapper; @Autowired private ProductOrderService productOrderService; @Override public LoginAppUser findByUsername(String username) { @@ -711,11 +715,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,8 +850,8 @@ sysDoctor.setServerUserId(isReg ? createUserId : sysUserd.getId()); sysDoctor.setServerUserName(isReg ? createUserName : sysUserd.getUsername()); sysDoctor.setIsAdminUser(false); sysDoctor.setEnabled(!isReg); sysDoctor.setDoctorCcie(userRegVo.getDoctorCcie()); sysDoctor.setEnabled(true); if (sysDoctorMapper.insert(sysDoctor) == 1) { //非自主注册的 返回信息带密码 if (!isReg) { @@ -885,6 +895,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端有效的医生 * 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 */