Authored by zww

病案复印申请

Showing 47 changed files with 2693 additions and 20 deletions
@@ -153,6 +153,8 @@ public class ShiroConfig { @@ -153,6 +153,8 @@ public class ShiroConfig {
153 //测试模块排除 153 //测试模块排除
154 filterChainDefinitionMap.put("/test/seata/**", "anon"); 154 filterChainDefinitionMap.put("/test/seata/**", "anon");
155 155
  156 + filterChainDefinitionMap.put("/app/api/**", "anon"); // 公众号、微信小程序
  157 +
156 // 添加自己的过滤器并且取名为jwt 158 // 添加自己的过滤器并且取名为jwt
157 Map<String, Filter> filterMap = new HashMap<String, Filter>(1); 159 Map<String, Filter> filterMap = new HashMap<String, Filter>(1);
158 //如果cloudServer为空 则说明是单体 需要加载跨域配置【微服务跨域切换】 160 //如果cloudServer为空 则说明是单体 需要加载跨域配置【微服务跨域切换】
@@ -120,7 +120,7 @@ public class BaseCommonServiceImpl implements BaseCommonService { @@ -120,7 +120,7 @@ public class BaseCommonServiceImpl implements BaseCommonService {
120 String formatTime = formatterLong.format(createTime); 120 String formatTime = formatterLong.format(createTime);
121 121
122 String mergeField = logContent + "-" + userid + "-" + username + "-" + ip + "-" + formatTime; 122 String mergeField = logContent + "-" + userid + "-" + username + "-" + ip + "-" + formatTime;
123 - if (StringUtils.isNotBlank(mergeField)){ 123 + if (encrypFlag && StringUtils.isNotBlank(mergeField)){
124 //添加完整性 124 //添加完整性
125 try { 125 try {
126 String hmac = EncryptionUtils.hmac(mergeField); 126 String hmac = EncryptionUtils.hmac(mergeField);
@@ -63,6 +63,18 @@ @@ -63,6 +63,18 @@
63 <!-- <systemPath>${project.basedir}/lib/HbcaSdk.jar</systemPath>--> 63 <!-- <systemPath>${project.basedir}/lib/HbcaSdk.jar</systemPath>-->
64 <!-- </dependency>--> 64 <!-- </dependency>-->
65 65
  66 + <!-- 小程序微信登录,微信支付-->
  67 + <dependency>
  68 + <groupId>com.github.binarywang</groupId>
  69 + <artifactId>weixin-java-mp</artifactId>
  70 + <version>4.5.0</version>
  71 + </dependency>
  72 +
  73 + <dependency>
  74 + <groupId>com.github.binarywang</groupId>
  75 + <artifactId>weixin-java-pay</artifactId>
  76 + <version>4.5.0</version>
  77 + </dependency>
66 </dependencies> 78 </dependencies>
67 79
68 </project> 80 </project>
  1 +package org.jeecg.modules.claims.controller;
  2 +
  3 +import java.util.Arrays;
  4 +import java.util.List;
  5 +import java.util.Map;
  6 +import java.util.stream.Collectors;
  7 +import java.io.IOException;
  8 +import java.io.UnsupportedEncodingException;
  9 +import java.net.URLDecoder;
  10 +import javax.servlet.http.HttpServletRequest;
  11 +import javax.servlet.http.HttpServletResponse;
  12 +import org.jeecg.common.api.vo.Result;
  13 +import org.jeecg.common.system.query.QueryGenerator;
  14 +import org.jeecg.common.util.oConvertUtils;
  15 +import org.jeecg.modules.claims.entity.InstitutionMedicalPrice;
  16 +import org.jeecg.modules.claims.service.IInstitutionMedicalPriceService;
  17 +
  18 +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  19 +import com.baomidou.mybatisplus.core.metadata.IPage;
  20 +import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  21 +import lombok.extern.slf4j.Slf4j;
  22 +
  23 +import org.jeecgframework.poi.excel.ExcelImportUtil;
  24 +import org.jeecgframework.poi.excel.def.NormalExcelConstants;
  25 +import org.jeecgframework.poi.excel.entity.ExportParams;
  26 +import org.jeecgframework.poi.excel.entity.ImportParams;
  27 +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
  28 +import org.jeecg.common.system.base.controller.JeecgController;
  29 +import org.springframework.beans.factory.annotation.Autowired;
  30 +import org.springframework.web.bind.annotation.*;
  31 +import org.springframework.web.multipart.MultipartFile;
  32 +import org.springframework.web.multipart.MultipartHttpServletRequest;
  33 +import org.springframework.web.servlet.ModelAndView;
  34 +import com.alibaba.fastjson.JSON;
  35 +import io.swagger.annotations.Api;
  36 +import io.swagger.annotations.ApiOperation;
  37 +import org.jeecg.common.aspect.annotation.AutoLog;
  38 +import org.apache.shiro.authz.annotation.RequiresPermissions;
  39 +
  40 + /**
  41 + * @Description: institution_medical_price
  42 + * @Author: jeecg-boot
  43 + * @Date: 2025-01-24
  44 + * @Version: V1.0
  45 + */
  46 +@Api(tags="institution_medical_price")
  47 +@RestController
  48 +@RequestMapping("/claims/institutionMedicalPrice")
  49 +@Slf4j
  50 +public class InstitutionMedicalPriceController extends JeecgController<InstitutionMedicalPrice, IInstitutionMedicalPriceService> {
  51 + @Autowired
  52 + private IInstitutionMedicalPriceService institutionMedicalPriceService;
  53 +
  54 + /**
  55 + * 分页列表查询
  56 + *
  57 + * @param institutionMedicalPrice
  58 + * @param pageNo
  59 + * @param pageSize
  60 + * @param req
  61 + * @return
  62 + */
  63 + //@AutoLog(value = "institution_medical_price-分页列表查询")
  64 + @ApiOperation(value="institution_medical_price-分页列表查询", notes="institution_medical_price-分页列表查询")
  65 + @GetMapping(value = "/list")
  66 + public Result<IPage<InstitutionMedicalPrice>> queryPageList(InstitutionMedicalPrice institutionMedicalPrice,
  67 + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
  68 + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
  69 + HttpServletRequest req) {
  70 + QueryWrapper<InstitutionMedicalPrice> queryWrapper = QueryGenerator.initQueryWrapper(institutionMedicalPrice, req.getParameterMap());
  71 + Page<InstitutionMedicalPrice> page = new Page<InstitutionMedicalPrice>(pageNo, pageSize);
  72 + IPage<InstitutionMedicalPrice> pageList = institutionMedicalPriceService.page(page, queryWrapper);
  73 + return Result.OK(pageList);
  74 + }
  75 +
  76 + /**
  77 + * 添加
  78 + *
  79 + * @param institutionMedicalPrice
  80 + * @return
  81 + */
  82 + @AutoLog(value = "institution_medical_price-添加")
  83 + @ApiOperation(value="institution_medical_price-添加", notes="institution_medical_price-添加")
  84 +// @RequiresPermissions("claims:institution_medical_price:add")
  85 + @PostMapping(value = "/add")
  86 + public Result<String> add(@RequestBody InstitutionMedicalPrice institutionMedicalPrice) {
  87 + institutionMedicalPriceService.save(institutionMedicalPrice);
  88 + return Result.OK("添加成功!");
  89 + }
  90 +
  91 + /**
  92 + * 编辑
  93 + *
  94 + * @param institutionMedicalPrice
  95 + * @return
  96 + */
  97 + @AutoLog(value = "institution_medical_price-编辑")
  98 + @ApiOperation(value="institution_medical_price-编辑", notes="institution_medical_price-编辑")
  99 +// @RequiresPermissions("claims:institution_medical_price:edit")
  100 + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
  101 + public Result<String> edit(@RequestBody InstitutionMedicalPrice institutionMedicalPrice) {
  102 + institutionMedicalPriceService.updateById(institutionMedicalPrice);
  103 + return Result.OK("编辑成功!");
  104 + }
  105 +
  106 + /**
  107 + * 通过id删除
  108 + *
  109 + * @param id
  110 + * @return
  111 + */
  112 + @AutoLog(value = "institution_medical_price-通过id删除")
  113 + @ApiOperation(value="institution_medical_price-通过id删除", notes="institution_medical_price-通过id删除")
  114 +// @RequiresPermissions("claims:institution_medical_price:delete")
  115 + @DeleteMapping(value = "/delete")
  116 + public Result<String> delete(@RequestParam(name="id",required=true) String id) {
  117 + institutionMedicalPriceService.removeById(id);
  118 + return Result.OK("删除成功!");
  119 + }
  120 +
  121 + /**
  122 + * 批量删除
  123 + *
  124 + * @param ids
  125 + * @return
  126 + */
  127 + @AutoLog(value = "institution_medical_price-批量删除")
  128 + @ApiOperation(value="institution_medical_price-批量删除", notes="institution_medical_price-批量删除")
  129 +// @RequiresPermissions("claims:institution_medical_price:deleteBatch")
  130 + @DeleteMapping(value = "/deleteBatch")
  131 + public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
  132 + this.institutionMedicalPriceService.removeByIds(Arrays.asList(ids.split(",")));
  133 + return Result.OK("批量删除成功!");
  134 + }
  135 +
  136 + /**
  137 + * 通过id查询
  138 + *
  139 + * @param id
  140 + * @return
  141 + */
  142 + //@AutoLog(value = "institution_medical_price-通过id查询")
  143 + @ApiOperation(value="institution_medical_price-通过id查询", notes="institution_medical_price-通过id查询")
  144 + @GetMapping(value = "/queryById")
  145 + public Result<InstitutionMedicalPrice> queryById(@RequestParam(name="id",required=true) String id) {
  146 + InstitutionMedicalPrice institutionMedicalPrice = institutionMedicalPriceService.getById(id);
  147 + if(institutionMedicalPrice==null) {
  148 + return Result.error("未找到对应数据");
  149 + }
  150 + return Result.OK(institutionMedicalPrice);
  151 + }
  152 +
  153 + /**
  154 + * 导出excel
  155 + *
  156 + * @param request
  157 + * @param institutionMedicalPrice
  158 + */
  159 +// @RequiresPermissions("claims:institution_medical_price:exportXls")
  160 + @RequestMapping(value = "/exportXls")
  161 + public ModelAndView exportXls(HttpServletRequest request, InstitutionMedicalPrice institutionMedicalPrice) {
  162 + return super.exportXls(request, institutionMedicalPrice, InstitutionMedicalPrice.class, "institution_medical_price");
  163 + }
  164 +
  165 + /**
  166 + * 通过excel导入数据
  167 + *
  168 + * @param request
  169 + * @param response
  170 + * @return
  171 + */
  172 +// @RequiresPermissions("claims:institution_medical_price:importExcel")
  173 + @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
  174 + public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
  175 + return super.importExcel(request, response, InstitutionMedicalPrice.class);
  176 + }
  177 +
  178 +}
  1 +package org.jeecg.modules.claims.controller;
  2 +
  3 +import java.util.Arrays;
  4 +import java.util.List;
  5 +import java.util.Map;
  6 +import java.util.stream.Collectors;
  7 +import java.io.IOException;
  8 +import java.io.UnsupportedEncodingException;
  9 +import java.net.URLDecoder;
  10 +import javax.servlet.http.HttpServletRequest;
  11 +import javax.servlet.http.HttpServletResponse;
  12 +
  13 +import org.apache.commons.lang3.StringUtils;
  14 +import org.jeecg.common.api.vo.Result;
  15 +import org.jeecg.common.system.query.QueryGenerator;
  16 +import org.jeecg.common.util.oConvertUtils;
  17 +import org.jeecg.modules.claims.entity.MedicalRecordsCopy;
  18 +import org.jeecg.modules.claims.service.IMedicalRecordsCopyPayService;
  19 +import org.jeecg.modules.claims.service.IMedicalRecordsCopyService;
  20 +
  21 +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  22 +import com.baomidou.mybatisplus.core.metadata.IPage;
  23 +import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  24 +import lombok.extern.slf4j.Slf4j;
  25 +
  26 +import org.jeecg.modules.weixin.service.IWeixinUserService;
  27 +import org.jeecgframework.poi.excel.ExcelImportUtil;
  28 +import org.jeecgframework.poi.excel.def.NormalExcelConstants;
  29 +import org.jeecgframework.poi.excel.entity.ExportParams;
  30 +import org.jeecgframework.poi.excel.entity.ImportParams;
  31 +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
  32 +import org.jeecg.common.system.base.controller.JeecgController;
  33 +import org.springframework.beans.factory.annotation.Autowired;
  34 +import org.springframework.transaction.annotation.Propagation;
  35 +import org.springframework.transaction.annotation.Transactional;
  36 +import org.springframework.web.bind.annotation.*;
  37 +import org.springframework.web.multipart.MultipartFile;
  38 +import org.springframework.web.multipart.MultipartHttpServletRequest;
  39 +import org.springframework.web.servlet.ModelAndView;
  40 +import com.alibaba.fastjson.JSON;
  41 +import io.swagger.annotations.Api;
  42 +import io.swagger.annotations.ApiOperation;
  43 +import org.jeecg.common.aspect.annotation.AutoLog;
  44 +import org.apache.shiro.authz.annotation.RequiresPermissions;
  45 +
  46 + /**
  47 + * @Description: medical_records_copy
  48 + * @Author: jeecg-boot
  49 + * @Date: 2025-01-24
  50 + * @Version: V1.0
  51 + */
  52 +@Api(tags="medical_records_copy")
  53 +@RestController
  54 +@RequestMapping("/claims/medicalRecordsCopy")
  55 +@Slf4j
  56 +public class MedicalRecordsCopyController extends JeecgController<MedicalRecordsCopy, IMedicalRecordsCopyService> {
  57 + @Autowired
  58 + private IMedicalRecordsCopyService medicalRecordsCopyService;
  59 + @Autowired
  60 + private IWeixinUserService weixinUserService;
  61 + @Autowired
  62 + private IMedicalRecordsCopyPayService medicalRecordsCopyPayService;
  63 +
  64 + /**
  65 + * 分页列表查询
  66 + *
  67 + * @param medicalRecordsCopy
  68 + * @param pageNo
  69 + * @param pageSize
  70 + * @param req
  71 + * @return
  72 + */
  73 + //@AutoLog(value = "medical_records_copy-分页列表查询")
  74 + @ApiOperation(value="medical_records_copy-分页列表查询", notes="medical_records_copy-分页列表查询")
  75 + @GetMapping(value = "/list")
  76 + public Result<IPage<MedicalRecordsCopy>> queryPageList(MedicalRecordsCopy medicalRecordsCopy,
  77 + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
  78 + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
  79 + HttpServletRequest req) {
  80 + QueryWrapper<MedicalRecordsCopy> queryWrapper = QueryGenerator.initQueryWrapper(medicalRecordsCopy, req.getParameterMap());
  81 + Page<MedicalRecordsCopy> page = new Page<MedicalRecordsCopy>(pageNo, pageSize);
  82 + IPage<MedicalRecordsCopy> pageList = medicalRecordsCopyService.page(page, queryWrapper);
  83 + if (pageList.getRecords() != null && !pageList.getRecords().isEmpty()) {
  84 + for (MedicalRecordsCopy record : pageList.getRecords()) {
  85 + if (StringUtils.isNotBlank(record.getRegion())) {
  86 + String[] split = record.getRegion().split(",");
  87 + if (split.length > 2) {
  88 + List<Map<String, String>> region = weixinUserService.getRegion(split[2]);
  89 + record.setRegion(region.get(0).get("provinceName") + region.get(0).get("cityName") + region.get(0).get("areaName"));
  90 + }
  91 + }
  92 + }
  93 + }
  94 + return Result.OK(pageList);
  95 + }
  96 +
  97 + /**
  98 + * 添加
  99 + *
  100 + * @param medicalRecordsCopy
  101 + * @return
  102 + */
  103 + @AutoLog(value = "medical_records_copy-添加")
  104 + @ApiOperation(value="medical_records_copy-添加", notes="medical_records_copy-添加")
  105 +// @RequiresPermissions("claims:medical_records_copy:add")
  106 + @PostMapping(value = "/add")
  107 + public Result<String> add(@RequestBody MedicalRecordsCopy medicalRecordsCopy) {
  108 + medicalRecordsCopy.setStatus("1");
  109 + medicalRecordsCopyService.save(medicalRecordsCopy);
  110 + return Result.OK("添加成功!");
  111 + }
  112 +
  113 + /**
  114 + * 编辑
  115 + *
  116 + * @param medicalRecordsCopy
  117 + * @return
  118 + */
  119 + @AutoLog(value = "medical_records_copy-编辑")
  120 + @ApiOperation(value="medical_records_copy-编辑", notes="medical_records_copy-编辑")
  121 +// @RequiresPermissions("claims:medical_records_copy:edit")
  122 + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
  123 + public Result<String> edit(@RequestBody MedicalRecordsCopy medicalRecordsCopy) {
  124 + medicalRecordsCopyService.updateById(medicalRecordsCopy);
  125 + return Result.OK("编辑成功!");
  126 + }
  127 +
  128 + /**
  129 + * 通过id删除
  130 + *
  131 + * @param id
  132 + * @return
  133 + */
  134 + @AutoLog(value = "medical_records_copy-通过id删除")
  135 + @ApiOperation(value="medical_records_copy-通过id删除", notes="medical_records_copy-通过id删除")
  136 +// @RequiresPermissions("claims:medical_records_copy:delete")
  137 + @DeleteMapping(value = "/delete")
  138 + public Result<String> delete(@RequestParam(name="id",required=true) String id) {
  139 + medicalRecordsCopyService.removeById(id);
  140 + return Result.OK("删除成功!");
  141 + }
  142 +
  143 + /**
  144 + * 批量删除
  145 + *
  146 + * @param ids
  147 + * @return
  148 + */
  149 + @AutoLog(value = "medical_records_copy-批量删除")
  150 + @ApiOperation(value="medical_records_copy-批量删除", notes="medical_records_copy-批量删除")
  151 +// @RequiresPermissions("claims:medical_records_copy:deleteBatch")
  152 + @DeleteMapping(value = "/deleteBatch")
  153 + public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
  154 + this.medicalRecordsCopyService.removeByIds(Arrays.asList(ids.split(",")));
  155 + return Result.OK("批量删除成功!");
  156 + }
  157 +
  158 + /**
  159 + * 通过id查询
  160 + *
  161 + * @param id
  162 + * @return
  163 + */
  164 + //@AutoLog(value = "medical_records_copy-通过id查询")
  165 + @ApiOperation(value="medical_records_copy-通过id查询", notes="medical_records_copy-通过id查询")
  166 + @GetMapping(value = "/queryById")
  167 + public Result<MedicalRecordsCopy> queryById(@RequestParam(name="id",required=true) String id) {
  168 + MedicalRecordsCopy medicalRecordsCopy = medicalRecordsCopyService.getById(id);
  169 + if(medicalRecordsCopy==null) {
  170 + return Result.error("未找到对应数据");
  171 + }
  172 + return Result.OK(medicalRecordsCopy);
  173 + }
  174 +
  175 + /**
  176 + * 导出excel
  177 + *
  178 + * @param request
  179 + * @param medicalRecordsCopy
  180 + */
  181 +// @RequiresPermissions("claims:medical_records_copy:exportXls")
  182 + @RequestMapping(value = "/exportXls")
  183 + public ModelAndView exportXls(HttpServletRequest request, MedicalRecordsCopy medicalRecordsCopy) {
  184 + return super.exportXls(request, medicalRecordsCopy, MedicalRecordsCopy.class, "medical_records_copy");
  185 + }
  186 +
  187 + /**
  188 + * 通过excel导入数据
  189 + *
  190 + * @param request
  191 + * @param response
  192 + * @return
  193 + */
  194 +// @RequiresPermissions("claims:medical_records_copy:importExcel")
  195 + @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
  196 + public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
  197 + return super.importExcel(request, response, MedicalRecordsCopy.class);
  198 + }
  199 +
  200 + /**
  201 + * 通过id分页查询
  202 + * 有字典翻译
  203 + *
  204 + * @param id
  205 + * @return
  206 + */
  207 + //@AutoLog(value = "medical_records_copy-通过id分页查询")
  208 + @ApiOperation(value="medical_records_copy-通过id分页查询", notes="medical_records_copy-通过id分页查询")
  209 + @GetMapping(value = "/queryOne")
  210 + public Result<?> queryOne(@RequestParam(name="id",required=true) String id) {
  211 + QueryWrapper<MedicalRecordsCopy> queryWrapper = new QueryWrapper<>();
  212 + queryWrapper.eq("id", id);
  213 + Page<MedicalRecordsCopy> page = new Page<MedicalRecordsCopy>(1, 10);
  214 + IPage<MedicalRecordsCopy> pageList = medicalRecordsCopyService.page(page, queryWrapper);
  215 + if (pageList.getRecords() != null && !pageList.getRecords().isEmpty()) {
  216 + for (MedicalRecordsCopy record : pageList.getRecords()) {
  217 + if (StringUtils.isNotBlank(record.getRegion())) {
  218 + String[] split = record.getRegion().split(",");
  219 + if (split.length > 2) {
  220 + List<Map<String, String>> region = weixinUserService.getRegion(split[2]);
  221 + record.setRegion(region.get(0).get("provinceName") + region.get(0).get("cityName") + region.get(0).get("areaName"));
  222 + }
  223 + }
  224 + }
  225 + }
  226 + return Result.OK(pageList);
  227 + }
  228 +
  229 + /**
  230 + * 审批
  231 + *
  232 + * @param medicalRecordsCopy
  233 + * @return
  234 + */
  235 + @AutoLog(value = "medical_records_copy-审批")
  236 + @ApiOperation(value="medical_records_copy-审批", notes="medical_records_copy-审批")
  237 +// @RequiresPermissions("claims:medical_records_copy:approve")
  238 + @RequestMapping(value = "/approve", method = {RequestMethod.PUT,RequestMethod.POST})
  239 + public Result<String> approve(@RequestBody MedicalRecordsCopy medicalRecordsCopy) {
  240 + MedicalRecordsCopy update = new MedicalRecordsCopy();
  241 + update.setId(medicalRecordsCopy.getId());
  242 + update.setStatus("2");
  243 + medicalRecordsCopyService.updateById(update);
  244 + return Result.OK("审批成功!");
  245 + }
  246 +
  247 + /**
  248 + * 确认
  249 + *
  250 + * @param medicalRecordsCopy
  251 + * @return
  252 + */
  253 + @AutoLog(value = "medical_records_copy-确认")
  254 + @Transactional
  255 + @ApiOperation(value="medical_records_copy-确认", notes="medical_records_copy-确认")
  256 +// @RequiresPermissions("claims:medical_records_copy:confirm")
  257 + @RequestMapping(value = "/confirm", method = {RequestMethod.PUT,RequestMethod.POST})
  258 + public Result<String> confirm(@RequestBody MedicalRecordsCopy medicalRecordsCopy) throws Exception {
  259 + MedicalRecordsCopy update = new MedicalRecordsCopy();
  260 + update.setId(medicalRecordsCopy.getId());
  261 + update.setStatus("3");
  262 + update.setCopyingNumber(medicalRecordsCopy.getCopyingNumber());
  263 + medicalRecordsCopyService.updateById(update);
  264 + // 生成账单
  265 + Boolean initPay = medicalRecordsCopyPayService.confirmUpdatePay(medicalRecordsCopy);
  266 + if (initPay) {
  267 + return Result.OK("确认成功!");
  268 + } else {
  269 + throw new RuntimeException("确认失败!");
  270 + }
  271 + }
  272 +
  273 +}
  1 +package org.jeecg.modules.claims.controller;
  2 +
  3 +import java.util.Arrays;
  4 +import java.util.List;
  5 +import java.util.Map;
  6 +import java.util.stream.Collectors;
  7 +import java.io.IOException;
  8 +import java.io.UnsupportedEncodingException;
  9 +import java.net.URLDecoder;
  10 +import javax.servlet.http.HttpServletRequest;
  11 +import javax.servlet.http.HttpServletResponse;
  12 +import org.jeecg.common.api.vo.Result;
  13 +import org.jeecg.common.system.query.QueryGenerator;
  14 +import org.jeecg.common.util.oConvertUtils;
  15 +import org.jeecg.modules.claims.entity.MedicalRecordsCopyPay;
  16 +import org.jeecg.modules.claims.service.IMedicalRecordsCopyPayService;
  17 +
  18 +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  19 +import com.baomidou.mybatisplus.core.metadata.IPage;
  20 +import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  21 +import lombok.extern.slf4j.Slf4j;
  22 +
  23 +import org.jeecgframework.poi.excel.ExcelImportUtil;
  24 +import org.jeecgframework.poi.excel.def.NormalExcelConstants;
  25 +import org.jeecgframework.poi.excel.entity.ExportParams;
  26 +import org.jeecgframework.poi.excel.entity.ImportParams;
  27 +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
  28 +import org.jeecg.common.system.base.controller.JeecgController;
  29 +import org.springframework.beans.factory.annotation.Autowired;
  30 +import org.springframework.web.bind.annotation.*;
  31 +import org.springframework.web.multipart.MultipartFile;
  32 +import org.springframework.web.multipart.MultipartHttpServletRequest;
  33 +import org.springframework.web.servlet.ModelAndView;
  34 +import com.alibaba.fastjson.JSON;
  35 +import io.swagger.annotations.Api;
  36 +import io.swagger.annotations.ApiOperation;
  37 +import org.jeecg.common.aspect.annotation.AutoLog;
  38 +import org.apache.shiro.authz.annotation.RequiresPermissions;
  39 +
  40 + /**
  41 + * @Description: medical_records_copy_pay
  42 + * @Author: jeecg-boot
  43 + * @Date: 2025-01-24
  44 + * @Version: V1.0
  45 + */
  46 +@Api(tags="medical_records_copy_pay")
  47 +@RestController
  48 +@RequestMapping("/claims/medicalRecordsCopyPay")
  49 +@Slf4j
  50 +public class MedicalRecordsCopyPayController extends JeecgController<MedicalRecordsCopyPay, IMedicalRecordsCopyPayService> {
  51 + @Autowired
  52 + private IMedicalRecordsCopyPayService medicalRecordsCopyPayService;
  53 +
  54 + /**
  55 + * 分页列表查询
  56 + *
  57 + * @param medicalRecordsCopyPay
  58 + * @param pageNo
  59 + * @param pageSize
  60 + * @param req
  61 + * @return
  62 + */
  63 + //@AutoLog(value = "medical_records_copy_pay-分页列表查询")
  64 + @ApiOperation(value="medical_records_copy_pay-分页列表查询", notes="medical_records_copy_pay-分页列表查询")
  65 + @GetMapping(value = "/list")
  66 + public Result<IPage<MedicalRecordsCopyPay>> queryPageList(MedicalRecordsCopyPay medicalRecordsCopyPay,
  67 + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
  68 + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
  69 + HttpServletRequest req) {
  70 + QueryWrapper<MedicalRecordsCopyPay> queryWrapper = QueryGenerator.initQueryWrapper(medicalRecordsCopyPay, req.getParameterMap());
  71 + Page<MedicalRecordsCopyPay> page = new Page<MedicalRecordsCopyPay>(pageNo, pageSize);
  72 + IPage<MedicalRecordsCopyPay> pageList = medicalRecordsCopyPayService.page(page, queryWrapper);
  73 + return Result.OK(pageList);
  74 + }
  75 +
  76 + /**
  77 + * 添加
  78 + *
  79 + * @param medicalRecordsCopyPay
  80 + * @return
  81 + */
  82 + @AutoLog(value = "medical_records_copy_pay-添加")
  83 + @ApiOperation(value="medical_records_copy_pay-添加", notes="medical_records_copy_pay-添加")
  84 +// @RequiresPermissions("claims:medical_records_copy_pay:add")
  85 + @PostMapping(value = "/add")
  86 + public Result<String> add(@RequestBody MedicalRecordsCopyPay medicalRecordsCopyPay) {
  87 + medicalRecordsCopyPayService.save(medicalRecordsCopyPay);
  88 + return Result.OK("添加成功!");
  89 + }
  90 +
  91 + /**
  92 + * 编辑
  93 + *
  94 + * @param medicalRecordsCopyPay
  95 + * @return
  96 + */
  97 + @AutoLog(value = "medical_records_copy_pay-编辑")
  98 + @ApiOperation(value="medical_records_copy_pay-编辑", notes="medical_records_copy_pay-编辑")
  99 +// @RequiresPermissions("claims:medical_records_copy_pay:edit")
  100 + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
  101 + public Result<String> edit(@RequestBody MedicalRecordsCopyPay medicalRecordsCopyPay) {
  102 + medicalRecordsCopyPayService.updateById(medicalRecordsCopyPay);
  103 + return Result.OK("编辑成功!");
  104 + }
  105 +
  106 + /**
  107 + * 通过id删除
  108 + *
  109 + * @param id
  110 + * @return
  111 + */
  112 + @AutoLog(value = "medical_records_copy_pay-通过id删除")
  113 + @ApiOperation(value="medical_records_copy_pay-通过id删除", notes="medical_records_copy_pay-通过id删除")
  114 +// @RequiresPermissions("claims:medical_records_copy_pay:delete")
  115 + @DeleteMapping(value = "/delete")
  116 + public Result<String> delete(@RequestParam(name="id",required=true) String id) {
  117 + medicalRecordsCopyPayService.removeById(id);
  118 + return Result.OK("删除成功!");
  119 + }
  120 +
  121 + /**
  122 + * 批量删除
  123 + *
  124 + * @param ids
  125 + * @return
  126 + */
  127 + @AutoLog(value = "medical_records_copy_pay-批量删除")
  128 + @ApiOperation(value="medical_records_copy_pay-批量删除", notes="medical_records_copy_pay-批量删除")
  129 +// @RequiresPermissions("claims:medical_records_copy_pay:deleteBatch")
  130 + @DeleteMapping(value = "/deleteBatch")
  131 + public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
  132 + this.medicalRecordsCopyPayService.removeByIds(Arrays.asList(ids.split(",")));
  133 + return Result.OK("批量删除成功!");
  134 + }
  135 +
  136 + /**
  137 + * 通过id查询
  138 + *
  139 + * @param id
  140 + * @return
  141 + */
  142 + //@AutoLog(value = "medical_records_copy_pay-通过id查询")
  143 + @ApiOperation(value="medical_records_copy_pay-通过id查询", notes="medical_records_copy_pay-通过id查询")
  144 + @GetMapping(value = "/queryById")
  145 + public Result<MedicalRecordsCopyPay> queryById(@RequestParam(name="id",required=true) String id) {
  146 + MedicalRecordsCopyPay medicalRecordsCopyPay = medicalRecordsCopyPayService.getById(id);
  147 + if(medicalRecordsCopyPay==null) {
  148 + return Result.error("未找到对应数据");
  149 + }
  150 + return Result.OK(medicalRecordsCopyPay);
  151 + }
  152 +
  153 + /**
  154 + * 导出excel
  155 + *
  156 + * @param request
  157 + * @param medicalRecordsCopyPay
  158 + */
  159 +// @RequiresPermissions("claims:medical_records_copy_pay:exportXls")
  160 + @RequestMapping(value = "/exportXls")
  161 + public ModelAndView exportXls(HttpServletRequest request, MedicalRecordsCopyPay medicalRecordsCopyPay) {
  162 + return super.exportXls(request, medicalRecordsCopyPay, MedicalRecordsCopyPay.class, "medical_records_copy_pay");
  163 + }
  164 +
  165 + /**
  166 + * 通过excel导入数据
  167 + *
  168 + * @param request
  169 + * @param response
  170 + * @return
  171 + */
  172 +// @RequiresPermissions("claims:medical_records_copy_pay:importExcel")
  173 + @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
  174 + public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
  175 + return super.importExcel(request, response, MedicalRecordsCopyPay.class);
  176 + }
  177 +
  178 +}
@@ -86,6 +86,19 @@ public class InstitutionMedical implements Serializable { @@ -86,6 +86,19 @@ public class InstitutionMedical implements Serializable {
86 @ApiModelProperty(value = "状态") 86 @ApiModelProperty(value = "状态")
87 @Dict(dicCode = "ins_status") 87 @Dict(dicCode = "ins_status")
88 private java.lang.String status; 88 private java.lang.String status;
  89 + /**描述*/
  90 + @Excel(name = "描述", width = 15)
  91 + @ApiModelProperty(value = "描述")
  92 + private java.lang.String description;
  93 + /**照片*/
  94 + @Excel(name = "照片", width = 15)
  95 + @ApiModelProperty(value = "照片")
  96 + private java.lang.String photo;
  97 + /**等级*/
  98 + @Excel(name = "等级", width = 15, dicCode = "institution_medical_level")
  99 + @Dict(dicCode = "institution_medical_level")
  100 + @ApiModelProperty(value = "等级")
  101 + private java.lang.String level;
89 102
90 /**手机号码完整性*/ 103 /**手机号码完整性*/
91 private String phoneValid; 104 private String phoneValid;
  1 +package org.jeecg.modules.claims.entity;
  2 +
  3 +import java.io.Serializable;
  4 +import java.io.UnsupportedEncodingException;
  5 +import java.util.Date;
  6 +import java.math.BigDecimal;
  7 +import com.baomidou.mybatisplus.annotation.IdType;
  8 +import com.baomidou.mybatisplus.annotation.TableId;
  9 +import com.baomidou.mybatisplus.annotation.TableName;
  10 +import com.baomidou.mybatisplus.annotation.TableLogic;
  11 +import lombok.Data;
  12 +import com.fasterxml.jackson.annotation.JsonFormat;
  13 +import org.springframework.format.annotation.DateTimeFormat;
  14 +import org.jeecgframework.poi.excel.annotation.Excel;
  15 +import org.jeecg.common.aspect.annotation.Dict;
  16 +import io.swagger.annotations.ApiModel;
  17 +import io.swagger.annotations.ApiModelProperty;
  18 +import lombok.EqualsAndHashCode;
  19 +import lombok.experimental.Accessors;
  20 +
  21 +/**
  22 + * @Description: institution_medical_price
  23 + * @Author: jeecg-boot
  24 + * @Date: 2025-01-24
  25 + * @Version: V1.0
  26 + */
  27 +@Data
  28 +@TableName("institution_medical_price")
  29 +@Accessors(chain = true)
  30 +@EqualsAndHashCode(callSuper = false)
  31 +@ApiModel(value="institution_medical_price对象", description="institution_medical_price")
  32 +public class InstitutionMedicalPrice implements Serializable {
  33 + private static final long serialVersionUID = 1L;
  34 +
  35 + /**id*/
  36 + @TableId(type = IdType.ASSIGN_ID)
  37 + @ApiModelProperty(value = "id")
  38 + private java.lang.String id;
  39 + /**医疗机构*/
  40 + @Excel(name = "医疗机构", width = 15, dictTable = "institution_medical", dicText = "institution_name", dicCode = "id")
  41 + @Dict(dictTable = "institution_medical", dicText = "institution_name", dicCode = "id")
  42 + @ApiModelProperty(value = "医疗机构")
  43 + private java.lang.String institutionId;
  44 + /**复印单价(分/份)*/
  45 + @Excel(name = "复印单价(分/份)", width = 15)
  46 + @ApiModelProperty(value = "复印单价(分/份)")
  47 + private java.lang.Integer copyPrice;
  48 + /**快递价格(分)*/
  49 + @Excel(name = "快递价格(分)", width = 15)
  50 + @ApiModelProperty(value = "快递价格(分)")
  51 + private java.lang.Integer postPrice;
  52 + /**复印张数单价(分/张)*/
  53 + @Excel(name = "复印张数单价(分/张)", width = 15)
  54 + @ApiModelProperty(value = "复印张数单价(分/张)")
  55 + private java.lang.Integer paperPrice;
  56 + /**状态*/
  57 + @Excel(name = "状态", width = 15)
  58 + @ApiModelProperty(value = "状态")
  59 + private java.lang.String status;
  60 + /**创建人*/
  61 + @ApiModelProperty(value = "创建人")
  62 + private java.lang.String createBy;
  63 + /**创建日期*/
  64 + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
  65 + @DateTimeFormat(pattern="yyyy-MM-dd")
  66 + @ApiModelProperty(value = "创建日期")
  67 + private java.util.Date createTime;
  68 + /**更新人*/
  69 + @ApiModelProperty(value = "更新人")
  70 + private java.lang.String updateBy;
  71 + /**更新日期*/
  72 + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
  73 + @DateTimeFormat(pattern="yyyy-MM-dd")
  74 + @ApiModelProperty(value = "更新日期")
  75 + private java.util.Date updateTime;
  76 + /**删除标记*/
  77 + @Excel(name = "删除标记", width = 15)
  78 + @ApiModelProperty(value = "删除标记")
  79 + @TableLogic
  80 + private java.lang.String delFlag;
  81 +}
  1 +package org.jeecg.modules.claims.entity;
  2 +
  3 +import java.io.Serializable;
  4 +import java.io.UnsupportedEncodingException;
  5 +import java.util.Date;
  6 +import java.math.BigDecimal;
  7 +
  8 +import com.baomidou.mybatisplus.annotation.*;
  9 +import lombok.Data;
  10 +import com.fasterxml.jackson.annotation.JsonFormat;
  11 +import org.springframework.format.annotation.DateTimeFormat;
  12 +import org.jeecgframework.poi.excel.annotation.Excel;
  13 +import org.jeecg.common.aspect.annotation.Dict;
  14 +import io.swagger.annotations.ApiModel;
  15 +import io.swagger.annotations.ApiModelProperty;
  16 +import lombok.EqualsAndHashCode;
  17 +import lombok.experimental.Accessors;
  18 +
  19 +/**
  20 + * @Description: medical_records_copy
  21 + * @Author: jeecg-boot
  22 + * @Date: 2025-01-24
  23 + * @Version: V1.0
  24 + */
  25 +@Data
  26 +@TableName("medical_records_copy")
  27 +@Accessors(chain = true)
  28 +@EqualsAndHashCode(callSuper = false)
  29 +@ApiModel(value="medical_records_copy对象", description="medical_records_copy")
  30 +public class MedicalRecordsCopy implements Serializable {
  31 + private static final long serialVersionUID = 1L;
  32 +
  33 + /**id*/
  34 + @TableId(type = IdType.ASSIGN_ID)
  35 + @ApiModelProperty(value = "id")
  36 + private java.lang.String id;
  37 + /**医疗机构*/
  38 + @Excel(name = "医疗机构", width = 15, dictTable = "institution_medical", dicText = "institution_name", dicCode = "id")
  39 + @Dict(dictTable = "institution_medical", dicText = "institution_name", dicCode = "id")
  40 + @ApiModelProperty(value = "医疗机构")
  41 + private java.lang.String institutionId;
  42 + /**与患者关系*/
  43 + @Excel(name = "与患者关系", width = 15, dicCode = "medical_relationship_patients")
  44 + @Dict(dicCode = "medical_relationship_patients")
  45 + @ApiModelProperty(value = "与患者关系")
  46 + private java.lang.String relationshipPatients;
  47 + /**患者姓名*/
  48 + @Excel(name = "患者姓名", width = 15)
  49 + @ApiModelProperty(value = "患者姓名")
  50 + private java.lang.String patientName;
  51 + /**证件类型*/
  52 + @Excel(name = "证件类型", width = 15, dicCode = "medical_card_type")
  53 + @Dict(dicCode = "medical_card_type")
  54 + @ApiModelProperty(value = "证件类型")
  55 + private java.lang.String cardType;
  56 + /**身份证号*/
  57 + @Excel(name = "身份证号", width = 15)
  58 + @ApiModelProperty(value = "身份证号")
  59 + private java.lang.String cardNo;
  60 + /**患者身份证人像照*/
  61 + @Excel(name = "患者身份证人像照", width = 15)
  62 + @ApiModelProperty(value = "患者身份证人像照")
  63 + private java.lang.String cardPicture;
  64 + /**患者身份证国徽照*/
  65 + @Excel(name = "患者身份证国徽照", width = 15)
  66 + @ApiModelProperty(value = "患者身份证国徽照")
  67 + private java.lang.String cardFront;
  68 + /**患者身份证手持照*/
  69 + @Excel(name = "患者身份证手持照", width = 15)
  70 + @ApiModelProperty(value = "患者身份证手持照")
  71 + private java.lang.String cardHolding;
  72 + /**代办身份证人像照*/
  73 + @Excel(name = "代办身份证人像照", width = 15)
  74 + @ApiModelProperty(value = "代办身份证人像照")
  75 + private java.lang.String agentCardPicture;
  76 + /**代办身份证国徽照*/
  77 + @Excel(name = "代办身份证国徽照", width = 15)
  78 + @ApiModelProperty(value = "代办身份证国徽照")
  79 + private java.lang.String agentCardFront;
  80 + /**代办身份证手持照*/
  81 + @Excel(name = "代办身份证手持照", width = 15)
  82 + @ApiModelProperty(value = "代办身份证手持照")
  83 + private java.lang.String agentCardHolding;
  84 + /**代办人联系方式*/
  85 + @Excel(name = "代办人联系方式", width = 15)
  86 + @ApiModelProperty(value = "代办人联系方式")
  87 + private java.lang.String agentPhone;
  88 + /**住院号*/
  89 + @Excel(name = "住院号", width = 15)
  90 + @ApiModelProperty(value = "住院号")
  91 + private java.lang.String hospitalNo;
  92 + /**科室*/
  93 + @Excel(name = "科室", width = 15)
  94 + @ApiModelProperty(value = "科室")
  95 + private java.lang.String department;
  96 + /**复印用途*/
  97 + @Excel(name = "复印用途", width = 15, dicCode = "medical_copying_purposes")
  98 + @Dict(dicCode = "medical_copying_purposes")
  99 + @ApiModelProperty(value = "复印用途")
  100 + private java.lang.String copyingPurposes;
  101 + /**份数*/
  102 + @Excel(name = "份数", width = 15)
  103 + @ApiModelProperty(value = "份数")
  104 + private java.lang.String copyingNumber;
  105 + /**总张数*/
  106 + @Excel(name = "总张数", width = 15)
  107 + @ApiModelProperty(value = "总张数")
  108 + private java.lang.String sheetsNumber;
  109 + /**订单状态*/
  110 + @Excel(name = "订单状态", width = 15, dicCode = "medical_order_status")
  111 + @Dict(dicCode = "medical_order_status")
  112 + @ApiModelProperty(value = "订单状态")
  113 + private java.lang.String status;
  114 + /**收件人*/
  115 + @Excel(name = "收件人", width = 15)
  116 + @ApiModelProperty(value = "收件人")
  117 + private java.lang.String addressee;
  118 + /**联系电话*/
  119 + @Excel(name = "联系电话", width = 15)
  120 + @ApiModelProperty(value = "联系电话")
  121 + private java.lang.String contactNumber;
  122 + /**地区*/
  123 + @Excel(name = "地区", width = 15)
  124 + @ApiModelProperty(value = "地区")
  125 + private java.lang.String region;
  126 + /**详细地址*/
  127 + @Excel(name = "详细地址", width = 15)
  128 + @ApiModelProperty(value = "详细地址")
  129 + private java.lang.String fullAddress;
  130 + /**创建人*/
  131 + @ApiModelProperty(value = "创建人")
  132 + private java.lang.String createBy;
  133 + /**创建日期*/
  134 + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
  135 + @DateTimeFormat(pattern="yyyy-MM-dd")
  136 + @ApiModelProperty(value = "创建日期")
  137 + private java.util.Date createTime;
  138 + /**更新人*/
  139 + @ApiModelProperty(value = "更新人")
  140 + private java.lang.String updateBy;
  141 + /**更新日期*/
  142 + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
  143 + @DateTimeFormat(pattern="yyyy-MM-dd")
  144 + @ApiModelProperty(value = "更新日期")
  145 + private java.util.Date updateTime;
  146 + /**删除标记*/
  147 + @Excel(name = "删除标记", width = 15)
  148 + @ApiModelProperty(value = "删除标记")
  149 + @TableLogic
  150 + private java.lang.String delFlag;
  151 +
  152 + /**医疗机构*/
  153 + @TableField(exist = false)
  154 + @ApiModelProperty(value = "医疗机构")
  155 + private java.lang.String institutionName;
  156 + /**总复印费(分)*/
  157 + @TableField(exist = false)
  158 + @ApiModelProperty(value = "总复印费(分)")
  159 + private BigDecimal copyPrice;
  160 + /**总快递费(分)*/
  161 + @TableField(exist = false)
  162 + @ApiModelProperty(value = "总快递费(分)")
  163 + private BigDecimal postPrice;
  164 + /**总费用(分)*/
  165 + @TableField(exist = false)
  166 + @ApiModelProperty(value = "总费用(分)")
  167 + private BigDecimal totalPrice;
  168 + /**预付费用(分)*/
  169 + @TableField(exist = false)
  170 + @ApiModelProperty(value = "预付费用(分)")
  171 + private BigDecimal prepaidPrice;
  172 + /**补缴费用(分)*/
  173 + @TableField(exist = false)
  174 + @ApiModelProperty(value = "补缴费用(分)")
  175 + private BigDecimal additionalPayPrice;
  176 +
  177 +}
  1 +package org.jeecg.modules.claims.entity;
  2 +
  3 +import java.io.Serializable;
  4 +import java.io.UnsupportedEncodingException;
  5 +import java.util.Date;
  6 +import java.math.BigDecimal;
  7 +import com.baomidou.mybatisplus.annotation.IdType;
  8 +import com.baomidou.mybatisplus.annotation.TableId;
  9 +import com.baomidou.mybatisplus.annotation.TableName;
  10 +import com.baomidou.mybatisplus.annotation.TableLogic;
  11 +import lombok.Data;
  12 +import com.fasterxml.jackson.annotation.JsonFormat;
  13 +import org.springframework.format.annotation.DateTimeFormat;
  14 +import org.jeecgframework.poi.excel.annotation.Excel;
  15 +import org.jeecg.common.aspect.annotation.Dict;
  16 +import io.swagger.annotations.ApiModel;
  17 +import io.swagger.annotations.ApiModelProperty;
  18 +import lombok.EqualsAndHashCode;
  19 +import lombok.experimental.Accessors;
  20 +
  21 +/**
  22 + * @Description: medical_records_copy_pay
  23 + * @Author: jeecg-boot
  24 + * @Date: 2025-01-24
  25 + * @Version: V1.0
  26 + */
  27 +@Data
  28 +@TableName("medical_records_copy_pay")
  29 +@Accessors(chain = true)
  30 +@EqualsAndHashCode(callSuper = false)
  31 +@ApiModel(value="medical_records_copy_pay对象", description="medical_records_copy_pay")
  32 +public class MedicalRecordsCopyPay implements Serializable {
  33 + private static final long serialVersionUID = 1L;
  34 +
  35 + /**id*/
  36 + @TableId(type = IdType.ASSIGN_ID)
  37 + @ApiModelProperty(value = "id")
  38 + private java.lang.String id;
  39 + /**订单id*/
  40 + @Excel(name = "订单id", width = 15, dictTable = "medical_records_copy", dicText = "id", dicCode = "id")
  41 + @Dict(dictTable = "medical_records_copy", dicText = "id", dicCode = "id")
  42 + @ApiModelProperty(value = "订单id")
  43 + private java.lang.String orderId;
  44 + /**预付复印费(分)*/
  45 + @Excel(name = "预付复印费(分)", width = 15)
  46 + @ApiModelProperty(value = "预付复印费(分)")
  47 + private java.lang.Integer copyPayPrice;
  48 + /**预付快递费(分)*/
  49 + @Excel(name = "预付快递费(分)", width = 15)
  50 + @ApiModelProperty(value = "预付快递费(分)")
  51 + private java.lang.Integer postPayPrice;
  52 + /**预付费用(分)*/
  53 + @Excel(name = "预付费用(分)", width = 15)
  54 + @ApiModelProperty(value = "预付费用(分)")
  55 + private java.lang.Integer prepaidPrice;
  56 + /**总复印费(分)*/
  57 + @Excel(name = "总复印费(分)", width = 15)
  58 + @ApiModelProperty(value = "总复印费(分)")
  59 + private java.lang.Integer copyPrice;
  60 + /**总快递费(分)*/
  61 + @Excel(name = "总快递费(分)", width = 15)
  62 + @ApiModelProperty(value = "总快递费(分)")
  63 + private java.lang.Integer postPrice;
  64 + /**总费用(分)*/
  65 + @Excel(name = "总费用(分)", width = 15)
  66 + @ApiModelProperty(value = "总费用(分)")
  67 + private java.lang.Integer totalPrice;
  68 + /**补缴费用(分)*/
  69 + @Excel(name = "补缴费用(分)", width = 15)
  70 + @ApiModelProperty(value = "补缴费用(分)")
  71 + private java.lang.Integer additionalPayPrice;
  72 + /**订单状态*/
  73 + @Excel(name = "订单状态", width = 15)
  74 + @ApiModelProperty(value = "订单状态")
  75 + private java.lang.String status;
  76 + /**创建人*/
  77 + @ApiModelProperty(value = "创建人")
  78 + private java.lang.String createBy;
  79 + /**创建日期*/
  80 + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
  81 + @DateTimeFormat(pattern="yyyy-MM-dd")
  82 + @ApiModelProperty(value = "创建日期")
  83 + private java.util.Date createTime;
  84 + /**更新人*/
  85 + @ApiModelProperty(value = "更新人")
  86 + private java.lang.String updateBy;
  87 + /**更新日期*/
  88 + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
  89 + @DateTimeFormat(pattern="yyyy-MM-dd")
  90 + @ApiModelProperty(value = "更新日期")
  91 + private java.util.Date updateTime;
  92 + /**删除标记*/
  93 + @Excel(name = "删除标记", width = 15)
  94 + @ApiModelProperty(value = "删除标记")
  95 + @TableLogic
  96 + private java.lang.String delFlag;
  97 +}
  1 +package org.jeecg.modules.claims.mapper;
  2 +
  3 +import java.util.List;
  4 +
  5 +import org.apache.ibatis.annotations.Param;
  6 +import org.jeecg.modules.claims.entity.InstitutionMedicalPrice;
  7 +import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  8 +
  9 +/**
  10 + * @Description: institution_medical_price
  11 + * @Author: jeecg-boot
  12 + * @Date: 2025-01-24
  13 + * @Version: V1.0
  14 + */
  15 +public interface InstitutionMedicalPriceMapper extends BaseMapper<InstitutionMedicalPrice> {
  16 +
  17 +}
  1 +package org.jeecg.modules.claims.mapper;
  2 +
  3 +import java.util.List;
  4 +
  5 +import org.apache.ibatis.annotations.Param;
  6 +import org.jeecg.modules.claims.entity.MedicalRecordsCopy;
  7 +import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  8 +
  9 +/**
  10 + * @Description: medical_records_copy
  11 + * @Author: jeecg-boot
  12 + * @Date: 2025-01-24
  13 + * @Version: V1.0
  14 + */
  15 +public interface MedicalRecordsCopyMapper extends BaseMapper<MedicalRecordsCopy> {
  16 +
  17 +}
  1 +package org.jeecg.modules.claims.mapper;
  2 +
  3 +import java.util.List;
  4 +
  5 +import org.apache.ibatis.annotations.Param;
  6 +import org.jeecg.modules.claims.entity.MedicalRecordsCopyPay;
  7 +import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  8 +
  9 +/**
  10 + * @Description: medical_records_copy_pay
  11 + * @Author: jeecg-boot
  12 + * @Date: 2025-01-24
  13 + * @Version: V1.0
  14 + */
  15 +public interface MedicalRecordsCopyPayMapper extends BaseMapper<MedicalRecordsCopyPay> {
  16 +
  17 +}
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3 +<mapper namespace="org.jeecg.modules.claims.mapper.InstitutionMedicalPriceMapper">
  4 +
  5 +</mapper>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3 +<mapper namespace="org.jeecg.modules.claims.mapper.MedicalRecordsCopyMapper">
  4 +
  5 +</mapper>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3 +<mapper namespace="org.jeecg.modules.claims.mapper.MedicalRecordsCopyPayMapper">
  4 +
  5 +</mapper>
  1 +package org.jeecg.modules.claims.service;
  2 +
  3 +import com.alibaba.fastjson.JSONObject;
  4 +import org.jeecg.modules.claims.entity.InstitutionMedicalPrice;
  5 +import com.baomidou.mybatisplus.extension.service.IService;
  6 +
  7 +/**
  8 + * @Description: institution_medical_price
  9 + * @Author: jeecg-boot
  10 + * @Date: 2025-01-24
  11 + * @Version: V1.0
  12 + */
  13 +public interface IInstitutionMedicalPriceService extends IService<InstitutionMedicalPrice> {
  14 +
  15 + InstitutionMedicalPrice getPrice(String institutionId);
  16 +}
  1 +package org.jeecg.modules.claims.service;
  2 +
  3 +import org.jeecg.modules.claims.entity.MedicalRecordsCopy;
  4 +import org.jeecg.modules.claims.entity.MedicalRecordsCopyPay;
  5 +import com.baomidou.mybatisplus.extension.service.IService;
  6 +
  7 +/**
  8 + * @Description: medical_records_copy_pay
  9 + * @Author: jeecg-boot
  10 + * @Date: 2025-01-24
  11 + * @Version: V1.0
  12 + */
  13 +public interface IMedicalRecordsCopyPayService extends IService<MedicalRecordsCopyPay> {
  14 +
  15 + Boolean submitInitPay(MedicalRecordsCopy medicalRecordsCopy);
  16 +
  17 + Boolean confirmUpdatePay(MedicalRecordsCopy medicalRecordsCopy);
  18 +
  19 + void getPayInfo(MedicalRecordsCopy medicalRecordsCopy);
  20 +}
  1 +package org.jeecg.modules.claims.service;
  2 +
  3 +import org.jeecg.modules.claims.entity.MedicalRecordsCopy;
  4 +import com.baomidou.mybatisplus.extension.service.IService;
  5 +
  6 +/**
  7 + * @Description: medical_records_copy
  8 + * @Author: jeecg-boot
  9 + * @Date: 2025-01-24
  10 + * @Version: V1.0
  11 + */
  12 +public interface IMedicalRecordsCopyService extends IService<MedicalRecordsCopy> {
  13 +
  14 +}
@@ -5,6 +5,7 @@ import org.jeecg.common.util.custom.EncryptionUtils; @@ -5,6 +5,7 @@ import org.jeecg.common.util.custom.EncryptionUtils;
5 import org.jeecg.modules.claims.entity.HisVisinfoList; 5 import org.jeecg.modules.claims.entity.HisVisinfoList;
6 import org.jeecg.modules.claims.mapper.HisVisinfoListMapper; 6 import org.jeecg.modules.claims.mapper.HisVisinfoListMapper;
7 import org.jeecg.modules.claims.service.IHisVisinfoListService; 7 import org.jeecg.modules.claims.service.IHisVisinfoListService;
  8 +import org.springframework.beans.factory.annotation.Value;
8 import org.springframework.stereotype.Service; 9 import org.springframework.stereotype.Service;
9 10
10 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 11 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -20,6 +21,9 @@ import java.util.*; @@ -20,6 +21,9 @@ import java.util.*;
20 */ 21 */
21 @Service 22 @Service
22 public class HisVisinfoListServiceImpl extends ServiceImpl<HisVisinfoListMapper, HisVisinfoList> implements IHisVisinfoListService { 23 public class HisVisinfoListServiceImpl extends ServiceImpl<HisVisinfoListMapper, HisVisinfoList> implements IHisVisinfoListService {
  24 +
  25 + @Value("${jeecg.encrypFlag}")
  26 + private Boolean encrypFlag;
23 //理赔金额求和 27 //理赔金额求和
24 @Override 28 @Override
25 public Double sumCalAmnt() { 29 public Double sumCalAmnt() {
@@ -85,7 +89,7 @@ public class HisVisinfoListServiceImpl extends ServiceImpl<HisVisinfoListMapper, @@ -85,7 +89,7 @@ public class HisVisinfoListServiceImpl extends ServiceImpl<HisVisinfoListMapper,
85 public void changeFieldQuery(HisVisinfoList hisVisinfoList) { 89 public void changeFieldQuery(HisVisinfoList hisVisinfoList) {
86 //解密证件号,验证完成性 90 //解密证件号,验证完成性
87 String userCodeCipher = hisVisinfoList.getUserCode(); 91 String userCodeCipher = hisVisinfoList.getUserCode();
88 - if (StringUtils.isNotEmpty(userCodeCipher)) { 92 + if (encrypFlag && StringUtils.isNotEmpty(userCodeCipher)) {
89 try { 93 try {
90 //解密 94 //解密
91 String userCode = EncryptionUtils.symmetricDecryptData(userCodeCipher); 95 String userCode = EncryptionUtils.symmetricDecryptData(userCodeCipher);
@@ -108,7 +112,7 @@ public class HisVisinfoListServiceImpl extends ServiceImpl<HisVisinfoListMapper, @@ -108,7 +112,7 @@ public class HisVisinfoListServiceImpl extends ServiceImpl<HisVisinfoListMapper,
108 public void changeFieldEncryp(HisVisinfoList hisVisinfoList) { 112 public void changeFieldEncryp(HisVisinfoList hisVisinfoList) {
109 //加密证件号 113 //加密证件号
110 String userCode = hisVisinfoList.getUserCode(); 114 String userCode = hisVisinfoList.getUserCode();
111 - if (StringUtils.isNotEmpty(userCode)){ 115 + if (encrypFlag && StringUtils.isNotEmpty(userCode)){
112 //加密(一次加密) 116 //加密(一次加密)
113 try { 117 try {
114 String s = EncryptionUtils.encryptionData(userCode); 118 String s = EncryptionUtils.encryptionData(userCode);
@@ -5,6 +5,7 @@ import org.jeecg.common.util.custom.EncryptionUtils; @@ -5,6 +5,7 @@ import org.jeecg.common.util.custom.EncryptionUtils;
5 import org.jeecg.modules.claims.entity.InsApiLog; 5 import org.jeecg.modules.claims.entity.InsApiLog;
6 import org.jeecg.modules.claims.mapper.InsApiLogMapper; 6 import org.jeecg.modules.claims.mapper.InsApiLogMapper;
7 import org.jeecg.modules.claims.service.IInsApiLogService; 7 import org.jeecg.modules.claims.service.IInsApiLogService;
  8 +import org.springframework.beans.factory.annotation.Value;
8 import org.springframework.stereotype.Service; 9 import org.springframework.stereotype.Service;
9 10
10 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 11 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -18,6 +19,10 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -18,6 +19,10 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
18 @Service 19 @Service
19 public class InsApiLogServiceImpl extends ServiceImpl<InsApiLogMapper, InsApiLog> implements IInsApiLogService { 20 public class InsApiLogServiceImpl extends ServiceImpl<InsApiLogMapper, InsApiLog> implements IInsApiLogService {
20 21
  22 +
  23 + @Value("${jeecg.encrypFlag}")
  24 + private Boolean encrypFlag;
  25 +
21 //日志没有修改的,都是新建的,故只需覆写保存方法 26 //日志没有修改的,都是新建的,故只需覆写保存方法
22 //覆写保存方法 27 //覆写保存方法
23 @Override 28 @Override
@@ -34,7 +39,7 @@ public class InsApiLogServiceImpl extends ServiceImpl<InsApiLogMapper, InsApiLog @@ -34,7 +39,7 @@ public class InsApiLogServiceImpl extends ServiceImpl<InsApiLogMapper, InsApiLog
34 public void changeFieldQuery(InsApiLog insApiLog) { 39 public void changeFieldQuery(InsApiLog insApiLog) {
35 //解密返回参数,验证完成性 40 //解密返回参数,验证完成性
36 String returnParams = insApiLog.getReturnParams(); 41 String returnParams = insApiLog.getReturnParams();
37 - if (StringUtils.isNotEmpty(returnParams)) { 42 + if (encrypFlag && StringUtils.isNotEmpty(returnParams)) {
38 try { 43 try {
39 // //解密 44 // //解密
40 // String userCode = EncryptionUtils.symmetricDecryptData(returnParams); 45 // String userCode = EncryptionUtils.symmetricDecryptData(returnParams);
@@ -57,7 +62,7 @@ public class InsApiLogServiceImpl extends ServiceImpl<InsApiLogMapper, InsApiLog @@ -57,7 +62,7 @@ public class InsApiLogServiceImpl extends ServiceImpl<InsApiLogMapper, InsApiLog
57 public void changeFieldEncryp(InsApiLog insApiLog) { 62 public void changeFieldEncryp(InsApiLog insApiLog) {
58 //加密证件号 63 //加密证件号
59 String returnParams = insApiLog.getReturnParams(); 64 String returnParams = insApiLog.getReturnParams();
60 - if (StringUtils.isNotEmpty(returnParams)){ 65 + if (encrypFlag && StringUtils.isNotEmpty(returnParams)){
61 // //加密(一次加密) 66 // //加密(一次加密)
62 // try { 67 // try {
63 // String s = EncryptionUtils.encryptionData(returnParams); 68 // String s = EncryptionUtils.encryptionData(returnParams);
@@ -5,6 +5,7 @@ import org.jeecg.common.util.custom.EncryptionUtils; @@ -5,6 +5,7 @@ import org.jeecg.common.util.custom.EncryptionUtils;
5 import org.jeecg.modules.claims.entity.InsInsurePerson; 5 import org.jeecg.modules.claims.entity.InsInsurePerson;
6 import org.jeecg.modules.claims.mapper.InsInsurePersonMapper; 6 import org.jeecg.modules.claims.mapper.InsInsurePersonMapper;
7 import org.jeecg.modules.claims.service.IInsInsurePersonService; 7 import org.jeecg.modules.claims.service.IInsInsurePersonService;
  8 +import org.springframework.beans.factory.annotation.Value;
8 import org.springframework.stereotype.Service; 9 import org.springframework.stereotype.Service;
9 10
10 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 11 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -18,12 +19,15 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -18,12 +19,15 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
18 @Service 19 @Service
19 public class InsInsurePersonServiceImpl extends ServiceImpl<InsInsurePersonMapper, InsInsurePerson> implements IInsInsurePersonService { 20 public class InsInsurePersonServiceImpl extends ServiceImpl<InsInsurePersonMapper, InsInsurePerson> implements IInsInsurePersonService {
20 21
  22 + @Value("${jeecg.encrypFlag}")
  23 + private Boolean encrypFlag;
  24 +
21 //字段解密 25 //字段解密
22 @Override 26 @Override
23 public void changeFieldQuery(InsInsurePerson insInsurePerson) { 27 public void changeFieldQuery(InsInsurePerson insInsurePerson) {
24 //解密证件号,验证完成性 28 //解密证件号,验证完成性
25 String userCodeCipher = insInsurePerson.getUserCode(); 29 String userCodeCipher = insInsurePerson.getUserCode();
26 - if (StringUtils.isNotEmpty(userCodeCipher)) { 30 + if (encrypFlag && StringUtils.isNotEmpty(userCodeCipher)) {
27 try { 31 try {
28 //解密 32 //解密
29 String userCode = EncryptionUtils.symmetricDecryptData(userCodeCipher); 33 String userCode = EncryptionUtils.symmetricDecryptData(userCodeCipher);
@@ -45,7 +49,7 @@ public class InsInsurePersonServiceImpl extends ServiceImpl<InsInsurePersonMappe @@ -45,7 +49,7 @@ public class InsInsurePersonServiceImpl extends ServiceImpl<InsInsurePersonMappe
45 public void changeFieldEncryp(InsInsurePerson insInsurePerson) { 49 public void changeFieldEncryp(InsInsurePerson insInsurePerson) {
46 //加密证件号 50 //加密证件号
47 String userCode = insInsurePerson.getUserCode(); 51 String userCode = insInsurePerson.getUserCode();
48 - if (StringUtils.isNotEmpty(userCode)){ 52 + if (encrypFlag && StringUtils.isNotEmpty(userCode)){
49 //加密(一次加密) 53 //加密(一次加密)
50 try { 54 try {
51 String s = EncryptionUtils.encryptionData(userCode); 55 String s = EncryptionUtils.encryptionData(userCode);
@@ -16,6 +16,7 @@ import org.jeecg.modules.system.entity.SysUserRole; @@ -16,6 +16,7 @@ import org.jeecg.modules.system.entity.SysUserRole;
16 import org.jeecg.modules.system.mapper.SysUserRoleMapper; 16 import org.jeecg.modules.system.mapper.SysUserRoleMapper;
17 import org.jeecg.modules.system.service.ISysUserService; 17 import org.jeecg.modules.system.service.ISysUserService;
18 import org.springframework.beans.factory.annotation.Autowired; 18 import org.springframework.beans.factory.annotation.Autowired;
  19 +import org.springframework.beans.factory.annotation.Value;
19 import org.springframework.stereotype.Service; 20 import org.springframework.stereotype.Service;
20 21
21 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 22 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -33,6 +34,9 @@ import java.util.List; @@ -33,6 +34,9 @@ import java.util.List;
33 @Service 34 @Service
34 public class InstitutionInsurancePersonServiceImpl extends ServiceImpl<InstitutionInsurancePersonMapper, InstitutionInsurancePerson> implements IInstitutionInsurancePersonService { 35 public class InstitutionInsurancePersonServiceImpl extends ServiceImpl<InstitutionInsurancePersonMapper, InstitutionInsurancePerson> implements IInstitutionInsurancePersonService {
35 36
  37 +
  38 + @Value("${jeecg.encrypFlag}")
  39 + private Boolean encrypFlag;
36 @Autowired 40 @Autowired
37 private ISysUserService sysUserService; 41 private ISysUserService sysUserService;
38 42
@@ -197,7 +201,7 @@ public class InstitutionInsurancePersonServiceImpl extends ServiceImpl<Instituti @@ -197,7 +201,7 @@ public class InstitutionInsurancePersonServiceImpl extends ServiceImpl<Instituti
197 public void changeFieldQuery(InstitutionInsurancePerson institutionInsurancePerson) { 201 public void changeFieldQuery(InstitutionInsurancePerson institutionInsurancePerson) {
198 //解密手机号,验证完成性 202 //解密手机号,验证完成性
199 String phoneCipher = institutionInsurancePerson.getPhone(); 203 String phoneCipher = institutionInsurancePerson.getPhone();
200 - if (StringUtils.isNotEmpty(phoneCipher)) { 204 + if (encrypFlag && StringUtils.isNotEmpty(phoneCipher)) {
201 try { 205 try {
202 //解密 206 //解密
203 String phone = EncryptionUtils.symmetricDecryptData(phoneCipher); 207 String phone = EncryptionUtils.symmetricDecryptData(phoneCipher);
@@ -18,6 +18,7 @@ import org.jeecg.modules.system.entity.SysUserRole; @@ -18,6 +18,7 @@ import org.jeecg.modules.system.entity.SysUserRole;
18 import org.jeecg.modules.system.mapper.SysUserRoleMapper; 18 import org.jeecg.modules.system.mapper.SysUserRoleMapper;
19 import org.jeecg.modules.system.service.ISysUserService; 19 import org.jeecg.modules.system.service.ISysUserService;
20 import org.springframework.beans.factory.annotation.Autowired; 20 import org.springframework.beans.factory.annotation.Autowired;
  21 +import org.springframework.beans.factory.annotation.Value;
21 import org.springframework.stereotype.Service; 22 import org.springframework.stereotype.Service;
22 23
23 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 24 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -36,6 +37,9 @@ import java.util.List; @@ -36,6 +37,9 @@ import java.util.List;
36 public class InstitutionInsuranceServiceImpl extends ServiceImpl<InstitutionInsuranceMapper, InstitutionInsurance> implements IInstitutionInsuranceService { 37 public class InstitutionInsuranceServiceImpl extends ServiceImpl<InstitutionInsuranceMapper, InstitutionInsurance> implements IInstitutionInsuranceService {
37 38
38 39
  40 + @Value("${jeecg.encrypFlag}")
  41 + private Boolean encrypFlag;
  42 +
39 @Autowired 43 @Autowired
40 private ISysUserService sysUserService; 44 private ISysUserService sysUserService;
41 45
@@ -216,7 +220,7 @@ public class InstitutionInsuranceServiceImpl extends ServiceImpl<InstitutionInsu @@ -216,7 +220,7 @@ public class InstitutionInsuranceServiceImpl extends ServiceImpl<InstitutionInsu
216 public void changeFieldQuery(InstitutionInsurance institutionInsurance) { 220 public void changeFieldQuery(InstitutionInsurance institutionInsurance) {
217 //解密手机号,验证完成性 221 //解密手机号,验证完成性
218 String phoneCipher = institutionInsurance.getPhone(); 222 String phoneCipher = institutionInsurance.getPhone();
219 - if (StringUtils.isNotEmpty(phoneCipher)) { 223 + if (encrypFlag && StringUtils.isNotEmpty(phoneCipher)) {
220 try { 224 try {
221 //解密 225 //解密
222 String phone = EncryptionUtils.symmetricDecryptData(phoneCipher); 226 String phone = EncryptionUtils.symmetricDecryptData(phoneCipher);
@@ -16,6 +16,7 @@ import org.jeecg.modules.system.entity.SysUserRole; @@ -16,6 +16,7 @@ import org.jeecg.modules.system.entity.SysUserRole;
16 import org.jeecg.modules.system.mapper.SysUserRoleMapper; 16 import org.jeecg.modules.system.mapper.SysUserRoleMapper;
17 import org.jeecg.modules.system.service.ISysUserService; 17 import org.jeecg.modules.system.service.ISysUserService;
18 import org.springframework.beans.factory.annotation.Autowired; 18 import org.springframework.beans.factory.annotation.Autowired;
  19 +import org.springframework.beans.factory.annotation.Value;
19 import org.springframework.stereotype.Service; 20 import org.springframework.stereotype.Service;
20 21
21 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 22 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -33,6 +34,9 @@ import java.util.List; @@ -33,6 +34,9 @@ import java.util.List;
33 @Service 34 @Service
34 public class InstitutionMedicalPersonServiceImpl extends ServiceImpl<InstitutionMedicalPersonMapper, InstitutionMedicalPerson> implements IInstitutionMedicalPersonService { 35 public class InstitutionMedicalPersonServiceImpl extends ServiceImpl<InstitutionMedicalPersonMapper, InstitutionMedicalPerson> implements IInstitutionMedicalPersonService {
35 36
  37 +
  38 + @Value("${jeecg.encrypFlag}")
  39 + private Boolean encrypFlag;
36 @Autowired 40 @Autowired
37 private ISysUserService sysUserService; 41 private ISysUserService sysUserService;
38 42
@@ -202,7 +206,7 @@ public class InstitutionMedicalPersonServiceImpl extends ServiceImpl<Institution @@ -202,7 +206,7 @@ public class InstitutionMedicalPersonServiceImpl extends ServiceImpl<Institution
202 public void changeFieldQuery(InstitutionMedicalPerson institutionMedicalPerson) { 206 public void changeFieldQuery(InstitutionMedicalPerson institutionMedicalPerson) {
203 //解密手机号,验证完成性 207 //解密手机号,验证完成性
204 String phoneCipher = institutionMedicalPerson.getPhone(); 208 String phoneCipher = institutionMedicalPerson.getPhone();
205 - if (StringUtils.isNotEmpty(phoneCipher)) { 209 + if (encrypFlag && StringUtils.isNotEmpty(phoneCipher)) {
206 try { 210 try {
207 //解密 211 //解密
208 String phone = EncryptionUtils.symmetricDecryptData(phoneCipher); 212 String phone = EncryptionUtils.symmetricDecryptData(phoneCipher);
  1 +package org.jeecg.modules.claims.service.impl;
  2 +
  3 +import com.alibaba.fastjson.JSONObject;
  4 +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  5 +import org.jeecg.common.system.vo.DictModel;
  6 +import org.jeecg.modules.claims.entity.InstitutionMedicalPrice;
  7 +import org.jeecg.modules.claims.mapper.InstitutionMedicalPriceMapper;
  8 +import org.jeecg.modules.claims.service.IInstitutionMedicalPriceService;
  9 +import org.jeecg.modules.system.service.ISysDictService;
  10 +import org.springframework.beans.factory.annotation.Autowired;
  11 +import org.springframework.stereotype.Service;
  12 +
  13 +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  14 +
  15 +import java.math.BigDecimal;
  16 +import java.util.List;
  17 +
  18 +/**
  19 + * @Description: institution_medical_price
  20 + * @Author: jeecg-boot
  21 + * @Date: 2025-01-24
  22 + * @Version: V1.0
  23 + */
  24 +@Service
  25 +public class InstitutionMedicalPriceServiceImpl extends ServiceImpl<InstitutionMedicalPriceMapper, InstitutionMedicalPrice> implements IInstitutionMedicalPriceService {
  26 + @Autowired
  27 + private ISysDictService sysDictService;
  28 +
  29 + @Override
  30 + public InstitutionMedicalPrice getPrice(String institutionId) { QueryWrapper<InstitutionMedicalPrice> queryWrapper = new QueryWrapper<>();
  31 + queryWrapper.eq("institution_id", institutionId);
  32 + List<InstitutionMedicalPrice> list = list(queryWrapper);
  33 + Integer medicalCopy;
  34 + Integer medicalPost;
  35 + Integer medicalPaper;
  36 + if (list.isEmpty()) {
  37 + List<DictModel> medicalPostFee = sysDictService.getDictItems("medical_post_fee");
  38 + List<DictModel> medicalCopyFee = sysDictService.getDictItems("medical_copy_fee");
  39 + medicalCopy = Integer.parseInt(medicalCopyFee.get(0).getValue());
  40 + medicalPost = Integer.parseInt(medicalPostFee.get(0).getValue());
  41 + medicalPaper = null;
  42 + } else {
  43 + InstitutionMedicalPrice institutionMedicalPrice = list.get(0);
  44 + medicalCopy = institutionMedicalPrice.getCopyPrice();
  45 + medicalPost = institutionMedicalPrice.getPostPrice();
  46 + medicalPaper = institutionMedicalPrice.getPaperPrice();
  47 + }
  48 + InstitutionMedicalPrice result = new InstitutionMedicalPrice();
  49 + result.setCopyPrice(medicalCopy);
  50 + result.setPostPrice(medicalPost);
  51 + result.setPaperPrice(medicalPaper);
  52 + return result;
  53 + }
  54 +}
@@ -18,6 +18,7 @@ import org.jeecg.modules.system.entity.SysUserRole; @@ -18,6 +18,7 @@ import org.jeecg.modules.system.entity.SysUserRole;
18 import org.jeecg.modules.system.mapper.SysUserRoleMapper; 18 import org.jeecg.modules.system.mapper.SysUserRoleMapper;
19 import org.jeecg.modules.system.service.ISysUserService; 19 import org.jeecg.modules.system.service.ISysUserService;
20 import org.springframework.beans.factory.annotation.Autowired; 20 import org.springframework.beans.factory.annotation.Autowired;
  21 +import org.springframework.beans.factory.annotation.Value;
21 import org.springframework.stereotype.Service; 22 import org.springframework.stereotype.Service;
22 23
23 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 24 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -36,6 +37,9 @@ import java.util.List; @@ -36,6 +37,9 @@ import java.util.List;
36 public class InstitutionMedicalServiceImpl extends ServiceImpl<InstitutionMedicalMapper, InstitutionMedical> implements IInstitutionMedicalService { 37 public class InstitutionMedicalServiceImpl extends ServiceImpl<InstitutionMedicalMapper, InstitutionMedical> implements IInstitutionMedicalService {
37 38
38 39
  40 + @Value("${jeecg.encrypFlag}")
  41 + private Boolean encrypFlag;
  42 +
39 @Autowired 43 @Autowired
40 private ISysUserService sysUserService; 44 private ISysUserService sysUserService;
41 45
@@ -209,7 +213,7 @@ public class InstitutionMedicalServiceImpl extends ServiceImpl<InstitutionMedica @@ -209,7 +213,7 @@ public class InstitutionMedicalServiceImpl extends ServiceImpl<InstitutionMedica
209 public void changeFieldQuery(InstitutionMedical institutionMedical) { 213 public void changeFieldQuery(InstitutionMedical institutionMedical) {
210 //解密手机号,验证完成性 214 //解密手机号,验证完成性
211 String phoneCipher = institutionMedical.getPhone(); 215 String phoneCipher = institutionMedical.getPhone();
212 - if (StringUtils.isNotEmpty(phoneCipher)) { 216 + if (encrypFlag && StringUtils.isNotEmpty(phoneCipher)) {
213 try { 217 try {
214 //解密 218 //解密
215 String phone = EncryptionUtils.symmetricDecryptData(phoneCipher); 219 String phone = EncryptionUtils.symmetricDecryptData(phoneCipher);
@@ -231,7 +235,7 @@ public class InstitutionMedicalServiceImpl extends ServiceImpl<InstitutionMedica @@ -231,7 +235,7 @@ public class InstitutionMedicalServiceImpl extends ServiceImpl<InstitutionMedica
231 public void changeFieldEncryp(InstitutionMedical institutionMedical) { 235 public void changeFieldEncryp(InstitutionMedical institutionMedical) {
232 //加密手机号 236 //加密手机号
233 String phone = institutionMedical.getPhone(); 237 String phone = institutionMedical.getPhone();
234 - if (StringUtils.isNotEmpty(phone)){ 238 + if (encrypFlag && StringUtils.isNotEmpty(phone)){
235 //加密(一次加密) 239 //加密(一次加密)
236 try { 240 try {
237 String s = EncryptionUtils.encryptionData(phone); 241 String s = EncryptionUtils.encryptionData(phone);
  1 +package org.jeecg.modules.claims.service.impl;
  2 +
  3 +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  4 +import org.jeecg.modules.claims.entity.InstitutionMedicalPrice;
  5 +import org.jeecg.modules.claims.entity.MedicalRecordsCopy;
  6 +import org.jeecg.modules.claims.entity.MedicalRecordsCopyPay;
  7 +import org.jeecg.modules.claims.mapper.MedicalRecordsCopyPayMapper;
  8 +import org.jeecg.modules.claims.service.IInstitutionMedicalPriceService;
  9 +import org.jeecg.modules.claims.service.IMedicalRecordsCopyPayService;
  10 +import org.springframework.beans.factory.annotation.Autowired;
  11 +import org.springframework.stereotype.Service;
  12 +
  13 +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  14 +
  15 +import java.math.BigDecimal;
  16 +import java.math.RoundingMode;
  17 +
  18 +/**
  19 + * @Description: medical_records_copy_pay
  20 + * @Author: jeecg-boot
  21 + * @Date: 2025-01-24
  22 + * @Version: V1.0
  23 + */
  24 +@Service
  25 +public class MedicalRecordsCopyPayServiceImpl extends ServiceImpl<MedicalRecordsCopyPayMapper, MedicalRecordsCopyPay> implements IMedicalRecordsCopyPayService {
  26 + @Autowired
  27 + private IInstitutionMedicalPriceService institutionMedicalPriceService;
  28 +
  29 + // app提交申请时确认预支付金额,生成账单
  30 + @Override
  31 + public Boolean submitInitPay(MedicalRecordsCopy medicalRecordsCopy) {
  32 + String orderId = medicalRecordsCopy.getId();
  33 + QueryWrapper<MedicalRecordsCopyPay> queryWrapper = new QueryWrapper<>();
  34 + queryWrapper.eq("order_id", orderId);
  35 + MedicalRecordsCopyPay recordsCopyPay = getOne(queryWrapper);
  36 + if (recordsCopyPay == null) {
  37 + // 获取复印张数单价及快递价格
  38 + InstitutionMedicalPrice price = institutionMedicalPriceService.getPrice(medicalRecordsCopy.getInstitutionId());
  39 + Integer copyPricePre = price.getCopyPrice();
  40 + Integer copyPrice = copyPricePre * Integer.parseInt(medicalRecordsCopy.getCopyingNumber());
  41 + Integer postPrice = price.getPostPrice();
  42 + MedicalRecordsCopyPay save = new MedicalRecordsCopyPay();
  43 + save.setOrderId(orderId);
  44 + save.setCopyPayPrice(copyPrice);
  45 + save.setPostPayPrice(postPrice);
  46 + save.setPrepaidPrice(copyPrice + postPrice);
  47 + // todo 已支付、待支付
  48 + save.setStatus("2");
  49 + return save(save);
  50 + }
  51 + return false;
  52 + }
  53 +
  54 + // web 确认申请时计算应付总金额,更新账单应补金额
  55 + @Override
  56 + public Boolean confirmUpdatePay(MedicalRecordsCopy medicalRecordsCopy) {
  57 + String orderId = medicalRecordsCopy.getId();
  58 + QueryWrapper<MedicalRecordsCopyPay> queryWrapper = new QueryWrapper<>();
  59 + queryWrapper.eq("order_id", orderId);
  60 + MedicalRecordsCopyPay recordsCopyPay = getOne(queryWrapper);
  61 + if (recordsCopyPay != null) {
  62 + // 获取复印张数单价及快递价格
  63 + InstitutionMedicalPrice price = institutionMedicalPriceService.getPrice(medicalRecordsCopy.getInstitutionId());
  64 + Integer paperPrice = price.getPaperPrice();
  65 + if (paperPrice == null) {
  66 + return false;
  67 + }
  68 + Integer copyPrice = paperPrice * Integer.parseInt(medicalRecordsCopy.getSheetsNumber());
  69 + Integer postPrice = price.getPostPrice();
  70 + Integer prepaidPrice = recordsCopyPay.getPrepaidPrice();
  71 + MedicalRecordsCopyPay update = new MedicalRecordsCopyPay();
  72 + update.setId(recordsCopyPay.getId());
  73 + update.setCopyPrice(copyPrice);
  74 + update.setPostPrice(postPrice);
  75 + update.setTotalPrice(copyPrice + postPrice);
  76 + update.setAdditionalPayPrice(copyPrice + postPrice - prepaidPrice);
  77 + if (copyPrice + postPrice - prepaidPrice == 0) {
  78 + // 已补缴
  79 + update.setStatus("4");
  80 + } else {
  81 + // 待补缴
  82 + update.setStatus("3");
  83 + }
  84 + return updateById(update);
  85 + }
  86 + return false;
  87 + }
  88 +
  89 + @Override
  90 + public void getPayInfo(MedicalRecordsCopy medicalRecordsCopy) {
  91 + QueryWrapper<MedicalRecordsCopyPay> payQueryWrapper = new QueryWrapper<>();
  92 + payQueryWrapper.eq("order_id", medicalRecordsCopy.getId());
  93 + MedicalRecordsCopyPay payInfo = getOne(payQueryWrapper);
  94 + Integer copyPrice = payInfo.getCopyPrice();
  95 + Integer postPrice = payInfo.getPostPrice();
  96 + Integer totalPrice = payInfo.getTotalPrice();
  97 + Integer prepaidPrice = payInfo.getPrepaidPrice();
  98 + Integer additionalPayPrice = payInfo.getAdditionalPayPrice();
  99 + medicalRecordsCopy.setCopyPrice(new BigDecimal(copyPrice).divide(new BigDecimal(100), 2, RoundingMode.HALF_UP));
  100 + medicalRecordsCopy.setPostPrice(new BigDecimal(postPrice).divide(new BigDecimal(100), 2, RoundingMode.HALF_UP));
  101 + medicalRecordsCopy.setTotalPrice(new BigDecimal(totalPrice).divide(new BigDecimal(100), 2, RoundingMode.HALF_UP));
  102 + medicalRecordsCopy.setPrepaidPrice(new BigDecimal(prepaidPrice).divide(new BigDecimal(100), 2, RoundingMode.HALF_UP));
  103 + if (additionalPayPrice <= 0) {
  104 + medicalRecordsCopy.setAdditionalPayPrice(new BigDecimal(0));
  105 + } else {
  106 + medicalRecordsCopy.setAdditionalPayPrice(new BigDecimal(additionalPayPrice).divide(new BigDecimal(100), 2, RoundingMode.HALF_UP));
  107 + }
  108 + }
  109 +}
  1 +package org.jeecg.modules.claims.service.impl;
  2 +
  3 +import org.jeecg.modules.claims.entity.MedicalRecordsCopy;
  4 +import org.jeecg.modules.claims.mapper.MedicalRecordsCopyMapper;
  5 +import org.jeecg.modules.claims.service.IMedicalRecordsCopyService;
  6 +import org.springframework.stereotype.Service;
  7 +
  8 +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  9 +
  10 +/**
  11 + * @Description: medical_records_copy
  12 + * @Author: jeecg-boot
  13 + * @Date: 2025-01-24
  14 + * @Version: V1.0
  15 + */
  16 +@Service
  17 +public class MedicalRecordsCopyServiceImpl extends ServiceImpl<MedicalRecordsCopyMapper, MedicalRecordsCopy> implements IMedicalRecordsCopyService {
  18 +
  19 +}
@@ -5,6 +5,7 @@ import org.jeecg.common.util.custom.EncryptionUtils; @@ -5,6 +5,7 @@ import org.jeecg.common.util.custom.EncryptionUtils;
5 import org.jeecg.modules.gov.entity.HisMedicalInsuranceList; 5 import org.jeecg.modules.gov.entity.HisMedicalInsuranceList;
6 import org.jeecg.modules.gov.mapper.HisMedicalInsuranceListMapper; 6 import org.jeecg.modules.gov.mapper.HisMedicalInsuranceListMapper;
7 import org.jeecg.modules.gov.service.IHisMedicalInsuranceListService; 7 import org.jeecg.modules.gov.service.IHisMedicalInsuranceListService;
  8 +import org.springframework.beans.factory.annotation.Value;
8 import org.springframework.stereotype.Service; 9 import org.springframework.stereotype.Service;
9 10
10 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 11 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -21,6 +22,8 @@ import java.util.*; @@ -21,6 +22,8 @@ import java.util.*;
21 @Service 22 @Service
22 public class HisMedicalInsuranceListServiceImpl extends ServiceImpl<HisMedicalInsuranceListMapper, HisMedicalInsuranceList> implements IHisMedicalInsuranceListService { 23 public class HisMedicalInsuranceListServiceImpl extends ServiceImpl<HisMedicalInsuranceListMapper, HisMedicalInsuranceList> implements IHisMedicalInsuranceListService {
23 24
  25 + @Value("${jeecg.encrypFlag}")
  26 + private Boolean encrypFlag;
24 //用于首页计算医保统筹基金支出总额 27 //用于首页计算医保统筹基金支出总额
25 @Override 28 @Override
26 public double sumPoolFundAmount() { 29 public double sumPoolFundAmount() {
@@ -94,7 +97,7 @@ public class HisMedicalInsuranceListServiceImpl extends ServiceImpl<HisMedicalIn @@ -94,7 +97,7 @@ public class HisMedicalInsuranceListServiceImpl extends ServiceImpl<HisMedicalIn
94 97
95 //患者姓名 98 //患者姓名
96 String name = hisMedicalInsuranceList.getName(); 99 String name = hisMedicalInsuranceList.getName();
97 - if (StringUtils.isNotEmpty(name)) { 100 + if (encrypFlag && StringUtils.isNotEmpty(name)) {
98 try { 101 try {
99 //解密 102 //解密
100 String nameCode = EncryptionUtils.symmetricDecryptData(name); 103 String nameCode = EncryptionUtils.symmetricDecryptData(name);
@@ -113,7 +116,7 @@ public class HisMedicalInsuranceListServiceImpl extends ServiceImpl<HisMedicalIn @@ -113,7 +116,7 @@ public class HisMedicalInsuranceListServiceImpl extends ServiceImpl<HisMedicalIn
113 116
114 //出院诊断 117 //出院诊断
115 String dischargeDisease = hisMedicalInsuranceList.getDischargeDisease(); 118 String dischargeDisease = hisMedicalInsuranceList.getDischargeDisease();
116 - if (StringUtils.isNotEmpty(dischargeDisease)) { 119 + if (encrypFlag && StringUtils.isNotEmpty(dischargeDisease)) {
117 try { 120 try {
118 //解密 121 //解密
119 String dischargeDiseaseCode = EncryptionUtils.symmetricDecryptData(dischargeDisease); 122 String dischargeDiseaseCode = EncryptionUtils.symmetricDecryptData(dischargeDisease);
  1 +package org.jeecg.modules.h5Api.controller;
  2 +
  3 +import com.alibaba.fastjson.JSONObject;
  4 +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  5 +import com.baomidou.mybatisplus.core.metadata.IPage;
  6 +import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  7 +import io.swagger.annotations.Api;
  8 +import io.swagger.annotations.ApiOperation;
  9 +import lombok.extern.slf4j.Slf4j;
  10 +import me.chanjar.weixin.common.bean.oauth2.WxOAuth2AccessToken;
  11 +import me.chanjar.weixin.common.error.WxErrorException;
  12 +import me.chanjar.weixin.mp.api.WxMpService;
  13 +import me.chanjar.weixin.mp.bean.result.WxMpUser;
  14 +import org.apache.commons.lang3.StringUtils;
  15 +import org.apache.shiro.SecurityUtils;
  16 +import org.jeecg.common.api.vo.Result;
  17 +import org.jeecg.common.aspect.annotation.AutoLog;
  18 +import org.jeecg.common.system.query.QueryGenerator;
  19 +import org.jeecg.common.system.vo.DictModel;
  20 +import org.jeecg.common.system.vo.LoginUser;
  21 +import org.jeecg.modules.claims.entity.*;
  22 +import org.jeecg.modules.claims.service.*;
  23 +import org.jeecg.modules.system.entity.SysDict;
  24 +import org.jeecg.modules.system.entity.SysUser;
  25 +import org.jeecg.modules.system.service.ISysDictService;
  26 +import org.jeecg.modules.system.service.ISysUserService;
  27 +import org.jeecg.modules.weixin.entity.WeixinUser;
  28 +import org.jeecg.modules.weixin.service.IWeixinUserService;
  29 +import org.jeecg.modules.weixin.util.WXUtils;
  30 +import org.springframework.beans.BeanUtils;
  31 +import org.springframework.beans.factory.annotation.Autowired;
  32 +import org.springframework.beans.factory.annotation.Value;
  33 +import org.springframework.transaction.annotation.Transactional;
  34 +import org.springframework.web.bind.annotation.*;
  35 +import org.springframework.web.servlet.ModelAndView;
  36 +
  37 +import javax.servlet.http.HttpServletRequest;
  38 +import javax.servlet.http.HttpServletResponse;
  39 +import java.io.IOException;
  40 +import java.math.BigDecimal;
  41 +import java.math.RoundingMode;
  42 +import java.util.*;
  43 +
  44 +/**
  45 + * @Description: app
  46 + * @Author: jeecg-boot
  47 + * @Date: 2025-01-23
  48 + * @Version: V1.0
  49 + */
  50 +@Api(tags="weixin_user")
  51 +@RestController
  52 +@RequestMapping("/app/api")
  53 +@Slf4j
  54 +public class AppController {
  55 +
  56 + @Autowired
  57 + protected WxMpService wxMpService;
  58 + @Autowired
  59 + private IWeixinUserService weixinUserService;
  60 + @Autowired
  61 + private IInstitutionMedicalService institutionMedicalService;
  62 + @Autowired
  63 + private IInstitutionMedicalPriceService institutionMedicalPriceService;
  64 + @Autowired
  65 + private IMedicalRecordsCopyService medicalRecordsCopyService;
  66 + @Autowired
  67 + private IMedicalRecordsCopyPayService medicalRecordsCopyPayService;
  68 + @Autowired
  69 + private IHisVisinfoListService hisVisinfoListService;
  70 + @Autowired
  71 + private IInstitutionInsuranceService institutionInsuranceService;
  72 + @Autowired
  73 + private IInstitutionMedicalPersonService institutionMedicalPersonService;
  74 + @Autowired
  75 + private ISysUserService sysUserService;
  76 + @Value("${wx.pay.appId}")
  77 + private String appId;
  78 + @Value("${wx.pay.notifyUrl}")
  79 + private String notifyUrl;
  80 + @Value("${wx.configs.appSecret}")
  81 + private String appSecret;
  82 +
  83 +
  84 + @RequestMapping(value = "/getWxCode", method = RequestMethod.POST)
  85 + public String getWxCode(HttpServletResponse response, HttpServletRequest request) {
  86 + String diningId = request.getParameter("diningId");
  87 +
  88 + // 第一步:用户同意授权,获取code
  89 + StringBuilder path = new StringBuilder();
  90 + //微信公众号appid
  91 + path.append("https://open.weixin.qq.com/connect/oauth2/authorize?appid=").append(appId);
  92 + //重定向的地址
  93 + path.append("&redirect_uri=").append(notifyUrl).append("/api/login").append("/getWxgzhUser");
  94 + if(diningId != null){
  95 + path.append("?diningId=").append(diningId);
  96 + }
  97 + path.append("&response_type=code");
  98 + /*
  99 + *以snsapi_base为scope发起的网页授权,是用来获取进入页面的用户的openid的,并且是静默授权并自动跳转到回调页的。用户感知的就是直接进入了回调页(往往是业务页面)
  100 + *以snsapi_userinfo为scope发起的网页授权,是用来获取用户的基本信息的。但这种授权需要用户手动同意,并且由于用户同意过,所以无须关注,就可在授权后获取该用户的基本信息。
  101 + */
  102 + path.append("&scope=").append("snsapi_userinfo");
  103 + path.append("&state=STATE");
  104 + path.append("&connect_redirect=1#wechat_redirect");
  105 + log.info("*****************"+path);
  106 + try {
  107 + response.sendRedirect(path.toString());
  108 + } catch (IOException e) {
  109 + log.error("获取微信code失败: " + e.getMessage());
  110 + }
  111 + //必须重定向,否则不能成功
  112 + return "redirect:" + path.toString();
  113 + }
  114 +
  115 + private String getOpenId(String code){
  116 + System.err.println("****************67"+code);
  117 + WxOAuth2AccessToken accessToken;
  118 + try {
  119 + accessToken = wxMpService.getOAuth2Service().getAccessToken(code);
  120 +
  121 + WXUtils.putCache("OPENID",accessToken.getOpenId());
  122 + WxMpUser wxMpUser = wxMpService.getUserService().userInfo(accessToken.getOpenId());
  123 +
  124 + WeixinUser weixinUser = new WeixinUser();
  125 + weixinUser.setOpenId(accessToken.getOpenId());
  126 + System.err.println(accessToken.getOpenId());
  127 + QueryWrapper<WeixinUser> queryWrapper = new QueryWrapper<>();
  128 + queryWrapper.eq("open_id",accessToken.getOpenId());
  129 + List<WeixinUser> weixinUserList = weixinUserService.list(queryWrapper);
  130 + if(weixinUserList == null || weixinUserList.size() == 0){
  131 + if(wxMpUser != null){
  132 + weixinUser.setWeixinName(wxMpUser.getNickname());
  133 + weixinUser.setWeixinLogo(wxMpUser.getHeadImgUrl());
  134 + weixinUser.setDelFlag("0");
  135 + }
  136 + weixinUserService.save(weixinUser);
  137 + }
  138 + System.err.println(weixinUser);
  139 +
  140 + return accessToken.getOpenId();
  141 + } catch (WxErrorException e) {
  142 + e.printStackTrace();
  143 + log.error(e.getError().toString());
  144 + }
  145 +
  146 + return "";
  147 + }
  148 +
  149 + @RequestMapping("/getWxgzhUser")
  150 + public ModelAndView getWxgzhApi(HttpServletRequest request) {
  151 + String code = request.getParameter("code");
  152 + String openId = getOpenId(code);
  153 + System.err.println("*************103***************"+openId);
  154 +
  155 +// String diningId = request.getParameter("diningId");
  156 +// if(diningId != null){
  157 +// return new ModelAndView("redirect:"+"https://canteenh5.yunalot.com/#/advice?diningId="+diningId+"&openId="+openId);
  158 +// }
  159 +
  160 + return new ModelAndView("redirect:"+"https://canteenh5.yunalot.com/#/?openId="+openId);
  161 + }
  162 +
  163 +
  164 + /**
  165 + * 医院列表分页列表查询
  166 + *
  167 + * @param institutionMedical
  168 + * @param pageNo
  169 + * @param pageSize
  170 + * @param req
  171 + * @return
  172 + */
  173 + //@AutoLog(value = "institution_medical-分页列表查询")
  174 + @ApiOperation(value="institution_medical-分页列表查询", notes="institution_medical-分页列表查询")
  175 + @GetMapping(value = "/institutionMedical/list")
  176 + public Result<IPage<InstitutionMedical>> institutionMedicalList(InstitutionMedical institutionMedical,
  177 + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
  178 + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
  179 + HttpServletRequest req) {
  180 + QueryWrapper<InstitutionMedical> queryWrapper = QueryGenerator.initQueryWrapper(institutionMedical, req.getParameterMap());
  181 +
  182 +// //获取当前用户
  183 +// LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
  184 +//
  185 +// //判断登录人员是否为医疗机构人员(前端通过权限配置,屏蔽保险机构人员访问该页面,故无需判断是否为保险公司人员)
  186 +// String institutionId = sysUserService.getById(sysUser.getId()).getInstitutionId();
  187 +// //若institutionId为空,则为其他人员
  188 +// if (StringUtils.isNotEmpty(institutionId)){
  189 +// InstitutionMedical insurance = institutionMedicalService.getById(institutionId);
  190 +// //若机构表中有该id,则为保险机构人员
  191 +// if (insurance != null){
  192 +// queryWrapper.eq("id",institutionId);
  193 +// }
  194 +// }
  195 +
  196 + Page<InstitutionMedical> page = new Page<>(pageNo, pageSize);
  197 + IPage<InstitutionMedical> pageList = institutionMedicalService.page(page, queryWrapper);
  198 +
  199 + if(pageList == null) {
  200 + return Result.error("未找到对应数据");
  201 + }
  202 + List<InstitutionMedical> records = pageList.getRecords();
  203 + //解密显示
  204 + for (InstitutionMedical medical:records){
  205 + institutionMedicalService.changeFieldQuery(medical);
  206 + }
  207 +
  208 + return Result.OK(pageList);
  209 + }
  210 +
  211 + /**
  212 + * 获取province
  213 + *
  214 + * @return
  215 + */
  216 + @RequestMapping(value = "/getProvince", method = RequestMethod.GET)
  217 + public Result<?> getProvince() {
  218 + List<Map<String, String>> province = weixinUserService.getProvince();
  219 + List<Map<String, String>> city = weixinUserService.getCity("110000");
  220 + List<Map<String, String>> area = weixinUserService.getArea("110100");
  221 + return Result.OK(Arrays.asList(province, city, area));
  222 + }
  223 +
  224 + /**
  225 + * 获取city
  226 + *
  227 + * @param
  228 + * @return
  229 + */
  230 + @RequestMapping(value = "/getCity", method = RequestMethod.GET)
  231 + public Result<?> getCity(@RequestParam(name="provinceCode",required=false) String provinceCode) {
  232 + List<Map<String, String>> city = weixinUserService.getCity(provinceCode);
  233 + return Result.OK(city);
  234 + }
  235 +
  236 + /**
  237 + * 获取area
  238 + *
  239 + * @return
  240 + */
  241 + @RequestMapping(value = "/getArea", method = RequestMethod.GET)
  242 + public Result<?> getArea(@RequestParam(name="cityCode",required=false) String cityCode) {
  243 + List<Map<String, String>> area = weixinUserService.getArea(cityCode);
  244 + return Result.OK(area);
  245 + }
  246 +
  247 + /**
  248 + * 获取price
  249 + *
  250 + * @return
  251 + */
  252 + @RequestMapping(value = "/getPrice", method = RequestMethod.GET)
  253 + public Result<?> getPrice(@RequestParam(name="institutionId",required=false) String institutionId) {
  254 + InstitutionMedicalPrice institutionMedicalPrice = institutionMedicalPriceService.getPrice(institutionId);
  255 + JSONObject result = new JSONObject();
  256 + result.put("copyPrice", new BigDecimal(institutionMedicalPrice.getCopyPrice()).divide(new BigDecimal(100), 2, RoundingMode.HALF_UP));
  257 + result.put("postPrice", new BigDecimal(institutionMedicalPrice.getPostPrice()).divide(new BigDecimal(100), 2, RoundingMode.HALF_UP));
  258 + result.put("paperPrice", new BigDecimal(institutionMedicalPrice.getPaperPrice()).divide(new BigDecimal(100), 2, RoundingMode.HALF_UP));
  259 + return Result.OK(result);
  260 + }
  261 +
  262 + /**
  263 + * 预支付
  264 + *
  265 + * @param medicalRecordsCopy
  266 + * @return
  267 + */
  268 + @AutoLog(value = "weixin_user-支付")
  269 + @Transactional
  270 + @ApiOperation(value="weixin_user-支付", notes="weixin_user-支付")
  271 +// @RequiresPermissions("claims:medical_records_copy:add")
  272 + @PostMapping(value = "/weixin/prepay")
  273 + public Result<String> prepay(@RequestBody MedicalRecordsCopy medicalRecordsCopy) {
  274 + Boolean prepay = weixinUserService.prepay(medicalRecordsCopy);
  275 + medicalRecordsCopy.setStatus("0");
  276 + if (prepay) {
  277 + medicalRecordsCopyPayService.submitInitPay(medicalRecordsCopy);
  278 + medicalRecordsCopy.setStatus("1");
  279 + medicalRecordsCopyService.save(medicalRecordsCopy);
  280 + return Result.OK("支付成功!");
  281 + } else {
  282 + medicalRecordsCopyService.save(medicalRecordsCopy);
  283 + return Result.error("支付失败!");
  284 + }
  285 + }
  286 + /**
  287 + * 我的申请分页列表查询
  288 + *
  289 + * @param medicalRecordsCopy
  290 + * @param pageNo
  291 + * @param pageSize
  292 + * @param req
  293 + * @return
  294 + */
  295 + //@AutoLog(value = "medical_records_copy-分页列表查询")
  296 + @ApiOperation(value="medical_records_copy-分页列表查询", notes="medical_records_copy-分页列表查询")
  297 + @GetMapping(value = "/recordsCopy/list")
  298 + public Result<IPage<MedicalRecordsCopy>> recordsCopyList(MedicalRecordsCopy medicalRecordsCopy,
  299 + @RequestParam(name="openid", required = false) String openid,
  300 + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
  301 + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
  302 + HttpServletRequest req) {
  303 + QueryWrapper<MedicalRecordsCopy> queryWrapper = QueryGenerator.initQueryWrapper(medicalRecordsCopy, req.getParameterMap());
  304 + try {
  305 + SysUser user = weixinUserService.getUserByOpenid(openid);
  306 + queryWrapper.eq("create_by", user.getUsername());
  307 + } catch (Exception e) {
  308 + return Result.error("身份信息有误!");
  309 + }
  310 + Page<MedicalRecordsCopy> page = new Page<MedicalRecordsCopy>(pageNo, pageSize);
  311 + IPage<MedicalRecordsCopy> pageList = medicalRecordsCopyService.page(page, queryWrapper);
  312 + if (pageList.getRecords() != null && !pageList.getRecords().isEmpty()) {
  313 + for (MedicalRecordsCopy record : pageList.getRecords()) {
  314 + if (StringUtils.isNotBlank(record.getRegion())) {
  315 + String[] split = record.getRegion().split(",");
  316 + if (split.length > 2) {
  317 + List<Map<String, String>> region = weixinUserService.getRegion(split[2]);
  318 + record.setRegion(region.get(0).get("provinceName") + region.get(0).get("cityName") + region.get(0).get("areaName"));
  319 + }
  320 + }
  321 + try {
  322 + medicalRecordsCopyPayService.getPayInfo(record);
  323 + } catch (Exception e) {
  324 + System.err.println(e.getMessage());
  325 + }
  326 + }
  327 + }
  328 + return Result.OK(pageList);
  329 + }
  330 + /**
  331 + * 我的申请详情
  332 + *
  333 + * @param id
  334 + * @return
  335 + */
  336 + //@AutoLog(value = "medical_records_copy-详情")
  337 + @ApiOperation(value="medical_records_copy-详情", notes="medical_records_copy-详情")
  338 + @GetMapping(value = "/recordsCopy/queryById")
  339 + public Result<MedicalRecordsCopy> recordsCopyQueryById(@RequestParam(name="id",required=true) String id) {
  340 + MedicalRecordsCopy medicalRecordsCopy = medicalRecordsCopyService.getById(id);
  341 + if(medicalRecordsCopy==null) {
  342 + return Result.error("未找到对应数据");
  343 + }
  344 + if (StringUtils.isNotBlank(medicalRecordsCopy.getRegion())) {
  345 + String[] split = medicalRecordsCopy.getRegion().split(",");
  346 + if (split.length > 2) {
  347 + List<Map<String, String>> region = weixinUserService.getRegion(split[2]);
  348 + medicalRecordsCopy.setRegion(region.get(0).get("provinceName") + region.get(0).get("cityName") + region.get(0).get("areaName"));
  349 + }
  350 + }
  351 + if (StringUtils.isNotBlank(medicalRecordsCopy.getInstitutionId())) {
  352 + InstitutionMedical institutionMedical = institutionMedicalService.getById(medicalRecordsCopy.getInstitutionId());
  353 + if (institutionMedical != null) {
  354 + medicalRecordsCopy.setInstitutionName(institutionMedical.getInstitutionName());
  355 + }
  356 + }
  357 + try {
  358 + medicalRecordsCopyPayService.getPayInfo(medicalRecordsCopy);
  359 + } catch (Exception e) {
  360 + System.err.println(e.getMessage());
  361 + }
  362 + return Result.OK(medicalRecordsCopy);
  363 + }
  364 +
  365 + /**
  366 + * 验证就诊流水号
  367 + *
  368 + * @param medicalNum
  369 + * @return
  370 + */
  371 + //@AutoLog(value = "ins_claims_settle-验证就诊流水号")
  372 + @ApiOperation(value="ins_claims_settle-验证就诊流水号", notes="ins_claims_settle-验证就诊流水号")
  373 + @GetMapping(value = "/claimsSettle/validMedicalNum")
  374 + public Result<?> validMedicalNum(@RequestParam(name="medicalNum",required=true) String medicalNum) {
  375 + QueryWrapper<HisVisinfoList> queryWrapper = new QueryWrapper<>();
  376 + queryWrapper.eq("medical_num", medicalNum);
  377 + List<HisVisinfoList> hisVisinfoList = hisVisinfoListService.list(queryWrapper);
  378 + if (hisVisinfoList == null || hisVisinfoList.isEmpty()) {
  379 + return Result.error("未找到就诊记录!");
  380 + }
  381 + return Result.OK(hisVisinfoList.get(0));
  382 + }
  383 + /**
  384 + * 查询保险机构
  385 + *
  386 + * @return
  387 + */
  388 + //@AutoLog(value = "ins_claims_settle-查询保险机构")
  389 + @ApiOperation(value="ins_claims_settle-查询保险机构", notes="ins_claims_settle-查询保险机构")
  390 + @GetMapping(value = "/claimsSettle/getInsurance")
  391 + public Result<?> getInsurance() {
  392 + List<InstitutionInsurance> institutionInsuranceList = institutionInsuranceService.list(new QueryWrapper<>());
  393 + if (institutionInsuranceList == null || institutionInsuranceList.isEmpty()) {
  394 + return Result.error("未找到就诊记录!");
  395 + }
  396 + List<JSONObject> result = new ArrayList<>();
  397 + for (InstitutionInsurance i : institutionInsuranceList) {
  398 + JSONObject jsonObject = new JSONObject();
  399 + jsonObject.put("id", i.getId());
  400 + jsonObject.put("name", i.getInstitutionName());
  401 + result.add(jsonObject);
  402 + }
  403 + return Result.OK(Collections.singletonList(result));
  404 + }
  405 + /**
  406 + * 查询理赔结算申请
  407 + *
  408 + * @param hisVisinfoList
  409 + * @param pageNo
  410 + * @param pageSize
  411 + * @param req
  412 + * @return
  413 + */
  414 + //@AutoLog(value = "ins_claims_settle-查询理赔结算申请")
  415 + @ApiOperation(value="ins_claims_settle-查询理赔结算申请", notes="ins_claims_settle-查询理赔结算申请")
  416 + @GetMapping(value = "/claimsSettle/list")
  417 + public Result<IPage<HisVisinfoList>> claimsSettleList(HisVisinfoList hisVisinfoList,
  418 + @RequestParam(name="openid", required = false) String openid,
  419 + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
  420 + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
  421 + HttpServletRequest req) {
  422 + QueryWrapper<HisVisinfoList> queryWrapper = QueryGenerator.initQueryWrapper(hisVisinfoList, req.getParameterMap());
  423 + //获取当前用户
  424 + try {
  425 + SysUser user = weixinUserService.getUserByOpenid(openid);
  426 +
  427 + //判断登录人员是否为医院人员(前端通过权限配置,屏蔽保险机构人员访问该页面,故无需判断是否为保险公司人员)
  428 + QueryWrapper<InstitutionMedicalPerson> mpQuery = new QueryWrapper<>();
  429 + mpQuery.eq("user_id",user.getId());
  430 + List<InstitutionMedicalPerson> mpList = institutionMedicalPersonService.list(mpQuery);
  431 + //筛选登录用户所属医院的信息
  432 + if (!mpList.isEmpty()) {
  433 + queryWrapper.eq("hospital_id",mpList.get(0).getInstitutionId());
  434 + }
  435 + } catch (Exception e) {
  436 + return Result.error("身份信息有误!");
  437 + }
  438 +
  439 +
  440 + //排序
  441 + queryWrapper.orderByDesc("life_insure")
  442 + .orderByDesc("leave_date")
  443 + .orderByDesc("medical_type")
  444 + .orderByDesc("treat_dept_name");
  445 +
  446 +
  447 + Page<HisVisinfoList> page = new Page<HisVisinfoList>(pageNo, pageSize);
  448 + IPage<HisVisinfoList> pageList = hisVisinfoListService.page(page, queryWrapper);
  449 +
  450 + if(pageList == null) {
  451 + return Result.error("未找到对应数据");
  452 + }
  453 + List<HisVisinfoList> records = pageList.getRecords();
  454 + //解密显示
  455 + for (HisVisinfoList hisVisinfo:records){
  456 + hisVisinfoListService.changeFieldQuery(hisVisinfo);
  457 + }
  458 +
  459 + return Result.OK(pageList);
  460 + }
  461 + /**
  462 + * 查询理赔结算申请详情
  463 + *
  464 + * @param id
  465 + * @return
  466 + */
  467 + //@AutoLog(value = "ins_claims_settle-查询理赔结算申请详情")
  468 + @ApiOperation(value="ins_claims_settle-查询理赔结算申请详情", notes="ins_claims_settle-查询理赔结算申请详情")
  469 + @GetMapping(value = "/claimsSettle/queryById")
  470 + public Result<HisVisinfoList> claimsSettleQueryById(@RequestParam(name="id",required=true) String id) {
  471 + HisVisinfoList hisVisinfoList = hisVisinfoListService.getById(id);
  472 + if(hisVisinfoList==null) {
  473 + return Result.error("未找到对应数据");
  474 + }
  475 + //解密
  476 + hisVisinfoListService.changeFieldQuery(hisVisinfoList);
  477 + return Result.OK(hisVisinfoList);
  478 + }
  479 + /**
  480 + * 提交理赔结算申请
  481 + *
  482 + * @return
  483 + */
  484 + //@AutoLog(value = "ins_claims_settle-提交理赔结算申请")
  485 + @ApiOperation(value="ins_claims_settle-提交理赔结算申请", notes="ins_claims_settle-提交理赔结算申请")
  486 + @GetMapping(value = "/claimsSettle/submit")
  487 + public Result<?> submitClaimsSettle(HisVisinfoList hisVisinfoList,
  488 + @RequestParam(name="openid", required = false) String openid) {
  489 + QueryWrapper<HisVisinfoList> queryWrapper = new QueryWrapper<>();
  490 + queryWrapper.eq("medical_num", hisVisinfoList.getMedicalNum());
  491 + List<HisVisinfoList> dbDatas = hisVisinfoListService.list(queryWrapper);
  492 + HisVisinfoList dbData = dbDatas.get(0);
  493 + HisVisinfoList update = new HisVisinfoList();
  494 + BeanUtils.copyProperties(dbData, update);
  495 +
  496 + update.setNameCode(hisVisinfoList.getNameCode());
  497 + update.setCredentialType(hisVisinfoList.getCredentialType());
  498 + update.setUserCode(hisVisinfoList.getUserCode());
  499 + update.setInsuranceId(hisVisinfoList.getInsuranceId());
  500 + update.setHospitalId(hisVisinfoList.getHospitalId());
  501 + update.setHospitalCode(hisVisinfoList.getHospitalCode());
  502 + update.setHospitalName(hisVisinfoList.getHospitalName());
  503 +
  504 + // todo 初始状态
  505 + update.setInsSettleStatus("1");
  506 + hisVisinfoListService.updateById(update);
  507 + return Result.OK(update);
  508 + }
  509 +}
  1 +package org.jeecg.modules.h5Api.controller;
  2 +
  3 +import io.swagger.annotations.Api;
  4 +import io.swagger.annotations.ApiImplicitParam;
  5 +import io.swagger.annotations.ApiOperation;
  6 +import io.swagger.annotations.Authorization;
  7 +import lombok.extern.slf4j.Slf4j;
  8 +import org.jeecg.common.api.vo.Result;
  9 +import org.jeecg.common.constant.CommonConstant;
  10 +import org.jeecg.common.util.CommonUtils;
  11 +import org.jeecg.common.util.oConvertUtils;
  12 +import org.jeecg.modules.h5Api.entity.H5Result;
  13 +import org.jeecg.modules.h5Api.entity.ReturnCode;
  14 +import org.springframework.beans.factory.annotation.Value;
  15 +import org.springframework.util.AntPathMatcher;
  16 +import org.springframework.util.FileCopyUtils;
  17 +import org.springframework.web.bind.annotation.RequestMapping;
  18 +import org.springframework.web.bind.annotation.RequestMethod;
  19 +import org.springframework.web.bind.annotation.RestController;
  20 +import org.springframework.web.multipart.MultipartFile;
  21 +import org.springframework.web.multipart.MultipartHttpServletRequest;
  22 +import org.springframework.web.servlet.HandlerMapping;
  23 +
  24 +import javax.servlet.http.HttpServletRequest;
  25 +import javax.servlet.http.HttpServletResponse;
  26 +import java.io.*;
  27 +
  28 +@Slf4j
  29 +@Api(tags = "upload" ,description = "上传图片")
  30 +@RestController
  31 +@RequestMapping(value = "/app/api/img")
  32 +public class UploadImgController {
  33 +
  34 + @Value(value = "${jeecg.path.upload}")
  35 + private String uploadPath;
  36 + /**
  37 + * 本地:local minio:minio 阿里:alioss
  38 + */
  39 + @Value(value="${jeecg.uploadType}")
  40 + private String uploadType;
  41 +
  42 + @ApiOperation(value = "上传图片", notes = "上传图片", httpMethod = "POST")
  43 + @ApiImplicitParam(paramType="header", name="authorization", value = "authorization", required = true,dataType = "string")
  44 + @Authorization("authorization")
  45 + @RequestMapping(value = "/upload",method = RequestMethod.POST)
  46 + public String upload(HttpServletRequest request, HttpServletResponse response){
  47 + String savePath = "";
  48 + String bizPath = request.getParameter("biz");
  49 + MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
  50 + MultipartFile file = multipartRequest.getFile("file");// 获取上传文件对象
  51 + assert file != null;
  52 + if (oConvertUtils.isEmpty(bizPath)) {
  53 + if (CommonConstant.UPLOAD_TYPE_OSS.equals(uploadType)) {
  54 + //未指定目录,则用阿里云默认目录 upload
  55 + bizPath = "upload";
  56 + } else {
  57 + bizPath = "";
  58 + }
  59 + }
  60 + if (CommonConstant.UPLOAD_TYPE_LOCAL.equals(uploadType)) {
  61 + savePath = this.uploadLocal(file,bizPath);
  62 + } else {
  63 + savePath = CommonUtils.upload(file, bizPath, uploadType);
  64 + }
  65 + return savePath;
  66 + }
  67 +
  68 + private String uploadLocal(MultipartFile mf,String bizPath){
  69 + try {
  70 + String ctxPath = uploadPath;
  71 + String fileName = null;
  72 + File file = new File(ctxPath + File.separator + bizPath + File.separator );
  73 + if (!file.exists()) {
  74 + file.mkdirs();// 创建文件根目录
  75 + }
  76 + String orgName = mf.getOriginalFilename();// 获取文件名
  77 + orgName = CommonUtils.getFileName(orgName);
  78 + if(orgName.indexOf(".")!=-1){
  79 + fileName = orgName.substring(0, orgName.lastIndexOf(".")) + "_" + System.currentTimeMillis() + orgName.substring(orgName.indexOf("."));
  80 + }else{
  81 + fileName = orgName+ "_" + System.currentTimeMillis();
  82 + }
  83 + String savePath = file.getPath() + File.separator + fileName;
  84 + File savefile = new File(savePath);
  85 + FileCopyUtils.copy(mf.getBytes(), savefile);
  86 + String dbpath = null;
  87 + if(oConvertUtils.isNotEmpty(bizPath)){
  88 + dbpath = bizPath + File.separator + fileName;
  89 + }else{
  90 + dbpath = fileName;
  91 + }
  92 + if (dbpath.contains("\\")) {
  93 + dbpath = dbpath.replace("\\", "/");
  94 + }
  95 + return dbpath;
  96 + } catch (IOException e) {
  97 + log.error(e.getMessage(), e);
  98 + }
  99 + return "";
  100 + }
  101 +
  102 + @ApiOperation(value = "预览图片", notes = "预览图片", httpMethod = "POST")
  103 + @ApiImplicitParam(paramType="header", name="authorization", value = "authorization", required = true,dataType = "string")
  104 + @Authorization("authorization")
  105 + @RequestMapping(value = "/static/**",method = RequestMethod.GET)
  106 + public void view(HttpServletRequest request, HttpServletResponse response) {
  107 + // ISO-8859-1 ==> UTF-8 进行编码转换
  108 + String imgPath = extractPathFromPattern(request);
  109 + if(oConvertUtils.isEmpty(imgPath) || imgPath=="null"){
  110 + return;
  111 + }
  112 + // 其余处理略
  113 + InputStream inputStream = null;
  114 + OutputStream outputStream = null;
  115 + try {
  116 + imgPath = imgPath.replace("..", "");
  117 + if (imgPath.endsWith(",")) {
  118 + imgPath = imgPath.substring(0, imgPath.length() - 1);
  119 + }
  120 + String filePath = uploadPath + File.separator + imgPath;
  121 + File file = new File(filePath);
  122 + if(!file.exists()){
  123 + response.setStatus(404);
  124 + throw new RuntimeException("文件不存在..");
  125 + }
  126 + response.setContentType("application/force-download");// 设置强制下载不打开
  127 + response.addHeader("Content-Disposition", "attachment;fileName=" + new String(file.getName().getBytes("UTF-8"),"iso-8859-1"));
  128 + inputStream = new BufferedInputStream(new FileInputStream(filePath));
  129 + outputStream = response.getOutputStream();
  130 + byte[] buf = new byte[1024];
  131 + int len;
  132 + while ((len = inputStream.read(buf)) > 0) {
  133 + outputStream.write(buf, 0, len);
  134 + }
  135 + response.flushBuffer();
  136 + } catch (IOException e) {
  137 + log.error("预览文件失败" + e.getMessage());
  138 + response.setStatus(404);
  139 + e.printStackTrace();
  140 + } finally {
  141 + if (inputStream != null) {
  142 + try {
  143 + inputStream.close();
  144 + } catch (IOException e) {
  145 + log.error(e.getMessage(), e);
  146 + }
  147 + }
  148 + if (outputStream != null) {
  149 + try {
  150 + outputStream.close();
  151 + } catch (IOException e) {
  152 + log.error(e.getMessage(), e);
  153 + }
  154 + }
  155 + }
  156 +
  157 + }
  158 +
  159 + /**
  160 + * 把指定URL后的字符串全部截断当成参数
  161 + * 这么做是为了防止URL中包含中文或者特殊字符(/等)时,匹配不了的问题
  162 + * @param request
  163 + * @return
  164 + */
  165 + private static String extractPathFromPattern(final HttpServletRequest request) {
  166 + String path = (String) request.getAttribute(HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE);
  167 + String bestMatchPattern = (String) request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE);
  168 + return new AntPathMatcher().extractPathWithinPattern(bestMatchPattern, path);
  169 + }
  170 +}
  1 +package org.jeecg.modules.h5Api.entity;
  2 +
  3 +import io.swagger.annotations.ApiModel;
  4 +import io.swagger.annotations.ApiModelProperty;
  5 +import lombok.Data;
  6 +import org.jeecg.common.constant.CommonConstant;
  7 +import org.springframework.stereotype.Controller;
  8 +
  9 +import java.io.Serializable;
  10 +
  11 +
  12 +@Data
  13 +@ApiModel(value="h5接口返回对象", description="h5接口返回对象")
  14 +@Controller
  15 +public class H5Result<T> implements Serializable {
  16 +
  17 + /**
  18 + *
  19 + */
  20 + private static final long serialVersionUID = 1L;
  21 +
  22 + @ApiModelProperty("返回码(returnCode)")
  23 + private ReturnCode returnCode;
  24 +
  25 + // 返回数据
  26 + @ApiModelProperty("返回的具体数据")
  27 + private T resultData;
  28 +
  29 + public H5Result() {
  30 +
  31 + }
  32 +
  33 + public H5Result(T resultData) {
  34 + this.resultData = resultData;
  35 + }
  36 +
  37 +
  38 +
  39 + public static<T> H5Result<T> OK() {
  40 + H5Result<T> h5 = new H5Result<T>();
  41 + ReturnCode<T> r = new ReturnCode<T>();
  42 + r.setType("S");
  43 + r.setCode(CommonConstant.SC_OK_200.toString());
  44 + r.setMessage("成功");
  45 + h5.setReturnCode(r);
  46 + return h5;
  47 + }
  48 +
  49 + public static<T> H5Result<T> OK(T data) {
  50 + H5Result<T> h5 = new H5Result<T>();
  51 + ReturnCode<T> r = new ReturnCode<T>();
  52 + r.setType("S");
  53 + r.setCode(CommonConstant.SC_OK_200.toString());
  54 + h5.setResultData(data);
  55 + h5.setReturnCode(r);
  56 + return h5;
  57 + }
  58 +
  59 + public static<T> H5Result<T> OK(String msg, T data) {
  60 + H5Result<T> h5 = new H5Result<T>();
  61 + ReturnCode<T> r = new ReturnCode<T>();
  62 + r.setType("S");
  63 + r.setCode(CommonConstant.SC_OK_200.toString());
  64 + r.setMessage(msg);
  65 + h5.setResultData(data);
  66 + h5.setReturnCode(r);
  67 + return h5;
  68 + }
  69 +
  70 + public static H5Result<Object> error(String msg) {
  71 + return error(CommonConstant.SC_INTERNAL_SERVER_ERROR_500, msg);
  72 + }
  73 +
  74 + public static H5Result<Object> error(int code, String msg) {
  75 + H5Result<Object> h5 = new H5Result<Object>();
  76 + ReturnCode<Object> r = new ReturnCode<Object>();
  77 + r.setCode(String.valueOf(code));
  78 + r.setMessage(msg);
  79 + r.setType("E");
  80 + h5.setReturnCode(r);
  81 + return h5;
  82 + }
  83 +
  84 + public H5Result<T> error500(String message) {
  85 + H5Result<T> h5 = new H5Result<T>();
  86 + ReturnCode<T> r = new ReturnCode<T>();
  87 + r.setType("E");
  88 + r.setCode(CommonConstant.SC_INTERNAL_SERVER_ERROR_500.toString());
  89 + r.setMessage(message);
  90 + h5.setReturnCode(r);
  91 + return h5;
  92 + }
  93 +
  94 +}
  1 +package org.jeecg.modules.h5Api.entity;
  2 +
  3 +import io.swagger.annotations.ApiModel;
  4 +import io.swagger.annotations.ApiModelProperty;
  5 +import lombok.Data;
  6 +
  7 +import java.io.Serializable;
  8 +
  9 +
  10 +@Data
  11 +@ApiModel(value="h5接口返回ReturnCode", description="h5接口返回ReturnCode")
  12 +public class ReturnCode<T> implements Serializable {
  13 +
  14 + /**
  15 + *
  16 + */
  17 + private static final long serialVersionUID = 1L;
  18 +
  19 + @ApiModelProperty("状态码")
  20 + private String code;
  21 + // 返回码,S:成功,E:失败
  22 + @ApiModelProperty("返回码,S:成功,E:失败")
  23 + private String type;
  24 +
  25 + // 返回消息,成功为“success”,失败为具体失败信息
  26 + @ApiModelProperty("错误信息")
  27 + private String message;
  28 +
  29 +
  30 + public ReturnCode() {
  31 +
  32 + }
  33 +
  34 +
  35 + public ReturnCode(String code, String type, String message) {
  36 + this.code = code;
  37 + this.type = type;
  38 + this.message = message;
  39 + }
  40 +
  41 +
  42 +
  43 +}
@@ -26,6 +26,7 @@ import org.jeecg.modules.system.model.TreeModel; @@ -26,6 +26,7 @@ import org.jeecg.modules.system.model.TreeModel;
26 import org.jeecg.modules.system.service.*; 26 import org.jeecg.modules.system.service.*;
27 import org.jeecg.modules.system.util.PermissionDataUtil; 27 import org.jeecg.modules.system.util.PermissionDataUtil;
28 import org.springframework.beans.factory.annotation.Autowired; 28 import org.springframework.beans.factory.annotation.Autowired;
  29 +import org.springframework.beans.factory.annotation.Value;
29 import org.springframework.web.bind.annotation.*; 30 import org.springframework.web.bind.annotation.*;
30 31
31 import javax.servlet.http.HttpServletRequest; 32 import javax.servlet.http.HttpServletRequest;
@@ -44,7 +45,8 @@ import java.util.stream.Collectors; @@ -44,7 +45,8 @@ import java.util.stream.Collectors;
44 @RestController 45 @RestController
45 @RequestMapping("/sys/permission") 46 @RequestMapping("/sys/permission")
46 public class SysPermissionController { 47 public class SysPermissionController {
47 - 48 + @Value("${jeecg.encrypFlag}")
  49 + private Boolean encrypFlag;
48 @Autowired 50 @Autowired
49 private ISysPermissionService sysPermissionService; 51 private ISysPermissionService sysPermissionService;
50 52
@@ -564,7 +566,7 @@ public class SysPermissionController { @@ -564,7 +566,7 @@ public class SysPermissionController {
564 this.sysRolePermissionService.saveRolePermission(roleId, permissionIds, lastPermissionIds); 566 this.sysRolePermissionService.saveRolePermission(roleId, permissionIds, lastPermissionIds);
565 567
566 //权限加密 568 //权限加密
567 - if (StringUtils.isNotEmpty(roleId) && StringUtils.isNotEmpty(permissionIds)){ 569 + if (encrypFlag && StringUtils.isNotEmpty(roleId) && StringUtils.isNotEmpty(permissionIds)){
568 //将本次的字符串重新加密存起来 570 //将本次的字符串重新加密存起来
569 SysRole sysRole = sysRoleService.getById(roleId); 571 SysRole sysRole = sysRoleService.getById(roleId);
570 String hmac = EncryptionUtils.hmac(permissionIds); 572 String hmac = EncryptionUtils.hmac(permissionIds);
@@ -20,6 +20,7 @@ import org.jeecg.modules.system.service.ISysRoleService; @@ -20,6 +20,7 @@ import org.jeecg.modules.system.service.ISysRoleService;
20 import org.jeecgframework.poi.excel.ExcelImportUtil; 20 import org.jeecgframework.poi.excel.ExcelImportUtil;
21 import org.jeecgframework.poi.excel.entity.ImportParams; 21 import org.jeecgframework.poi.excel.entity.ImportParams;
22 import org.springframework.beans.factory.annotation.Autowired; 22 import org.springframework.beans.factory.annotation.Autowired;
  23 +import org.springframework.beans.factory.annotation.Value;
23 import org.springframework.stereotype.Service; 24 import org.springframework.stereotype.Service;
24 import org.springframework.transaction.annotation.Transactional; 25 import org.springframework.transaction.annotation.Transactional;
25 import org.springframework.web.multipart.MultipartFile; 26 import org.springframework.web.multipart.MultipartFile;
@@ -39,6 +40,8 @@ import java.util.List; @@ -39,6 +40,8 @@ import java.util.List;
39 */ 40 */
40 @Service 41 @Service
41 public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> implements ISysRoleService { 42 public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> implements ISysRoleService {
  43 + @Value("${jeecg.encrypFlag}")
  44 + private Boolean encrypFlag;
42 @Autowired 45 @Autowired
43 SysRoleMapper sysRoleMapper; 46 SysRoleMapper sysRoleMapper;
44 @Autowired 47 @Autowired
@@ -106,7 +109,7 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl @@ -106,7 +109,7 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
106 QueryWrapper<SysRolePermission> queryWrapper = new QueryWrapper<>(); 109 QueryWrapper<SysRolePermission> queryWrapper = new QueryWrapper<>();
107 queryWrapper.eq("role_id",sysRole.getId()); 110 queryWrapper.eq("role_id",sysRole.getId());
108 List<SysRolePermission> list = sysRolePermissionService.list(queryWrapper); 111 List<SysRolePermission> list = sysRolePermissionService.list(queryWrapper);
109 - if (!list.isEmpty()){ 112 + if (encrypFlag && !list.isEmpty()){
110 String ids = ""; 113 String ids = "";
111 //将所有的权限id拼接成字符串 114 //将所有的权限id拼接成字符串
112 for (SysRolePermission srp:list){ 115 for (SysRolePermission srp:list){
@@ -1273,7 +1273,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl @@ -1273,7 +1273,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
1273 public void changeFieldQuery(SysUser sysUser) { 1273 public void changeFieldQuery(SysUser sysUser) {
1274 //解密证件号,验证完整性 1274 //解密证件号,验证完整性
1275 String phoneCipher = sysUser.getPhone(); 1275 String phoneCipher = sysUser.getPhone();
1276 - if (StringUtils.isNotEmpty(phoneCipher)) { 1276 + if (encrypFlag && StringUtils.isNotEmpty(phoneCipher)) {
1277 try { 1277 try {
1278 //绑定用户登录名,不适合加密 1278 //绑定用户登录名,不适合加密
1279 //解密 1279 //解密
@@ -1297,7 +1297,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl @@ -1297,7 +1297,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
1297 public void changeFieldEncryp(SysUser sysUser) { 1297 public void changeFieldEncryp(SysUser sysUser) {
1298 //加密手机号 1298 //加密手机号
1299 String phone = sysUser.getPhone(); 1299 String phone = sysUser.getPhone();
1300 - if (StringUtils.isNotEmpty(phone)){ 1300 + if (encrypFlag && StringUtils.isNotEmpty(phone)){
1301 //绑定用户登录名,不适合加密 1301 //绑定用户登录名,不适合加密
1302 // //加密(一次加密) 1302 // //加密(一次加密)
1303 // try { 1303 // try {
@@ -1321,7 +1321,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl @@ -1321,7 +1321,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
1321 @Override 1321 @Override
1322 public String roleIdeHmac(String roleIds) { 1322 public String roleIdeHmac(String roleIds) {
1323 String roleIdsValid = null; 1323 String roleIdsValid = null;
1324 - if (StringUtils.isNotEmpty(roleIds)){ 1324 + if (encrypFlag && StringUtils.isNotEmpty(roleIds)){
1325 try { 1325 try {
1326 roleIdsValid = EncryptionUtils.hmac(roleIds); 1326 roleIdsValid = EncryptionUtils.hmac(roleIds);
1327 return roleIdsValid; 1327 return roleIdsValid;
  1 +package org.jeecg.modules.weixin.controller;
  2 +
  3 +import me.chanjar.weixin.mp.config.WxMpConfigStorage;
  4 +import me.chanjar.weixin.mp.config.impl.WxMpDefaultConfigImpl;
  5 +import me.chanjar.weixin.mp.api.WxMpService;
  6 +import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
  7 +import org.jeecg.modules.weixin.entity.WxMpProperties;
  8 +import org.springframework.context.annotation.Bean;
  9 +import org.springframework.context.annotation.Configuration;
  10 +import org.springframework.beans.factory.annotation.Value;
  11 +import org.springframework.boot.context.properties.ConfigurationProperties;
  12 +import javax.annotation.PostConstruct;
  13 +import java.util.HashMap;
  14 +import java.util.List;
  15 +import java.util.Map;
  16 +import java.util.logging.Handler;
  17 +import java.util.stream.Collectors;
  18 +
  19 +@Configuration
  20 +public class WeChatConfig {
  21 + @Value("${wx.configs.appId}")
  22 + private String appId;
  23 + @Value("${wx.configs.appSecret}")
  24 + private String appSecret;
  25 + @Value("${wx.configs.token}")
  26 + private String token;
  27 + @Value("${wx.configs.aesKey}")
  28 + private String aesKey;
  29 +
  30 + @Bean
  31 + public WxMpService wxMpService() {
  32 + WxMpService wxService = new WxMpServiceImpl();
  33 + WxMpDefaultConfigImpl configStorage = new WxMpDefaultConfigImpl();
  34 + configStorage.setAppId(appId);
  35 + configStorage.setSecret(appSecret);
  36 + configStorage.setToken(token);
  37 + configStorage.setAesKey(aesKey);
  38 + Map<String, WxMpConfigStorage> map = new HashMap<>();
  39 + map.put(appId, configStorage);
  40 + wxService.setMultiConfigStorages(map);
  41 + return wxService;
  42 + }
  43 +}
  1 +package org.jeecg.modules.weixin.controller;
  2 +
  3 +import java.util.Arrays;
  4 +import java.util.List;
  5 +import java.util.Map;
  6 +import javax.servlet.http.HttpServletRequest;
  7 +import javax.servlet.http.HttpServletResponse;
  8 +
  9 +import org.jeecg.common.api.vo.Result;
  10 +import org.jeecg.common.system.query.QueryGenerator;
  11 +import org.jeecg.modules.weixin.entity.WeixinUser;
  12 +import org.jeecg.modules.weixin.service.IWeixinUserService;
  13 +
  14 +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  15 +import com.baomidou.mybatisplus.core.metadata.IPage;
  16 +import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  17 +import lombok.extern.slf4j.Slf4j;
  18 +
  19 +import org.jeecg.common.system.base.controller.JeecgController;
  20 +import org.springframework.beans.factory.annotation.Autowired;
  21 +import org.springframework.web.bind.annotation.*;
  22 +import org.springframework.web.servlet.ModelAndView;
  23 +import io.swagger.annotations.Api;
  24 +import io.swagger.annotations.ApiOperation;
  25 +import org.jeecg.common.aspect.annotation.AutoLog;
  26 +import org.apache.shiro.authz.annotation.RequiresPermissions;
  27 +
  28 +import me.chanjar.weixin.mp.api.WxMpService;
  29 + /**
  30 + * @Description: weixin_user
  31 + * @Author: jeecg-boot
  32 + * @Date: 2025-01-23
  33 + * @Version: V1.0
  34 + */
  35 +@Api(tags="weixin_user")
  36 +@RestController
  37 +@RequestMapping("/weixin/weixinUser")
  38 +@Slf4j
  39 +public class WeixinUserController extends JeecgController<WeixinUser, IWeixinUserService> {
  40 + @Autowired
  41 + protected WxMpService wxMpService;
  42 + @Autowired
  43 + private IWeixinUserService weixinUserService;
  44 +
  45 + /**
  46 + * 分页列表查询
  47 + *
  48 + * @param weixinUser
  49 + * @param pageNo
  50 + * @param pageSize
  51 + * @param req
  52 + * @return
  53 + */
  54 + //@AutoLog(value = "weixin_user-分页列表查询")
  55 + @ApiOperation(value="weixin_user-分页列表查询", notes="weixin_user-分页列表查询")
  56 + @GetMapping(value = "/list")
  57 + public Result<IPage<WeixinUser>> queryPageList(WeixinUser weixinUser,
  58 + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
  59 + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
  60 + HttpServletRequest req) {
  61 + QueryWrapper<WeixinUser> queryWrapper = QueryGenerator.initQueryWrapper(weixinUser, req.getParameterMap());
  62 + Page<WeixinUser> page = new Page<WeixinUser>(pageNo, pageSize);
  63 + IPage<WeixinUser> pageList = weixinUserService.page(page, queryWrapper);
  64 + return Result.OK(pageList);
  65 + }
  66 +
  67 + /**
  68 + * 添加
  69 + *
  70 + * @param weixinUser
  71 + * @return
  72 + */
  73 + @AutoLog(value = "weixin_user-添加")
  74 + @ApiOperation(value="weixin_user-添加", notes="weixin_user-添加")
  75 +// @RequiresPermissions("weixin:weixin_user:add")
  76 + @PostMapping(value = "/add")
  77 + public Result<String> add(@RequestBody WeixinUser weixinUser) {
  78 + weixinUserService.save(weixinUser);
  79 + return Result.OK("添加成功!");
  80 + }
  81 +
  82 + /**
  83 + * 编辑
  84 + *
  85 + * @param weixinUser
  86 + * @return
  87 + */
  88 + @AutoLog(value = "weixin_user-编辑")
  89 + @ApiOperation(value="weixin_user-编辑", notes="weixin_user-编辑")
  90 +// @RequiresPermissions("weixin:weixin_user:edit")
  91 + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
  92 + public Result<String> edit(@RequestBody WeixinUser weixinUser) {
  93 + weixinUserService.updateById(weixinUser);
  94 + return Result.OK("编辑成功!");
  95 + }
  96 +
  97 + /**
  98 + * 通过id删除
  99 + *
  100 + * @param id
  101 + * @return
  102 + */
  103 + @AutoLog(value = "weixin_user-通过id删除")
  104 + @ApiOperation(value="weixin_user-通过id删除", notes="weixin_user-通过id删除")
  105 +// @RequiresPermissions("weixin:weixin_user:delete")
  106 + @DeleteMapping(value = "/delete")
  107 + public Result<String> delete(@RequestParam(name="id",required=true) String id) {
  108 + weixinUserService.removeById(id);
  109 + return Result.OK("删除成功!");
  110 + }
  111 +
  112 + /**
  113 + * 批量删除
  114 + *
  115 + * @param ids
  116 + * @return
  117 + */
  118 + @AutoLog(value = "weixin_user-批量删除")
  119 + @ApiOperation(value="weixin_user-批量删除", notes="weixin_user-批量删除")
  120 +// @RequiresPermissions("weixin:weixin_user:deleteBatch")
  121 + @DeleteMapping(value = "/deleteBatch")
  122 + public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
  123 + this.weixinUserService.removeByIds(Arrays.asList(ids.split(",")));
  124 + return Result.OK("批量删除成功!");
  125 + }
  126 +
  127 + /**
  128 + * 通过id查询
  129 + *
  130 + * @param id
  131 + * @return
  132 + */
  133 + //@AutoLog(value = "weixin_user-通过id查询")
  134 + @ApiOperation(value="weixin_user-通过id查询", notes="weixin_user-通过id查询")
  135 + @GetMapping(value = "/queryById")
  136 + public Result<WeixinUser> queryById(@RequestParam(name="id",required=true) String id) {
  137 + WeixinUser weixinUser = weixinUserService.getById(id);
  138 + if(weixinUser==null) {
  139 + return Result.error("未找到对应数据");
  140 + }
  141 + return Result.OK(weixinUser);
  142 + }
  143 +
  144 + /**
  145 + * 导出excel
  146 + *
  147 + * @param request
  148 + * @param weixinUser
  149 + */
  150 +// @RequiresPermissions("weixin:weixin_user:exportXls")
  151 + @RequestMapping(value = "/exportXls")
  152 + public ModelAndView exportXls(HttpServletRequest request, WeixinUser weixinUser) {
  153 + return super.exportXls(request, weixinUser, WeixinUser.class, "weixin_user");
  154 + }
  155 +
  156 + /**
  157 + * 通过excel导入数据
  158 + *
  159 + * @param request
  160 + * @param response
  161 + * @return
  162 + */
  163 +// @RequiresPermissions("weixin:weixin_user:importExcel")
  164 + @RequestMapping(value = "/importExcel", method = RequestMethod.GET)
  165 + public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
  166 + return super.importExcel(request, response, WeixinUser.class);
  167 + }
  168 +
  169 + }
  1 +package org.jeecg.modules.weixin.entity;
  2 +
  3 +import java.io.Serializable;
  4 +import java.io.UnsupportedEncodingException;
  5 +import java.util.Date;
  6 +import java.math.BigDecimal;
  7 +import com.baomidou.mybatisplus.annotation.IdType;
  8 +import com.baomidou.mybatisplus.annotation.TableId;
  9 +import com.baomidou.mybatisplus.annotation.TableName;
  10 +import com.baomidou.mybatisplus.annotation.TableLogic;
  11 +import lombok.Data;
  12 +import com.fasterxml.jackson.annotation.JsonFormat;
  13 +import org.springframework.format.annotation.DateTimeFormat;
  14 +import org.jeecgframework.poi.excel.annotation.Excel;
  15 +import org.jeecg.common.aspect.annotation.Dict;
  16 +import io.swagger.annotations.ApiModel;
  17 +import io.swagger.annotations.ApiModelProperty;
  18 +import lombok.EqualsAndHashCode;
  19 +import lombok.experimental.Accessors;
  20 +
  21 +/**
  22 + * @Description: weixin_user
  23 + * @Author: jeecg-boot
  24 + * @Date: 2025-01-23
  25 + * @Version: V1.0
  26 + */
  27 +@Data
  28 +@TableName("weixin_user")
  29 +@Accessors(chain = true)
  30 +@EqualsAndHashCode(callSuper = false)
  31 +@ApiModel(value="weixin_user对象", description="weixin_user")
  32 +public class WeixinUser implements Serializable {
  33 + private static final long serialVersionUID = 1L;
  34 +
  35 + /**主键*/
  36 + @TableId(type = IdType.ASSIGN_ID)
  37 + @ApiModelProperty(value = "主键")
  38 + private java.lang.String id;
  39 + /**微信ID*/
  40 + @Excel(name = "微信ID", width = 15)
  41 + @ApiModelProperty(value = "微信ID")
  42 + private java.lang.String openId;
  43 + /**微信昵称*/
  44 + @Excel(name = "微信昵称", width = 15)
  45 + @ApiModelProperty(value = "微信昵称")
  46 + private java.lang.String weixinName;
  47 + /**微信号*/
  48 + @Excel(name = "微信号", width = 15)
  49 + @ApiModelProperty(value = "微信号")
  50 + private java.lang.String weixinNum;
  51 + /**微信头像*/
  52 + @Excel(name = "微信头像", width = 15)
  53 + @ApiModelProperty(value = "微信头像")
  54 + private java.lang.String weixinLogo;
  55 + /**创建者*/
  56 + @ApiModelProperty(value = "创建者")
  57 + private java.lang.String createBy;
  58 + /**创建时间*/
  59 + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
  60 + @DateTimeFormat(pattern="yyyy-MM-dd")
  61 + @ApiModelProperty(value = "创建时间")
  62 + private java.util.Date createTime;
  63 + /**更新者*/
  64 + @ApiModelProperty(value = "更新者")
  65 + private java.lang.String updateBy;
  66 + /**更新时间*/
  67 + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
  68 + @DateTimeFormat(pattern="yyyy-MM-dd")
  69 + @ApiModelProperty(value = "更新时间")
  70 + private java.util.Date updateTime;
  71 + /**删除标记*/
  72 + @Excel(name = "删除标记", width = 15)
  73 + @ApiModelProperty(value = "删除标记")
  74 + @TableLogic
  75 + private java.lang.String delFlag;
  76 + /**系统用户ID*/
  77 + @Excel(name = "系统用户ID", width = 15, dictTable = "sys_user", dicText = "username", dicCode = "id")
  78 + @Dict(dictTable = "sys_user", dicText = "username", dicCode = "id")
  79 + @ApiModelProperty(value = "系统用户ID")
  80 + private java.lang.String sysUserId;
  81 +}
  1 +package org.jeecg.modules.weixin.entity;
  2 +
  3 +import lombok.Data;
  4 +
  5 +@Data
  6 +public class WxMpProperties {
  7 +
  8 + private String appId;
  9 + private String secret;
  10 + private String token;
  11 + private String aesKey;
  12 +}
  1 +package org.jeecg.modules.weixin.mapper;
  2 +
  3 +import java.util.List;
  4 +import java.util.Map;
  5 +
  6 +import org.apache.ibatis.annotations.Param;
  7 +import org.jeecg.modules.weixin.entity.WeixinUser;
  8 +import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  9 +
  10 +/**
  11 + * @Description: weixin_user
  12 + * @Author: jeecg-boot
  13 + * @Date: 2025-01-23
  14 + * @Version: V1.0
  15 + */
  16 +public interface WeixinUserMapper extends BaseMapper<WeixinUser> {
  17 + List<Map<String, String>> getProvince();
  18 + List<Map<String, String>> getCity(@Param("provinceCode") String provinceCode);
  19 + List<Map<String, String>> getArea(@Param("cityCode") String cityCode);
  20 + List<Map<String, String>> getRegion(@Param("areaCode") String areaCode);
  21 +}
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3 +<mapper namespace="org.jeecg.modules.weixin.mapper.WeixinUserMapper">
  4 +
  5 + <select id="getProvince" resultType="java.util.Map">
  6 + select distinct province_code id, province_name name
  7 + from area
  8 + </select>
  9 + <select id="getCity" parameterType="java.lang.String" resultType="java.util.Map">
  10 + select distinct city_code id, city_name name
  11 + from area
  12 + where province_code = #{provinceCode}
  13 + </select>
  14 + <select id="getArea" parameterType="java.lang.String" resultType="java.util.Map">
  15 + select area_code id, area_name name
  16 + from area
  17 + where city_code = #{cityCode}
  18 + </select>
  19 + <select id="getRegion" parameterType="java.lang.String" resultType="java.util.Map">
  20 + select province_code provinceCode, province_name provinceName, city_code cityCode, city_name cityName, area_code areaCode, area_name areaName
  21 + from area
  22 + where area_code = #{areaCode}
  23 + </select>
  24 +</mapper>
  1 +package org.jeecg.modules.weixin.service;
  2 +
  3 +import org.jeecg.modules.claims.entity.MedicalRecordsCopy;
  4 +import org.jeecg.modules.system.entity.SysUser;
  5 +import org.jeecg.modules.weixin.entity.WeixinUser;
  6 +import com.baomidou.mybatisplus.extension.service.IService;
  7 +
  8 +import java.util.List;
  9 +import java.util.Map;
  10 +
  11 +/**
  12 + * @Description: weixin_user
  13 + * @Author: jeecg-boot
  14 + * @Date: 2025-01-23
  15 + * @Version: V1.0
  16 + */
  17 +public interface IWeixinUserService extends IService<WeixinUser> {
  18 + List<Map<String, String>> getProvince();
  19 +
  20 + List<Map<String, String>> getCity(String provinceCode);
  21 +
  22 + List<Map<String, String>> getArea(String cityCode);
  23 +
  24 + List<Map<String, String>> getRegion(String areaCode);
  25 +
  26 + SysUser getUserByOpenid(String openid);
  27 +
  28 + Boolean prepay(MedicalRecordsCopy medicalRecordsCopy);
  29 +}
  1 +package org.jeecg.modules.weixin.service.impl;
  2 +
  3 +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  4 +import org.jeecg.modules.claims.entity.MedicalRecordsCopy;
  5 +import org.jeecg.modules.system.entity.SysUser;
  6 +import org.jeecg.modules.system.service.ISysUserService;
  7 +import org.jeecg.modules.weixin.entity.WeixinUser;
  8 +import org.jeecg.modules.weixin.mapper.WeixinUserMapper;
  9 +import org.jeecg.modules.weixin.service.IWeixinUserService;
  10 +import org.springframework.beans.factory.annotation.Autowired;
  11 +import org.springframework.stereotype.Service;
  12 +
  13 +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  14 +
  15 +import java.util.List;
  16 +import java.util.Map;
  17 +
  18 +/**
  19 + * @Description: weixin_user
  20 + * @Author: jeecg-boot
  21 + * @Date: 2025-01-23
  22 + * @Version: V1.0
  23 + */
  24 +@Service
  25 +public class WeixinUserServiceImpl extends ServiceImpl<WeixinUserMapper, WeixinUser> implements IWeixinUserService {
  26 + @Autowired
  27 + private ISysUserService sysUserService;
  28 +
  29 + @Override
  30 + public List<Map<String, String>> getProvince() {
  31 + return baseMapper.getProvince();
  32 + }
  33 +
  34 + @Override
  35 + public List<Map<String, String>> getCity(String provinceCode) {
  36 + return baseMapper.getCity(provinceCode);
  37 + }
  38 +
  39 + @Override
  40 + public List<Map<String, String>> getArea(String cityCode) {
  41 + return baseMapper.getArea(cityCode);
  42 + }
  43 +
  44 + @Override
  45 + public List<Map<String, String>> getRegion(String areaCode) {
  46 + return baseMapper.getRegion(areaCode);
  47 + }
  48 +
  49 + @Override
  50 + public SysUser getUserByOpenid(String openid) {
  51 + QueryWrapper<WeixinUser> queryWrapper = new QueryWrapper<>();
  52 + queryWrapper.eq("open_id", openid);
  53 + WeixinUser one = getOne(queryWrapper);
  54 + SysUser sysUser = sysUserService.getById(one.getSysUserId());
  55 + return sysUser;
  56 + }
  57 +
  58 + @Override
  59 + public Boolean prepay(MedicalRecordsCopy medicalRecordsCopy) {
  60 + // todo 微信支付
  61 + return true;
  62 + }
  63 +}
  1 +package org.jeecg.modules.weixin.util;
  2 +
  3 +import org.apache.shiro.SecurityUtils;
  4 +import org.apache.shiro.session.InvalidSessionException;
  5 +import org.apache.shiro.session.Session;
  6 +import org.apache.shiro.subject.Subject;
  7 +
  8 +public class WXUtils {
  9 +
  10 + public static Session getSession(){
  11 + try{
  12 + Subject subject = SecurityUtils.getSubject();
  13 + Session session = subject.getSession(false);
  14 + if (session == null){
  15 + session = subject.getSession();
  16 + }
  17 + if (session != null){
  18 + return session;
  19 + }
  20 +// subject.logout();
  21 + }catch (InvalidSessionException e){
  22 +
  23 + }
  24 + return null;
  25 + }
  26 +
  27 + public static Object getCache(String key) {
  28 + return getCache(key, null);
  29 + }
  30 +
  31 + public static Object getCache(String key, Object defaultValue) {
  32 + Object obj = getSession().getAttribute(key);
  33 + return obj==null?defaultValue:obj;
  34 + }
  35 +
  36 + public static void putCache(String key, Object value) {
  37 + getSession().setAttribute(key, value);
  38 + }
  39 +
  40 + public static void removeCache(String key) {
  41 + getSession().removeAttribute(key);
  42 + }
  43 +
  44 + public static String getOpenId () {
  45 + Object obj = getCache("OPENID");
  46 + String openId = obj != null ? String.valueOf(obj) : null;
  47 + return openId;
  48 + }
  49 +}
  50 +
@@ -294,3 +294,22 @@ third-app: @@ -294,3 +294,22 @@ third-app:
294 # appSecret 294 # appSecret
295 client-secret: ?? 295 client-secret: ??
296 agent-id: ?? 296 agent-id: ??
  297 +#微信
  298 +wx:
  299 + configs:
  300 + #公众号 APP_ID
  301 + appId: wx
  302 + #公众号 APP_SECRET
  303 + appSecret: ''
  304 + #公众号 TOKEN
  305 + token: ''
  306 + #公众号 AES_KEY
  307 + aesKey: ''
  308 + pay:
  309 + appId: wx #微信公众号或者小程序的appid
  310 + mchId: '' #微信支付商户号
  311 + mchKey: '' #微信支付商户密钥
  312 + # subAppId: #服务商模式下的子商户公众账号ID
  313 + # subMchId: #服务商模式下的子商户号
  314 + keyPath: /root/apiclient_cert.p12 # p12证书的位置,可以指定绝对路径,也可以指定类路径(以classpath:开头)
  315 + notifyUrl: http://localhost:8080/insurance