package com.kidgrow.oprationcenter.service.impl;
|
|
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;
|
import java.util.Map;
|
|
/**
|
* 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
|
* @Description: 产品的充值记录-订单<br>
|
* @Project: 用户中心<br>
|
* @CreateDate: Created in 2020-04-01 09:37:05 <br>
|
* @Author: <a href="4345453@kidgrow.com">liuke</a>
|
* @version 1.0
|
*/
|
@Slf4j
|
@Service
|
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
|
* @return
|
*/
|
@Override
|
public PageResult<ProductOrder> findList(Map<String, Object> params,@LoginUser SysUser sysUser){
|
Page<ProductOrder> page = new Page<>(MapUtils.getInteger(params, "page"), MapUtils.getInteger(params, "limit"));
|
Map<String, Object> roleOrgMap = roleOrganizationService.getRoleOrgMap(sysUser);
|
params.putAll(roleOrgMap);
|
List<ProductOrder> list = baseMapper.findList(page, params);
|
return PageResult.<ProductOrder>builder().data(list).code(0).count(page.getTotal()).build();
|
}
|
|
/**
|
* 根据ProductOrder对象当做查询条件进行查询
|
* @param productOrder
|
* @return ProductOrder
|
*/
|
@Override
|
public ProductOrder findByObject(ProductOrder productOrder){
|
return baseMapper.findByObject(productOrder);
|
}
|
|
/**
|
* 修改数据状态 启用 禁用
|
* @param params
|
* @return
|
*/
|
@Override
|
public ResultBody updateEnabled(Map<String, Object> params) {
|
Long id = MapUtils.getLong(params, "id");
|
Boolean enabled = MapUtils.getBoolean(params, "enabled");
|
|
ProductOrder productOrder = baseMapper.selectById(id);
|
if (productOrder == null) {
|
return ResultBody.failed("该数据不存在!");
|
}
|
productOrder.setEnabled(enabled);
|
productOrder.setUpdateTime(new Date());
|
int i = baseMapper.updateById(productOrder);
|
return i > 0 ? ResultBody.ok().data(productOrder).msg("更新成功") : ResultBody.failed("更新失败");
|
}
|
|
@Override
|
public int delProductDetail(Long orderId) {
|
return baseMapper.delProductDetail(orderId);
|
}
|
|
/**
|
* 用户充值(创建订单,增加充值记录,冲套餐)
|
* @param params
|
* @return
|
*/
|
@Override
|
@Transactional(rollbackFor = {Exception.class})
|
public boolean saveProductDetail(Map<String,Object> params,SysUser sysUser)
|
{
|
//指定套餐数据
|
SysProduct sysProduct=sysProductService.getById(Long.valueOf(params.get("proId").toString()));
|
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("hospitalId").toString()));
|
productOrder.setHospitalName(params.get("hospitalName").toString());
|
productOrder.setDepartmentId(Long.valueOf(params.get("departmentId").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());
|
productOrderDetail.setCreateUserId(CommonConstant.CREATE_USER_ID);
|
productOrderDetail.setCreateUserName(CommonConstant.CREATE_USER_NAME);
|
productOrderDetail.setIsShare(false);
|
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());
|
productOrderRecord.setIsShare(false);
|
//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());
|
productOrderRecord.setCreateUserId(CommonConstant.CREATE_USER_ID);
|
productOrderRecord.setCreateUserName(CommonConstant.CREATE_USER_NAME);
|
if(productOrderRecordMapper.insert(productOrderRecord)<1)
|
{
|
baseMapper.deleteById(productOrder.getId());
|
productOrderDetailMapper.deleteById(productOrderDetail.getId());
|
}
|
else
|
{
|
return true;
|
}
|
}
|
else
|
{
|
baseMapper.deleteById(productOrder.getId());
|
}
|
}
|
}
|
return false;
|
}
|
|
/**
|
* 获取用户套餐的使用状态(正式 和 试用)
|
* 只要要有一个充值的套餐为 为正式套餐,则为正式用户;
|
* 只要有一个充值的套餐为 分享状态,则该医院的医生为正式用户
|
* @param productOrder
|
* @return
|
*/
|
@Override
|
public ResultBody getStatus(ProductOrder productOrder) {
|
int status = baseMapper.getStatus(productOrder);
|
if (status>0) {
|
return ResultBody.ok().data(true);
|
}else {
|
return ResultBody.ok().data(false);
|
}
|
}
|
}
|