From 8cde7ee1143bae70eb68d2b75f572d5b4dbadf98 Mon Sep 17 00:00:00 2001 From: zjh <1084500556@qq.com> Date: 星期四, 12 十月 2023 17:47:00 +0800 Subject: [PATCH] zjh 2023/10/12--1 --- ltkj-hosp/src/main/java/com/ltkj/hosp/service/impl/TjOrderServiceImpl.java | 2 ltkj-framework/src/main/java/com/ltkj/framework/web/service/SysLoginService.java | 55 ++++ ltkj-hosp/src/main/java/com/ltkj/hosp/domain/DictHosp.java | 6 ltkj-hosp/src/main/java/com/ltkj/hosp/domain/TjFlowingWater.java | 2 ltkj-admin/src/main/resources/application.yml | 4 ltkj-common/src/main/java/com/ltkj/common/exception/CustomException.java | 41 +++ ltkj-common/src/main/java/com/ltkj/common/utils/SecurityUtils.java | 30 ++ ltkj-hosp/src/main/java/com/ltkj/hosp/mapper/TjOrderMapper.java | 3 ltkj-hosp/src/main/java/com/ltkj/hosp/service/ITjOrderService.java | 2 ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjFlowingWaterController.java | 2 ltkj-common/src/main/java/com/ltkj/common/exception/user/SecretKeyException.java | 43 +++ ltkj-admin/src/test/java/zjhTest.java | 60 +++-- ltkj-common/src/main/java/com/ltkj/common/core/domain/model/LoginUser.java | 12 + ltkj-hosp/src/main/resources/mapper/hosp/TjOrderMapper.xml | 2 ltkj-hosp/src/main/java/com/ltkj/hosp/vodomain/NewFlowingWaterVo.java | 42 +++ ltkj-admin/src/main/java/com/ltkj/web/controller/system/SysLoginController.java | 61 +++++ ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjNewFlowingWaterController.java | 252 ++++++++++++++++++++++ 17 files changed, 589 insertions(+), 30 deletions(-) diff --git a/ltkj-admin/src/main/java/com/ltkj/web/controller/system/SysLoginController.java b/ltkj-admin/src/main/java/com/ltkj/web/controller/system/SysLoginController.java index 6f1125e..2686fc0 100644 --- a/ltkj-admin/src/main/java/com/ltkj/web/controller/system/SysLoginController.java +++ b/ltkj-admin/src/main/java/com/ltkj/web/controller/system/SysLoginController.java @@ -3,11 +3,20 @@ import java.awt.peer.LabelPeer; import java.util.*; +import cn.hutool.core.date.DateUnit; +import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ltkj.common.annotation.RepeatSubmit; +import com.ltkj.common.core.domain.entity.SysDept; import com.ltkj.common.core.domain.entity.SysRole; +import com.ltkj.common.core.redis.RedisCache; +import com.ltkj.common.exception.CustomException; +import com.ltkj.common.exception.user.SecretKeyException; import com.ltkj.common.utils.StringUtils; +import com.ltkj.framework.config.UserHoder; +import com.ltkj.hosp.domain.DictHosp; import com.ltkj.hosp.domain.TjCustomer; +import com.ltkj.hosp.service.IDictHospService; import com.ltkj.hosp.service.ITjCustomerService; import com.ltkj.system.domain.SysPost; import com.ltkj.system.domain.SysRoleMenu; @@ -17,6 +26,7 @@ import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.*; import com.ltkj.common.constant.Constants; import com.ltkj.common.core.domain.AjaxResult; @@ -56,6 +66,17 @@ private ISysRoleMenuService roleMenuService; @Autowired private ISysConfigService configService; + @Resource + private IDictHospService hospService; + @Autowired + private ISysDeptService deptService; + @Value("${token.secret_key}") + private String secret; + + @Value("${token.secret_key_login}") + private boolean secretKeyLogin; + @Autowired + private RedisCache redisCache; /** * 鐧诲綍鏂规硶 @@ -90,13 +111,50 @@ @GetMapping("getInfo") public AjaxResult getInfo() { AjaxResult ajax = success(); - SysUser user = Objects.requireNonNull(SecurityUtils.getLoginUser()).getUser(); +// SysUser user = Objects.requireNonNull(SecurityUtils.getLoginUser()).getUser(); + SysUser user = UserHoder.getLoginUser().getUser(); if (null != user.getUserId()) { + String message=null; + if (secretKeyLogin) + { + if(null !=user.getDeptId()){ + if(!SecurityUtils.isAdmin(user.getUserId())){ + SysDept sysDept = deptService.getById(user.getDeptId()); + if (null != sysDept) { + DictHosp dictHosp = hospService.getById(sysDept.getHospId()); + if(null !=dictHosp && dictHosp.getSecretKey() !=null && dictHosp.getExpirationTime() !=null){ + if (!SecurityUtils.matchesMallMerchantSecretKey(secret,dictHosp.getHospAreaId(),dictHosp.getAreaid(), + dictHosp.getExpirationTime(),dictHosp.getSecretKey())) { + + String userIdKey = Constants.LOGIN_USERID_KEY + user.getUserId(); + String userKey = redisCache.getCacheObject(userIdKey); + if (org.apache.commons.lang3.StringUtils.isNotEmpty(userKey)) + { + redisCache.deleteObject(userIdKey); + redisCache.deleteObject(userKey); + } + + throw new SecretKeyException("鍟嗗宸茶繃鏈熻缁垂浣跨敤"); + } + long between = DateUtil.between(new Date(), DateUtil.endOfDay(dictHosp.getExpirationTime()), DateUnit.DAY); + if(between<=30){ +// message="杩樻湁 "+between+" 澶╁埌鏈� 璇锋敞鎰忕画璐�! 浠ュ厤褰卞搷姝e父浣跨敤!"; + UserHoder.getLoginUser().setMessage("杩樻湁 "+between+" 澶╁埌鏈� 璇锋敞鎰忕画璐�! 浠ュ厤褰卞搷姝e父浣跨敤!"); + } + }else { + throw new SecretKeyException("璇风即璐逛娇鐢�"); + } + } + } + + } + } Set<String> roles = permissionService.getRolePermission(user); Set<String> permissions = permissionService.getMenuPermission(user); ajax.put("user", user); ajax.put("roles", roles); ajax.put("permissions", permissions); + ajax.put("securitMessage",UserHoder.getLoginUser().getMessage()); } else { Set<String> roles = new HashSet<>(); LambdaQueryWrapper<SysRole> wq = new LambdaQueryWrapper<>(); @@ -116,6 +174,7 @@ ajax.put("roles", roles); ajax.put("permissions", permissions); ajax.put("post",null); + ajax.put("securitMessage",null); } return ajax; } diff --git a/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjFlowingWaterController.java b/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjFlowingWaterController.java index 7329e50..4f1ebc2 100644 --- a/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjFlowingWaterController.java +++ b/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjFlowingWaterController.java @@ -418,7 +418,7 @@ tjRefundVo.setTjName(MatchUtils.hideCusName(customer.getCusName())); tjRefundVo.setTjPhone(MatchUtils.hidePhoneNum(customer.getCusPhone())); tjRefundVo.setSex(String.valueOf(customer.getCusSex())); - tjRefundVo.setIdCard(MatchUtils.hideIdCardNum(customer.getCusIdcard())); + if(null !=customer.getCusIdcard()) tjRefundVo.setIdCard(MatchUtils.hideIdCardNum(customer.getCusIdcard())); DictComp dictComp = compService.getById(order.getFirmId()); if(null !=dictComp){ tjRefundVo.setTjComp(dictComp.getCnName()); diff --git a/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjNewFlowingWaterController.java b/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjNewFlowingWaterController.java new file mode 100644 index 0000000..b5995f1 --- /dev/null +++ b/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjNewFlowingWaterController.java @@ -0,0 +1,252 @@ +package com.ltkj.web.controller.system; + +import cn.hutool.core.codec.Base64; +import cn.hutool.core.date.DateUtil; +import cn.hutool.extra.pinyin.PinyinUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.ltkj.common.core.domain.AjaxResult; +import com.ltkj.common.core.domain.entity.SysUser; +import com.ltkj.common.utils.SecurityUtils; +import com.ltkj.framework.config.MatchUtils; +import com.ltkj.hosp.domain.*; +import com.ltkj.hosp.service.*; +import com.ltkj.hosp.vodomain.NewFlowingWaterVo; +import com.ltkj.hosp.vodomain.TjCollectFeesVo; +import com.ltkj.mall.domain.MallCheckLog; +import com.ltkj.mall.domain.MallOrder; +import com.ltkj.mall.mallOrderUtils.TjConstants; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.math.BigDecimal; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @Company: 瑗垮畨璺嘲绉戞妧鏈夐檺鍏徃 + * @Author: zjh + * @Date: 2023/10/12 08:42 + */ + + +@RestController +@RequestMapping("/hosp/new/water") +@Api(tags = "PC绔� 浣撴 鏂� 鐧昏鏀惰垂鍔熻兘鎺ュ彛") +public class TjNewFlowingWaterController { + @Resource + private ITjFlowingWaterService flowingWaterService; + @Resource + private ITjOrderService orderService; + @Resource + private ITjOrderDetailService detailService; + @Resource + private ITjTollCollectorService collectorService; + @Resource + private ITjTollCollectorDetailService collectorDetailService; + @Resource + private ITjCustomerService customerService; + @Resource + private ITjProjectService projectService; + @Resource + private ITjChargingStandardService chargingStandardService; + + + + + @GetMapping("/getFlowingWaterList") + @ApiOperation(value = "鑾峰彇浣撴鏀惰垂璁板綍鎺ュ彛") + public AjaxResult getFlowingWaterList(@RequestParam(required = false) @ApiParam(value = "浣撴鍙�") String phone, + @RequestParam(required = false) @ApiParam(value = "浣撴浜哄鍚�") String name, + @RequestParam(defaultValue = "1") @ApiParam(value = "鏀惰垂1 閫�璐�2") Long type) { + List<TjFlowingWater> waterList =null; + List<Long> collect =null; + TjCustomer one =null; + + LambdaQueryWrapper<TjFlowingWater> wq1 = new LambdaQueryWrapper<>(); + if(null !=phone || null !=name){ + LambdaQueryWrapper<TjCustomer> wq = new LambdaQueryWrapper<>(); + if(null !=name){ + wq.like(TjCustomer::getCusName,name); + } + if (null != phone) { + wq.eq(TjCustomer::getCusPhone, phone); + } + one = customerService.getOne(wq); + } + + if (null != one) { + collect = orderService.getOrderList(one.getCusId()).stream().map(TjOrder::getOrderId).collect(Collectors.toList()); + } + if(null !=collect){ + wq1.in(TjFlowingWater::getOrderId, collect); + } + wq1.between(TjFlowingWater::getCreateTime,DateUtil.beginOfDay(new Date()),DateUtil.endOfDay(new Date())); + wq1.eq(TjFlowingWater::getPayStasus,type); + waterList = flowingWaterService.list(wq1); + + if(null !=waterList && waterList.size()>0){ + for (TjFlowingWater flowingWater : waterList) { + TjOrder order = orderService.getById(flowingWater.getOrderId()); + if (null != order) { + if (null != customerService.getById(order.getUserId())) { + flowingWater.setCustomer(customerService.getById(order.getUserId())); + } + } + } + } + return AjaxResult.success(waterList); + } + + + + + @GetMapping("/getTjPrice") + @ApiOperation(value = "鑾峰彇浣撴璐圭敤") + public AjaxResult getTjPrice() { + TjProject project = projectService.getOne(new LambdaQueryWrapper<TjProject>().eq(TjProject::getProName, "浣撴璐�") + .eq(TjProject::getProId, 1712272744924446722L)); + if (null != project) { + return AjaxResult.success(project.getProPrice()); + } + return AjaxResult.error("娌℃壘鍒板搴旈」鐩� 璇疯嚜瀹氫箟璐圭敤"); + } + + + /** + * 浣撴绛惧埌鐧昏鎺ュ彛 + */ + @PostMapping("/addOrderAndDetail") + @ApiOperation(value = "浣撴鏀惰垂鎺ュ彛") + @Transactional + public AjaxResult addOrderAndDetail(@RequestBody NewFlowingWaterVo vo) { + + if (!MatchUtils.isMobileNO(vo.getPhone())) { + return AjaxResult.error("鎵嬫満鍙锋牸寮忔湁璇�!"); + } +// Long cusId = null; +// LambdaQueryWrapper<TjCustomer> wq = new LambdaQueryWrapper<>(); +// wq.eq(TjCustomer::getCusName, vo.getName()); +// wq.eq(TjCustomer::getCusPhone, vo.getPhone()); +// TjCustomer one = customerService.getOne(wq); +// if (null == one) { + TjCustomer customer = new TjCustomer(); + if(null !=vo.getPhone())customer.setCusPhone(vo.getPhone()); + customer.setCusName(vo.getName()); + customer.setCusBrithday(new Date()); + customer.setCusSex(0L); + customerService.save(customer); +// cusId = customer.getCusId(); +// } else { +// cusId = one.getCusId(); +// } + TjOrder tjOrder = new TjOrder(); + tjOrder.setUserId(customer.getCusId()); + tjOrder.setTjType("2"); + //鐢熸垚浣撴鍙� + String tjNumber = (SecurityUtils.getUsername() + new SimpleDateFormat("yyMMddHHmmss").format(new Date())); + tjOrder.setTjNumber(tjNumber); + tjOrder.setFirmId("0"); + tjOrder.setStatus(TjConstants.TJ_BEGIN); + if (orderService.save(tjOrder)) { + + LambdaQueryWrapper<TjFlowingWater> wq = new LambdaQueryWrapper<>(); + wq.eq(TjFlowingWater::getOrderId,tjOrder.getOrderId()); + wq.eq(TjFlowingWater::getPayStasus,1L); + if(null !=flowingWaterService.getOne(wq)){ + return AjaxResult.error("璇ヨ鍗曞凡缂磋垂!"); + } + + TjOrderDetail detail = new TjOrderDetail(); + detail.setOrderId(tjOrder.getOrderId()); + detail.setProId(1712272744924446722L); + detail.setProType("0"); + detailService.save(detail); + + TjFlowingWater tjFlowingWater = new TjFlowingWater(); + tjFlowingWater.setOrderId(tjOrder.getOrderId()); + tjFlowingWater.setPayType(Long.valueOf(vo.getType())); + tjFlowingWater.setCopeWith(vo.getYs()); + tjFlowingWater.setPaidIn(vo.getSs()); + tjFlowingWater.setDiscount(vo.getZk()); + tjFlowingWater.setPayStasus(1L); + Date date1 = new Date(System.currentTimeMillis()); + String s1 = SecurityUtils.getUsername() + new SimpleDateFormat("yyMMddHHmmssSSS").format(date1); + tjFlowingWater.setWaterId(s1); + tjFlowingWater.setRemarks("宸叉敹璐�"); + if (flowingWaterService.save(tjFlowingWater)) { + tjOrder.setTjSerialNumber(String.valueOf(tjFlowingWater.getTjSerialNumber())); + orderService.updateById(tjOrder); + detail.setFlowingWaterId(tjFlowingWater.getWaterId()); + detailService.updateById(detail); + TjChargingStandard tjChargingStandard = new TjChargingStandard(); + tjChargingStandard.setTjNum(tjOrder.getTjNumber()); + tjChargingStandard.setProId(1712272744924446722L); + tjChargingStandard.setPrice(vo.getYs().divide(BigDecimal.valueOf(Long.parseLong(vo.getNumber())))); + tjChargingStandard.setProName("浣撴椤圭洰"); + tjChargingStandard.setCount(Long.valueOf(vo.getNumber())); + chargingStandardService.save(tjChargingStandard); + } + return AjaxResult.success(); + } + return AjaxResult.error(); + } + + + /** + * 浣撴閫�璐规帴鍙� + */ + @PostMapping("/tjRefund") + @ApiOperation(value = "浣撴閫�璐规寜閽帴鍙�") + public AjaxResult tjRefund(@RequestBody @ApiParam(value = "娴佹按瀵硅薄") TjFlowingWater water) { + TjFlowingWater flowingWater = flowingWaterService.getOne(new LambdaQueryWrapper<TjFlowingWater>().eq(TjFlowingWater::getWaterId, water.getWaterId())); + + LambdaQueryWrapper<TjFlowingWater> wq = new LambdaQueryWrapper<>(); + wq.eq(TjFlowingWater::getOrderId,flowingWater.getOrderId()); + wq.eq(TjFlowingWater::getPayStasus,2L); + if(null !=flowingWaterService.getOne(wq)){ + return AjaxResult.error("璇ヨ鍗曞凡閫�璐� 涓嶅彲閲嶅閫�璐�!"); + } + TjFlowingWater tjFlowingWater=new TjFlowingWater(); + tjFlowingWater.setOrderId(flowingWater.getOrderId()); + tjFlowingWater.setWaterId(SecurityUtils.getUsername() + DateUtil.format(new Date(), "yyMMddHHmmssSSS")); + tjFlowingWater.setTollCollectorId(String.valueOf(SecurityUtils.getLoginUser().getUserId())); + tjFlowingWater.setRefundPersonId(String.valueOf(SecurityUtils.getLoginUser().getUserId())); + tjFlowingWater.setRefundTime(new Date()); + tjFlowingWater.setRefundPrice(flowingWater.getPaidIn()); + tjFlowingWater.setIsAddition("N"); + tjFlowingWater.setPayStasus(2L); + tjFlowingWater.setPaidIn(BigDecimal.valueOf(0.00).subtract(tjFlowingWater.getRefundPrice())); + tjFlowingWater.setCopeWith(flowingWater.getCopeWith()); + tjFlowingWater.setRemarks("宸查��璐�"); + if (flowingWaterService.save(tjFlowingWater)) { + flowingWater.setRemarks("宸查��璐�"); + flowingWaterService.updateById(flowingWater); + TjOrder order = orderService.getById(tjFlowingWater.getOrderId()); + LambdaQueryWrapper<TjOrderDetail> wq1 = new LambdaQueryWrapper<>(); + wq1.eq(TjOrderDetail::getOrderId, tjFlowingWater.getOrderId()); + wq1.isNotNull(TjOrderDetail::getFlowingWaterId); + List<TjOrderDetail> list = detailService.list(wq1); + if (null != list && list.size() > 0) { + for (TjOrderDetail orderDetail : list) { + orderDetail.setFlowingWaterId(null); + detailService.updateById(orderDetail); + LambdaQueryWrapper<TjChargingStandard> wqq = new LambdaQueryWrapper<>(); + wqq.eq(TjChargingStandard::getTjNum, order.getTjNumber()); + wqq.eq(TjChargingStandard::getProId, orderDetail.getProId()); + chargingStandardService.remove(wqq); + } + } + return AjaxResult.success("閫�璐规垚鍔�"); + } + return AjaxResult.error(); + } +} diff --git a/ltkj-admin/src/main/resources/application.yml b/ltkj-admin/src/main/resources/application.yml index ce03beb..977bc19 100644 --- a/ltkj-admin/src/main/resources/application.yml +++ b/ltkj-admin/src/main/resources/application.yml @@ -124,10 +124,14 @@ header: Authorization # 浠ょ墝瀵嗛挜 secret: xaltjdkjyxgs_sjh&1987 + + secret_key: ltkj_xaltjdkjsjh # 浠ょ墝鏈夋晥鏈燂紙榛樿30鍒嗛挓锛� expireTime: 180 # 鏄惁鍏佽璐︽埛澶氱粓绔悓鏃剁櫥褰曪紙true鍏佽 false涓嶅厑璁革級 soloLogin: true + #鏄惁寮�鍚櫥褰曟椂鍒ゆ柇鍟嗘埛绉橀挜鏄惁杩囨湡 + secret_key_login: true # MyBatis Plus閰嶇疆 mybatis-plus: diff --git a/ltkj-admin/src/test/java/zjhTest.java b/ltkj-admin/src/test/java/zjhTest.java index b5caa2e..dd3150e 100644 --- a/ltkj-admin/src/test/java/zjhTest.java +++ b/ltkj-admin/src/test/java/zjhTest.java @@ -1,11 +1,15 @@ +import cn.hutool.core.date.DateUtil; import com.ltkj.LtkjApplication; import com.ltkj.common.core.redis.RedisCache; +import com.ltkj.common.utils.SecurityUtils; +import com.ltkj.hosp.domain.DictHosp; import com.ltkj.hosp.service.*; import lombok.extern.slf4j.Slf4j; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; @@ -14,6 +18,8 @@ import org.springframework.test.context.junit4.SpringRunner; import javax.annotation.Resource; +import java.util.Date; +import java.util.List; /** @@ -25,31 +31,39 @@ @Slf4j @EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class}) public class zjhTest { - - @Autowired - private ITjGroupingProService groupingProService; - @Autowired - private ITjProjectService projectService; - - @Resource - private ITjOrderService tjOrderService; - @Resource - private ITjOrderDetailService tjOrderDetailService; - @Resource - private ITjOrderRemarkService remarkService; - - @Resource - private RedisCache redisCache; - - @Autowired - public RedisTemplate<String,String> redisTemplate; - @Resource - private StringRedisTemplate stringRedisTemplate; - +// +// @Autowired +// private ITjGroupingProService groupingProService; +// @Autowired +// private ITjProjectService projectService; +// +// @Resource +// private ITjOrderService tjOrderService; +// @Resource +// private ITjOrderDetailService tjOrderDetailService; +// @Resource +// private ITjOrderRemarkService remarkService; +// +// @Resource +// private RedisCache redisCache; +// +// @Autowired +// public RedisTemplate<String,String> redisTemplate; +// @Resource +// private StringRedisTemplate stringRedisTemplate; +@Resource +private IDictHospService dictHospService; + @Value("${token.secret_key}") + private String secret; @Test public void test() { -// redisCache.setCacheObject("璧典匠璞�","hahahahaha"); -// log.info("鍢垮樋!!!"); +// List<DictHosp> list = dictHospService.list(); +// for (DictHosp dictHosp : list) { +// String mallMerchantSecretKey = SecurityUtils.getMallMerchantSecretKey(secret,dictHosp.getHospAreaId(),dictHosp.getAreaid(), dictHosp.getExpirationTime()); +// dictHosp.setSecretKey(mallMerchantSecretKey); +// dictHosp.setExpirationTime(DateUtil.offsetDay(new Date(),30)); +// dictHospService.updateById(dictHosp); +// } } diff --git a/ltkj-common/src/main/java/com/ltkj/common/core/domain/model/LoginUser.java b/ltkj-common/src/main/java/com/ltkj/common/core/domain/model/LoginUser.java index 2cd01af..67e2b2f 100644 --- a/ltkj-common/src/main/java/com/ltkj/common/core/domain/model/LoginUser.java +++ b/ltkj-common/src/main/java/com/ltkj/common/core/domain/model/LoginUser.java @@ -77,6 +77,8 @@ */ private SysUser user; + private String message; + /* */ /** @@ -96,6 +98,16 @@ { this.wxUser = wxUser; }*/ + + public String getMessage() + { + return message; + } + + public void setMessage(String message) + { + this.message = message; + } public Long getDeptId() { return deptId; } diff --git a/ltkj-common/src/main/java/com/ltkj/common/exception/CustomException.java b/ltkj-common/src/main/java/com/ltkj/common/exception/CustomException.java new file mode 100644 index 0000000..2d6cc58 --- /dev/null +++ b/ltkj-common/src/main/java/com/ltkj/common/exception/CustomException.java @@ -0,0 +1,41 @@ +package com.ltkj.common.exception; + +/** + * 鑷畾涔夊紓甯� + */ +public class CustomException extends RuntimeException +{ + private static final long serialVersionUID = 1L; + + private Integer code; + + private String message; + + public CustomException(String message) + { + this.message = message; + } + + public CustomException(String message, Integer code) + { + this.message = message; + this.code = code; + } + + public CustomException(String message, Throwable e) + { + super(message, e); + this.message = message; + } + + @Override + public String getMessage() + { + return message; + } + + public Integer getCode() + { + return code; + } +} diff --git a/ltkj-common/src/main/java/com/ltkj/common/exception/user/SecretKeyException.java b/ltkj-common/src/main/java/com/ltkj/common/exception/user/SecretKeyException.java new file mode 100644 index 0000000..ade41bb --- /dev/null +++ b/ltkj-common/src/main/java/com/ltkj/common/exception/user/SecretKeyException.java @@ -0,0 +1,43 @@ +package com.ltkj.common.exception.user; + +/** + * @Company: 瑗垮畨璺嘲绉戞妧鏈夐檺鍏徃 + * @Author: zjh + * @Date: 2023/10/8 14:00 + */ +public class SecretKeyException extends RuntimeException{ + + private static final long serialVersionUID = 1L; + + private Integer code; + + private String message; + + public SecretKeyException(String message) + { + this.message = message; + } + + public SecretKeyException(String message, Integer code) + { + this.message = message; + this.code = code; + } + + public SecretKeyException(String message, Throwable e) + { + super(message, e); + this.message = message; + } + + @Override + public String getMessage() + { + return message; + } + + public Integer getCode() + { + return code; + } +} diff --git a/ltkj-common/src/main/java/com/ltkj/common/utils/SecurityUtils.java b/ltkj-common/src/main/java/com/ltkj/common/utils/SecurityUtils.java index 6770a39..d1c34ea 100644 --- a/ltkj-common/src/main/java/com/ltkj/common/utils/SecurityUtils.java +++ b/ltkj-common/src/main/java/com/ltkj/common/utils/SecurityUtils.java @@ -1,11 +1,17 @@ package com.ltkj.common.utils; +import cn.hutool.core.date.DateUtil; +import cn.hutool.crypto.SecureUtil; +import cn.hutool.crypto.symmetric.SymmetricAlgorithm; +import cn.hutool.crypto.symmetric.SymmetricCrypto; import com.ltkj.common.constant.HttpStatus; import com.ltkj.common.exception.ServiceException; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import com.ltkj.common.core.domain.model.LoginUser; + +import java.util.Date; /** * 瀹夊叏鏈嶅姟宸ュ叿绫� @@ -96,4 +102,28 @@ public static boolean isAdmin(Long userId) { return userId != null && 1L == userId; } + + public static String getMallMerchantSecretKey(String secret,String certificateNumber, String number, Date date) { + String secrets = SecureUtil.md5(secret); + String certificateNumbers = SecureUtil.md5(certificateNumber); + String taxNumber = SecureUtil.md5(number); + String expirationTime = SecureUtil.md5(DateUtil.format(DateUtil.endOfDay(date),"yyyy-MM-dd HH:mm:ss")); + //闅忔満鐢熸垚瀵嗛挜 + SymmetricCrypto aes = new SymmetricCrypto(SymmetricAlgorithm.AES, secret.getBytes()); + return aes.encryptHex(secrets+certificateNumbers+taxNumber+expirationTime); + } + + public static boolean matchesMallMerchantSecretKey(String secret,String certificateNumber, String number, Date date,String ordSecretKey) { + String secrets = SecureUtil.md5(secret); + String certificateNumbers = SecureUtil.md5(certificateNumber); + String taxNumber = SecureUtil.md5(number); + String expirationTime = SecureUtil.md5(DateUtil.format(DateUtil.endOfDay(date),"yyyy-MM-dd HH:mm:ss")); + SymmetricCrypto aes = new SymmetricCrypto(SymmetricAlgorithm.AES, secret.getBytes()); + String encryptHex = aes.encryptHex(secrets+certificateNumbers+taxNumber+expirationTime); + + if(encryptHex.equals(ordSecretKey)){ + return true; + } + return false; + } } diff --git a/ltkj-framework/src/main/java/com/ltkj/framework/web/service/SysLoginService.java b/ltkj-framework/src/main/java/com/ltkj/framework/web/service/SysLoginService.java index 3ff7c18..171dd14 100644 --- a/ltkj-framework/src/main/java/com/ltkj/framework/web/service/SysLoginService.java +++ b/ltkj-framework/src/main/java/com/ltkj/framework/web/service/SysLoginService.java @@ -2,16 +2,24 @@ import javax.annotation.Resource; +import cn.hutool.core.date.DateUnit; +import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ltkj.common.constant.CacheConstants; +import com.ltkj.common.core.domain.entity.SysDept; +import com.ltkj.common.exception.CustomException; import com.ltkj.common.exception.user.CaptchaException; import com.ltkj.common.exception.user.CaptchaExpireException; +import com.ltkj.common.exception.user.SecretKeyException; import com.ltkj.common.utils.*; import com.ltkj.common.utils.sign.RsaUtils; import com.ltkj.framework.config.JwtUtils; import com.ltkj.framework.config.UserHoder; +import com.ltkj.hosp.domain.DictHosp; import com.ltkj.hosp.domain.TjCustomer; +import com.ltkj.hosp.service.IDictHospService; import com.ltkj.hosp.service.ITjCustomerService; +import com.ltkj.system.service.ISysDeptService; import com.ltkj.system.service.ISysMenuService; import com.ltkj.system.service.SysParametersDisposeService; import org.springframework.beans.factory.annotation.Autowired; @@ -33,6 +41,7 @@ import com.ltkj.framework.security.context.AuthenticationContextHolder; import com.ltkj.system.service.ISysUserService; +import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -60,13 +69,22 @@ @Resource private ISysMenuService menuService; - + @Resource + private IDictHospService hospService; + @Autowired + private ISysDeptService deptService; @Autowired private SysParametersDisposeService parametersDisposeService; // 鏄惁鍏佽璐︽埛澶氱粓绔悓鏃剁櫥褰曪紙true鍏佽 false涓嶅厑璁革級 @Value("${token.soloLogin}") private boolean soloLogin; + + @Value("${token.secret_key}") + private String secret; + + @Value("${token.secret_key_login}") + private boolean secretKeyLogin; /** @@ -116,6 +134,41 @@ LoginUser loginUser = (LoginUser) authentication.getPrincipal(); recordLoginInfo(Long.valueOf(loginUser.getUserId())); + //鏍¢獙鍟嗗杩囨湡鍚� + if (secretKeyLogin) + { + Long userId =loginUser.getUser().getUserId(); + SysUser user = userService.getById(userId); + if(null !=user && null !=user.getDeptId()){ +// loginUser.getUser().setOrgId(user.getOrgId()); + if(!SecurityUtils.isAdmin(user.getUserId())){ + SysDept sysDept = deptService.getById(user.getDeptId()); + if (null != sysDept) { + DictHosp dictHosp = hospService.getById(sysDept.getHospId()); + if(null !=dictHosp && dictHosp.getSecretKey() !=null && dictHosp.getExpirationTime() !=null){ + if (!SecurityUtils.matchesMallMerchantSecretKey(secret,dictHosp.getHospAreaId(),dictHosp.getAreaid(), + dictHosp.getExpirationTime(),dictHosp.getSecretKey())) { + throw new SecretKeyException("鍟嗗宸茶繃鏈熻缁垂浣跨敤"); + } + long between = DateUtil.between(new Date(), DateUtil.endOfDay(dictHosp.getExpirationTime()), DateUnit.DAY); + if(between<=30){ + loginUser.setMessage("杩樻湁 "+between+" 澶╁埌鏈� 璇锋敞鎰忕画璐�! 浠ュ厤褰卞搷姝e父浣跨敤!"); + }else { + loginUser.setMessage(null); + } + + }else { + throw new SecretKeyException("璇风即璐逛娇鐢�"); + } + } + } + + }else { + throw new CustomException("璇风粦瀹氬晢瀹�"); + } + + } + // 闄愬埗璐︽埛涓嶅厑璁稿缁堢鐧诲綍 if (!soloLogin) { // 濡傛灉鐢ㄦ埛涓嶅厑璁稿缁堢鍚屾椂鐧诲綍锛屾竻闄ょ紦瀛樹俊鎭� diff --git a/ltkj-hosp/src/main/java/com/ltkj/hosp/domain/DictHosp.java b/ltkj-hosp/src/main/java/com/ltkj/hosp/domain/DictHosp.java index 70f801b..e56879b 100644 --- a/ltkj-hosp/src/main/java/com/ltkj/hosp/domain/DictHosp.java +++ b/ltkj-hosp/src/main/java/com/ltkj/hosp/domain/DictHosp.java @@ -167,6 +167,12 @@ @ApiModelProperty(value = "鍥剧墖") private String imgbase64; + //绉橀挜 + private String secretKey; + //鍒版湡鏃堕棿 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date expirationTime; + @Override public String toString() { diff --git a/ltkj-hosp/src/main/java/com/ltkj/hosp/domain/TjFlowingWater.java b/ltkj-hosp/src/main/java/com/ltkj/hosp/domain/TjFlowingWater.java index 48ad88a..8d95662 100644 --- a/ltkj-hosp/src/main/java/com/ltkj/hosp/domain/TjFlowingWater.java +++ b/ltkj-hosp/src/main/java/com/ltkj/hosp/domain/TjFlowingWater.java @@ -165,6 +165,8 @@ @ApiModelProperty(value = "鏄惁缁撹处") private String isCheckout; + private String remarks; + @Override public String toString() { diff --git a/ltkj-hosp/src/main/java/com/ltkj/hosp/mapper/TjOrderMapper.java b/ltkj-hosp/src/main/java/com/ltkj/hosp/mapper/TjOrderMapper.java index e8afa31..a3a5d06 100644 --- a/ltkj-hosp/src/main/java/com/ltkj/hosp/mapper/TjOrderMapper.java +++ b/ltkj-hosp/src/main/java/com/ltkj/hosp/mapper/TjOrderMapper.java @@ -75,7 +75,8 @@ public int deleteTjOrderByOrderIds(Long[] orderIds); - List<TjOrder> getOrderList(Integer cusId); + @Select(" select * from tj_order where 1 = 1 and deleted=0 and user_id = #{cusId}") + List<TjOrder> getOrderList(Long cusId); List<TjOrder> getOrderList1(); diff --git a/ltkj-hosp/src/main/java/com/ltkj/hosp/service/ITjOrderService.java b/ltkj-hosp/src/main/java/com/ltkj/hosp/service/ITjOrderService.java index 7c85d23..d254c98 100644 --- a/ltkj-hosp/src/main/java/com/ltkj/hosp/service/ITjOrderService.java +++ b/ltkj-hosp/src/main/java/com/ltkj/hosp/service/ITjOrderService.java @@ -77,7 +77,7 @@ * @param cusId * @return */ - public List<TjOrder> getOrderList(Integer cusId); + public List<TjOrder> getOrderList(Long cusId); public List<TjOrder> getOrderList1(); diff --git a/ltkj-hosp/src/main/java/com/ltkj/hosp/service/impl/TjOrderServiceImpl.java b/ltkj-hosp/src/main/java/com/ltkj/hosp/service/impl/TjOrderServiceImpl.java index 306255a..0385e19 100644 --- a/ltkj-hosp/src/main/java/com/ltkj/hosp/service/impl/TjOrderServiceImpl.java +++ b/ltkj-hosp/src/main/java/com/ltkj/hosp/service/impl/TjOrderServiceImpl.java @@ -143,7 +143,7 @@ } @Override - public List<TjOrder> getOrderList(Integer cusId) { + public List<TjOrder> getOrderList(Long cusId) { return tjOrderMapper.getOrderList(cusId); } diff --git a/ltkj-hosp/src/main/java/com/ltkj/hosp/vodomain/NewFlowingWaterVo.java b/ltkj-hosp/src/main/java/com/ltkj/hosp/vodomain/NewFlowingWaterVo.java new file mode 100644 index 0000000..897dc6a --- /dev/null +++ b/ltkj-hosp/src/main/java/com/ltkj/hosp/vodomain/NewFlowingWaterVo.java @@ -0,0 +1,42 @@ +package com.ltkj.hosp.vodomain; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @Company: 瑗垮畨璺嘲绉戞妧鏈夐檺鍏徃 + * @Author: zjh + * @Date: 2023/10/12 09:49 + */ + +@Data +public class NewFlowingWaterVo { + + + //濮撳悕 + private String name; + + //鎵嬫満鍙� + private String phone; + + //浣撴椤圭洰 + private String tjPro; + + //鏁伴噺 + private String number; + + //搴旀敹 + private BigDecimal ys; + + //鎶樻墸 + private String zk; + + //瀹炴敹 + private BigDecimal ss; + + //浠樻绫诲瀷 + private String type; + +} diff --git a/ltkj-hosp/src/main/resources/mapper/hosp/TjOrderMapper.xml b/ltkj-hosp/src/main/resources/mapper/hosp/TjOrderMapper.xml index 9b63472..ce187ce 100644 --- a/ltkj-hosp/src/main/resources/mapper/hosp/TjOrderMapper.xml +++ b/ltkj-hosp/src/main/resources/mapper/hosp/TjOrderMapper.xml @@ -281,7 +281,7 @@ </delete> - <select id="getOrderList" parameterType="Integer" resultMap="TjOrderResult"> + <select id="getOrderList" parameterType="java.lang.Long" resultMap="TjOrderResult"> select * from tj_order where 1 = 1 -- Gitblit v1.8.0