forked from kidgrow-microservices-platform

zhaoxiaohao
2021-02-26 42732fda8d3fdef36b33e2c46f2988df7424bf6a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
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<br>
 *
 * @Description:
 * @Project: 运营中心
 * @CreateDate: Created in 2020-09-21 14:16:18 <br>
 * @Author: <a href="411269194@kidgrow.com">houruijun</a>
 * @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<PageResult> list(@RequestParam Map<String, Object> 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<String,Long> 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<String> 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)
                    {
                        if(payManager.getEnabled()){
                            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("保存失败");
                }
            }
 
        }
    }
}