From 656831880635a4077944a6708cc336cdbcfc2c69 Mon Sep 17 00:00:00 2001 From: liuyingfang <1357764963@qq.com> Date: Wed, 13 Mar 2024 10:57:00 +0800 Subject: [PATCH] =?UTF-8?q?=E6=97=A5=E5=BF=97=E5=A2=9E=E5=8A=A0shopId?= =?UTF-8?q?=EF=BC=8C=E6=94=B9=E5=8A=A8=E6=89=93=E5=8D=B0=E6=9C=BA=EF=BC=8C?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=B3=A8=E5=86=8C=E6=97=B6=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E5=9B=9B=E7=A7=8D=E6=94=AF=E4=BB=98=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/ysk/cashier/aspect/LogAspect.java | 41 ++++++++-- .../main/java/cn/ysk/cashier/domain/Log.java | 2 + .../cn/ysk/cashier/service/LogService.java | 2 +- .../cashier/service/impl/LogServiceImpl.java | 3 +- .../rest/AuthorizationController.java | 4 +- .../security/service/OnlineUserService.java | 4 +- .../security/service/dto/OnlineUserDto.java | 80 ++++++++++++++++++- .../shop/TbShopCurrencyController.java | 5 -- .../dto/shop/TbPrintMachineQueryCriteria.java | 2 +- .../repository/TbShopPayTypeRepository.java | 40 ++++++++++ .../impl/shopimpl/TbShopInfoServiceImpl.java | 15 ++-- 11 files changed, 173 insertions(+), 25 deletions(-) diff --git a/eladmin-logging/src/main/java/cn/ysk/cashier/aspect/LogAspect.java b/eladmin-logging/src/main/java/cn/ysk/cashier/aspect/LogAspect.java index 043e3b4c..5d0446e7 100644 --- a/eladmin-logging/src/main/java/cn/ysk/cashier/aspect/LogAspect.java +++ b/eladmin-logging/src/main/java/cn/ysk/cashier/aspect/LogAspect.java @@ -17,10 +17,10 @@ package cn.ysk.cashier.aspect; import cn.ysk.cashier.domain.Log; import cn.ysk.cashier.service.LogService; -import cn.ysk.cashier.utils.RequestHolder; -import cn.ysk.cashier.utils.SecurityUtils; -import cn.ysk.cashier.utils.StringUtils; -import cn.ysk.cashier.utils.ThrowableUtil; +import cn.ysk.cashier.utils.*; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.ProceedingJoinPoint; @@ -28,6 +28,8 @@ import org.aspectj.lang.annotation.AfterThrowing; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Pointcut; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; import javax.servlet.http.HttpServletRequest; @@ -41,6 +43,9 @@ import javax.servlet.http.HttpServletRequest; public class LogAspect { private final LogService logService; + @Lazy + @Autowired + private RedisUtils redisUtils; ThreadLocal currentTime = new ThreadLocal<>(); @@ -69,7 +74,16 @@ public class LogAspect { Log log = new Log("INFO",System.currentTimeMillis() - currentTime.get()); currentTime.remove(); HttpServletRequest request = RequestHolder.getHttpServletRequest(); - logService.save(getUsername(), StringUtils.getBrowser(request), StringUtils.getIp(request),joinPoint, log); + + Object o = redisUtils.get("online-token-"+getToken(request)); + JSONObject jsonObject = null; + Integer shopId = null; + if (o!= null){ + String jsonString = JSON.toJSONString(o); + jsonObject = JSONObject.parseObject(jsonString); + shopId = (Integer)jsonObject.get("shopId"); + } + logService.save(getUsername(), StringUtils.getBrowser(request), StringUtils.getIp(request),joinPoint, log, shopId); return result; } @@ -85,7 +99,15 @@ public class LogAspect { currentTime.remove(); log.setExceptionDetail(ThrowableUtil.getStackTrace(e).getBytes()); HttpServletRequest request = RequestHolder.getHttpServletRequest(); - logService.save(getUsername(), StringUtils.getBrowser(request), StringUtils.getIp(request), (ProceedingJoinPoint)joinPoint, log); + Object o = redisUtils.get("online-token-"+getToken(request)); + JSONObject jsonObject = null; + Integer shopId = null; + if (o!= null){ + String jsonString = JSON.toJSONString(o); + jsonObject = JSONObject.parseObject(jsonString); + shopId = (Integer)jsonObject.get("shopId"); + } + logService.save(getUsername(), StringUtils.getBrowser(request), StringUtils.getIp(request), (ProceedingJoinPoint)joinPoint, log, shopId); } public String getUsername() { @@ -95,4 +117,11 @@ public class LogAspect { return ""; } } + public String getToken(HttpServletRequest request) { + final String requestHeader = request.getHeader("Authorization"); + if (requestHeader != null && requestHeader.startsWith("Bearer")) { + return requestHeader.substring(7); + } + return null; + } } diff --git a/eladmin-logging/src/main/java/cn/ysk/cashier/domain/Log.java b/eladmin-logging/src/main/java/cn/ysk/cashier/domain/Log.java index 80f09e8e..b63a11c6 100644 --- a/eladmin-logging/src/main/java/cn/ysk/cashier/domain/Log.java +++ b/eladmin-logging/src/main/java/cn/ysk/cashier/domain/Log.java @@ -69,6 +69,8 @@ public class Log implements Serializable { /** 异常详细 */ private byte[] exceptionDetail; + private Integer shopId; + /** 创建日期 */ @CreationTimestamp private Timestamp createTime; diff --git a/eladmin-logging/src/main/java/cn/ysk/cashier/service/LogService.java b/eladmin-logging/src/main/java/cn/ysk/cashier/service/LogService.java index 62305f69..7e083fa8 100644 --- a/eladmin-logging/src/main/java/cn/ysk/cashier/service/LogService.java +++ b/eladmin-logging/src/main/java/cn/ysk/cashier/service/LogService.java @@ -63,7 +63,7 @@ public interface LogService { * @param log 日志实体 */ @Async - void save(String username, String browser, String ip, ProceedingJoinPoint joinPoint, Log log); + void save(String username, String browser, String ip, ProceedingJoinPoint joinPoint, Log log,Integer shopId); /** * 查询异常详情 diff --git a/eladmin-logging/src/main/java/cn/ysk/cashier/service/impl/LogServiceImpl.java b/eladmin-logging/src/main/java/cn/ysk/cashier/service/impl/LogServiceImpl.java index aa62b09a..8a5f0c8c 100644 --- a/eladmin-logging/src/main/java/cn/ysk/cashier/service/impl/LogServiceImpl.java +++ b/eladmin-logging/src/main/java/cn/ysk/cashier/service/impl/LogServiceImpl.java @@ -77,7 +77,7 @@ public class LogServiceImpl implements LogService { @Override @Transactional(rollbackFor = Exception.class) - public void save(String username, String browser, String ip, ProceedingJoinPoint joinPoint, Log log) { + public void save(String username, String browser, String ip, ProceedingJoinPoint joinPoint, Log log,Integer shopId) { if (log == null) { throw new IllegalArgumentException("Log 不能为 null!"); } @@ -103,6 +103,7 @@ public class LogServiceImpl implements LogService { log.setParams(JSONUtil.toJsonStr(Dict.create().set("username", log.getUsername()))); } log.setBrowser(browser); + log.setShopId(shopId); logRepository.save(log); } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/config/security/rest/AuthorizationController.java b/eladmin-system/src/main/java/cn/ysk/cashier/config/security/rest/AuthorizationController.java index a0b9e733..803559a5 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/config/security/rest/AuthorizationController.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/config/security/rest/AuthorizationController.java @@ -113,7 +113,7 @@ public class AuthorizationController { }}; // 保存在线信息 - onlineUserService.save(jwtUserDto, token, request); + onlineUserService.save(jwtUserDto, token, request,byAccount.getId()); if (loginProperties.isSingleLogin()) { //踢掉之前已经登录的token @@ -142,7 +142,7 @@ public class AuthorizationController { String token = tokenProvider.createToken(authentication); final JwtUserDto jwtUserDto = (JwtUserDto) authentication.getPrincipal(); // 保存在线信息 - onlineUserService.save(jwtUserDto, token,request); + onlineUserService.save(jwtUserDto, token,request,null); // 返回 token 与 用户信息 TbShopInfo byAccount = tbShopInfoRepository.findByAccount(jwtUserDto.getUsername()); Map authInfo = new HashMap(2) {{ diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/config/security/service/OnlineUserService.java b/eladmin-system/src/main/java/cn/ysk/cashier/config/security/service/OnlineUserService.java index 4ba914f6..729e50e3 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/config/security/service/OnlineUserService.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/config/security/service/OnlineUserService.java @@ -50,14 +50,14 @@ public class OnlineUserService { * @param token / * @param request / */ - public void save(JwtUserDto jwtUserDto, String token, HttpServletRequest request){ + public void save(JwtUserDto jwtUserDto, String token, HttpServletRequest request,Integer shopId){ String dept = jwtUserDto.getUser().getDept().getName(); String ip = StringUtils.getIp(request); String browser = StringUtils.getBrowser(request); String address = StringUtils.getCityInfo(ip); OnlineUserDto onlineUserDto = null; try { - onlineUserDto = new OnlineUserDto(jwtUserDto.getUsername(), jwtUserDto.getUser().getNickName(), dept, browser , ip, address, EncryptUtils.desEncrypt(token), new Date()); + onlineUserDto = new OnlineUserDto(shopId,jwtUserDto.getUsername(), jwtUserDto.getUser().getNickName(), dept, browser , ip, address, EncryptUtils.desEncrypt(token), new Date()); } catch (Exception e) { log.error(e.getMessage(),e); } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/config/security/service/dto/OnlineUserDto.java b/eladmin-system/src/main/java/cn/ysk/cashier/config/security/service/dto/OnlineUserDto.java index 6b29a1d0..2332ebaa 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/config/security/service/dto/OnlineUserDto.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/config/security/service/dto/OnlineUserDto.java @@ -24,10 +24,13 @@ import java.util.Date; * 在线用户 * @author Zheng Jie */ -@Data @AllArgsConstructor @NoArgsConstructor public class OnlineUserDto { + /** + * shopId + */ + private Integer shopId; /** * 用户名 @@ -69,5 +72,80 @@ public class OnlineUserDto { */ private Date loginTime; + public Integer getShopId() { + return shopId; + } + public void setShopId(Integer shopId) { + this.shopId = shopId; + } + + public String getUserName() { + return userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } + + public String getNickName() { + return nickName; + } + + public void setNickName(String nickName) { + this.nickName = nickName; + } + + public String getDept() { + return dept; + } + + public void setDept(String dept) { + this.dept = dept; + } + + public String getBrowser() { + return browser; + } + + public void setBrowser(String browser) { + this.browser = browser; + } + + public String getIp() { + return ip; + } + + public void setIp(String ip) { + this.ip = ip; + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public String getKey() { + return key; + } + + public void setKey(String key) { + this.key = key; + } + + public Date getLoginTime() { + return loginTime; + } + + public void setLoginTime(Date loginTime) { + this.loginTime = loginTime; + } + +// @Override +// public String toString() { +// return +// } } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/controller/shop/TbShopCurrencyController.java b/eladmin-system/src/main/java/cn/ysk/cashier/controller/shop/TbShopCurrencyController.java index 862f1987..8fb2819d 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/controller/shop/TbShopCurrencyController.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/controller/shop/TbShopCurrencyController.java @@ -54,7 +54,6 @@ public class TbShopCurrencyController { @GetMapping @Log("查询/shop/currency") @ApiOperation("查询/shop/currency") - @PreAuthorize("@el.check('tbShopCurrency:list')") public ResponseEntity queryTbShopCurrency(TbShopCurrencyQueryCriteria criteria, Pageable pageable){ return new ResponseEntity<>(tbShopCurrencyService.queryAll(criteria,pageable),HttpStatus.OK); } @@ -62,7 +61,6 @@ public class TbShopCurrencyController { @GetMapping("/{shopId}") @Log("查询/shop/currency/info") @ApiOperation("查询/shop/currency/info") - @PreAuthorize("@el.check('tbShopCurrency:info')") public Object queryTbShopCurrencyInfo(@PathVariable("shopId") String shopId){ return tbShopCurrencyService.findByShopId(shopId); } @@ -70,7 +68,6 @@ public class TbShopCurrencyController { @PostMapping @Log("新增/shop/currency") @ApiOperation("新增/shop/currency") - @PreAuthorize("@el.check('tbShopCurrency:add')") public ResponseEntity createTbShopCurrency(@Validated @RequestBody TbShopCurrency resources){ return new ResponseEntity<>(tbShopCurrencyService.create(resources),HttpStatus.CREATED); } @@ -78,7 +75,6 @@ public class TbShopCurrencyController { @PutMapping @Log("修改/shop/currency") @ApiOperation("修改/shop/currency") - @PreAuthorize("@el.check('tbShopCurrency:edit')") public ResponseEntity updateTbShopCurrency(@Validated @RequestBody TbShopCurrency resources){ tbShopCurrencyService.update(resources); return new ResponseEntity<>(HttpStatus.NO_CONTENT); @@ -87,7 +83,6 @@ public class TbShopCurrencyController { @DeleteMapping @Log("删除/shop/currency") @ApiOperation("删除/shop/currency") - @PreAuthorize("@el.check('tbShopCurrency:del')") public ResponseEntity deleteTbShopCurrency(@RequestBody Integer[] ids) { tbShopCurrencyService.deleteAll(ids); return new ResponseEntity<>(HttpStatus.OK); diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shop/TbPrintMachineQueryCriteria.java b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shop/TbPrintMachineQueryCriteria.java index 8f84e5aa..e57909dd 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shop/TbPrintMachineQueryCriteria.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shop/TbPrintMachineQueryCriteria.java @@ -32,7 +32,7 @@ public class TbPrintMachineQueryCriteria{ /** 精确 */ @Query - private String type; + private String contentType; @Query private String shopId; diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/repository/TbShopPayTypeRepository.java b/eladmin-system/src/main/java/cn/ysk/cashier/repository/TbShopPayTypeRepository.java index 68a63973..b7e8f857 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/repository/TbShopPayTypeRepository.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/repository/TbShopPayTypeRepository.java @@ -18,6 +18,9 @@ package cn.ysk.cashier.repository; import cn.ysk.cashier.pojo.TbShopPayType; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; /** * @website https://eladmin.vip @@ -25,4 +28,41 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor; * @date 2023-11-03 **/ public interface TbShopPayTypeRepository extends JpaRepository, JpaSpecificationExecutor { + @Modifying + @Query(value = "INSERT INTO `tb_shop_pay_type` ( shop_id, `pay_type`, `pay_name`, `is_show_shortcut`, `is_refundable`, `is_open_cash_drawer`, `is_system`, `is_ideal`, `is_display`, `icon` )\n" + + "VALUES\n" + + "\t( :shopId, 'cash', '现金', 1, 0, 1, 0, 1, 1, 'https://cashier-oss.oss-cn-beijing.aliyuncs.com/upload/20240302/2dab947729d640fba7709b7c0b42bfef.png' ),(\n" + + "\t\t:shopId,\n" + + "\t\t'bank',\n" + + "\t\t'银行卡',\n" + + "\t\t1,\n" + + "\t\t0,\n" + + "\t\t1,\n" + + "\t\t0,\n" + + "\t\t1,\n" + + "\t\t1,\n" + + "\t\t'https://cashier-oss.oss-cn-beijing.aliyuncs.com/upload/20240302/14b20cf721304b7fa2f01e6e75fab403.png' \n" + + "\t\t),(:shopId,\n" + + "\t\t'scanCode',\n" + + "\t\t'扫码支付',\n" + + "\t\t1,\n" + + "\t\t0,\n" + + "\t\t1,\n" + + "\t\t0,\n" + + "\t\t1,\n" + + "\t\t1,\n" + + "\t\t'https://cashier-oss.oss-cn-beijing.aliyuncs.com/upload/20240302/9ff08224680446c8b3978844da99bbaa.png' \n" + + "\t\t),(:shopId,\n" + + "\t\t'deposit',\n" + + "\t\t'储值卡',\n" + + "\t\t1,\n" + + "\t\t0,\n" + + "\t\t1,\n" + + "\t\t0,\n" + + "\t\t1,\n" + + "\t\t1,\n" + + "\t'https://cashier-oss.oss-cn-beijing.aliyuncs.com/upload/20240302/18d40f471a924d55b4eb13e5f553734d.png' \n" + + "\t)",nativeQuery = true) + Integer creatPayType(@Param("shopId") String shopId); + } \ No newline at end of file diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopInfoServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopInfoServiceImpl.java index 9e2f6453..9f8cc73d 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopInfoServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopInfoServiceImpl.java @@ -26,10 +26,8 @@ import cn.ysk.cashier.pojo.shop.TbMerchantAccount; import cn.ysk.cashier.pojo.shop.TbMerchantRegister; import cn.ysk.cashier.pojo.shop.TbPlussShopStaff; import cn.ysk.cashier.pojo.shop.TbShopInfo; -import cn.ysk.cashier.repository.shop.TbMerchantAccountRepository; -import cn.ysk.cashier.repository.shop.TbMerchantRegisterRepository; -import cn.ysk.cashier.repository.shop.TbPlussShopStaffRepository; -import cn.ysk.cashier.repository.shop.TbShopInfoRepository; +import cn.ysk.cashier.repository.TbShopPayTypeRepository; +import cn.ysk.cashier.repository.shop.*; import cn.ysk.cashier.service.shop.TbShopInfoService; import cn.ysk.cashier.system.domain.Dept; import cn.ysk.cashier.system.domain.Job; @@ -85,6 +83,8 @@ public class TbShopInfoServiceImpl implements TbShopInfoService { private final RedisUtils redisUtils; + private final TbShopPayTypeRepository tbShopPayTypeRepository; + @Override public Map queryAll(TbShopInfoQueryCriteria criteria){ Sort sort = Sort.by(Sort.Direction.DESC, "id"); @@ -215,8 +215,11 @@ public class TbShopInfoServiceImpl implements TbShopInfoService { tbPlussShopStaff.setUpdatedAt(Instant.now().toEpochMilli()); tbPlussShopStaff.setCode(save.getPhone()); shopStaffRepository.save(tbPlussShopStaff); - - + //增加默认支付方式 + Integer integer = tbShopPayTypeRepository.creatPayType(save.getId().toString()); + if (integer<4){ + throw new BadRequestException("请重试"); + } return tbShopInfoMapper.toDto(new TbShopInfo()); }