package com.kidgrow.oprationcenter.controller; import com.kidgrow.common.annotation.LoginUser; import com.kidgrow.common.controller.BaseController; import com.kidgrow.common.model.PageResult; import com.kidgrow.common.model.ResultBody; import com.kidgrow.common.model.SysUser; import com.kidgrow.common.utils.ArithUtils; import com.kidgrow.oprationcenter.model.PayManager; import com.kidgrow.oprationcenter.model.ProductOrderDetail; import com.kidgrow.oprationcenter.service.IPayManagerService; import com.kidgrow.oprationcenter.service.IProductOrderDetailService; import com.kidgrow.usercenter.feign.SysDepartmentService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.MapUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.BindingResult; import org.springframework.validation.ObjectError; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.ArrayList; import java.util.List; import java.util.Map; /** * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020
* * @Description: * @Project: 运营中心 * @CreateDate: Created in 2020-09-21 14:16:18
* @Author: houruijun * @version: 1.0 */ @Slf4j @RestController @RequestMapping("/paymanager") @Api(tags = "") public class PayManagerController extends BaseController { @Autowired private IPayManagerService payManagerService; @Autowired private IProductOrderDetailService productOrderDetailService; @Autowired private SysDepartmentService sysDepartmentService; /** * 列表 */ @ApiOperation(value = "查询列表") @ApiImplicitParams({ @ApiImplicitParam(name = "page", value = "分页起始位置", required = true, dataType = "Integer"), @ApiImplicitParam(name = "limit", value = "分页结束位置", required = true, dataType = "Integer") }) @GetMapping public ResultBody list(@RequestParam Map params) { if (params.size() == 0) { params.put("page", 1); params.put("limit", 10); } return ResultBody.ok().data(payManagerService.findList(params)); } /** * 查询 */ @ApiOperation(value = "查询") @GetMapping("/{id}") public ResultBody findById(@PathVariable Long id) { PayManager model = payManagerService.getById(id); return ResultBody.ok().data(model).msg("查询成功"); } /** * 查询 */ @ApiOperation(value = "查询一个科室的单次支付金额") @GetMapping("/getDepartmentPay") public ResultBody getDepartmentPay(@RequestParam Long hospitalId, @RequestParam Long departmentId) { PayManager payManager = new PayManager(); payManager.setDepartmentId(departmentId); payManager.setHospitalId(hospitalId); payManager.setIsDel(false); payManager.setEnabled(true); PayManager model = payManagerService.findByObject(payManager); if (model != null) { return ResultBody.ok().data(model.getPayPrice()).msg("已开通"); } return ResultBody.failed().msg("未开通支付功能"); } /** * 根据PayManager当做查询条件进行查询 */ @ApiOperation(value = "根据PayManager当做查询条件进行查询") @PostMapping("/query") public ResultBody findByObject(@RequestBody PayManager payManager) { PayManager model = payManagerService.findByObject(payManager); return ResultBody.ok().data(model).msg("查询成功"); } /** * 查询一个科室是否有支付功能 */ @ApiOperation(value = "查询一个科室是否有支付功能") @GetMapping("/departmentIsPay") public ResultBody departmentIsPay(@RequestParam Long hospitalId, @RequestParam Long departmentId) { PayManager payManager=payManagerService.findByObject(hospitalId,departmentId); if (payManager.getId() == null) { return ResultBody.ok().data(false).msg("未开通单次支付功能"); } else { return ResultBody.ok().data(true).msg("已开通单次支付功能"); } } /** * 查询一个科室是否有支付功能 */ @ApiOperation(value = "查询一个科室是否有支付功能") @PostMapping("/departmentIsPayFegin") public ResultBody departmentIsPayFegin(@RequestBody Map map) { Long hospitalId = MapUtils.getLong(map, "hospitalId"); if(hospitalId==null){ return ResultBody.failed("请输入医院id"); } Long departmentId = MapUtils.getLong(map, "departmentId"); if(departmentId==null){ return ResultBody.failed("请输入部门id"); } PayManager payManager=payManagerService.findByObject(hospitalId,departmentId); if (payManager.getId() == null) { return ResultBody.ok().data(false).msg("未开通单次支付功能"); } else { return ResultBody.ok().data(true).msg("已开通单次支付功能"); } } /** * 新增or更新 */ @ApiOperation(value = "保存") @PostMapping @Transactional(rollbackFor = {Exception.class}) public ResultBody save(@Valid @RequestBody PayManager payManager, BindingResult bindingResult, @LoginUser SysUser sysUser) { List errMsg = new ArrayList<>(); if (bindingResult.hasErrors()) { for (ObjectError error : bindingResult.getAllErrors()) { errMsg.add(error.getDefaultMessage()); } return ResultBody.failed().msg(errMsg.toString()); } else { int userdCount=-1; if (payManager.getEnabled()) { userdCount=productOrderDetailService.getUserdProduct(payManager.getHospitalId(),payManager.getDepartmentId()); } if (userdCount>0) { return ResultBody.failed().msg("该医院已有可用的套餐,不能开通单次支付!"); } else { payManager.setPayPrice(ArithUtils.round(payManager.getPayPrice()*100,2)); payManager.setPayKidgrow(ArithUtils.round(payManager.getPayKidgrow()*100,2)); payManager.setPayCustom(ArithUtils.round(payManager.getPayCustom()*100,2)); if (payManager.getId()!=null) { //修改支付功能 ProductOrderDetail modelDetail=payManagerService.getProductDetail(payManager.getHospitalId(),payManager.getDepartmentId()); if(!payManager.getEnabled()&&modelDetail!=null) { //支付禁用 禁用套餐 modelDetail.setEnabled(false); modelDetail.setIsDel(true); if(!productOrderDetailService.saveOrUpdate(modelDetail)) { return ResultBody.failed().msg("套餐修改失败!支付开通修改失败!"); } } else if(modelDetail==null) { Boolean isResult=payManagerService.saveproductOrder(payManager,sysUser); if (!isResult) { return ResultBody.failed().msg("套餐充入失败,支付开通失败!"); } } } else { Boolean isResult=payManagerService.saveproductOrder(payManager,sysUser); if (!isResult) { return ResultBody.failed().msg("套餐充入失败!支付开通失败!"); } } boolean v = payManagerService.saveOrUpdate(payManager); //修改科室的支付功能状态 sysDepartmentService.updatePay(payManager.getDepartmentId(),payManager.getEnabled()); if (v) { return ResultBody.ok().data(payManager).msg("保存成功"); } else { return ResultBody.failed().msg("保存失败"); } } } } }