Browse Source

后端整合模块

detached
huangqizhen 5 months ago
parent
commit
3939b5b650
  1. 16
      src/main/java/com/example/demo/controller/AuditController.java
  2. 12
      src/main/java/com/example/demo/controller/RefundController.java
  3. 2
      src/main/java/com/example/demo/domain/entity/Admin.java
  4. 3
      src/main/java/com/example/demo/domain/vo/ConsumeDetail.java
  5. 2
      src/main/java/com/example/demo/mapper/AuditMapper.java
  6. 2
      src/main/java/com/example/demo/mapper/RefundMapper.java
  7. 2
      src/main/java/com/example/demo/mapper/UserMapper.java
  8. 8
      src/main/java/com/example/demo/security/TokenFilter.java
  9. 8
      src/main/java/com/example/demo/serviceImpl/AuditServiceImpl.java
  10. 3
      src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java
  11. 17
      src/main/java/com/example/demo/serviceImpl/RefundServiceImpl.java
  12. 4
      src/main/resources/application.yml

16
src/main/java/com/example/demo/controller/AuditController.java

@ -11,6 +11,7 @@ import com.example.demo.mapper.UserMapper;
import com.example.demo.sevice.AuditService; import com.example.demo.sevice.AuditService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -25,7 +26,9 @@ import java.util.Arrays;
@Transactional @Transactional
@CrossOrigin @CrossOrigin
public class AuditController { public class AuditController {
@Autowired
private UserMapper userMapper; private UserMapper userMapper;
@Autowired
private DetailMapper detailMapper; private DetailMapper detailMapper;
private final AuditService auditService; private final AuditService auditService;
@PostMapping("/add") @PostMapping("/add")
@ -41,11 +44,6 @@ public class AuditController {
@PostMapping("/edit") @PostMapping("/edit")
public Result edit(@RequestBody Audit audit){ public Result edit(@RequestBody Audit audit){
//先执行auditService.edit(audit);
//然后创建一个类去接收这个audit如果status=1
//根据退款ID找到detail表中的记录获取到他的三种金币
//把金币加到user表中对应的金币中
auditService.edit(audit); auditService.edit(audit);
if(audit.getStatus() == 1 && audit.getRefundId()!=null){ if(audit.getStatus() == 1 && audit.getRefundId()!=null){
Detail detail = detailMapper.selectByRefundId(audit.getRefundId()); Detail detail = detailMapper.selectByRefundId(audit.getRefundId());
@ -60,14 +58,6 @@ public class AuditController {
userMapper.update(user); userMapper.update(user);
} }
return Result.success(); return Result.success();
//
// try {
// auditService.edit(audit);
// return Result.success();
// }catch (Exception e){
// log.warn(Arrays.toString(e.getStackTrace()));
// return Result.error(e.getMessage());
// }
} }
@PostMapping @PostMapping
public Result search(@RequestBody Page page){ public Result search(@RequestBody Page page){

12
src/main/java/com/example/demo/controller/RefundController.java

@ -7,6 +7,7 @@ import com.example.demo.domain.vo.Result;
import com.example.demo.sevice.RefundService; import com.example.demo.sevice.RefundService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -15,6 +16,7 @@ import java.util.Arrays;
@RestController @RestController
@RequestMapping("/refund") @RequestMapping("/refund")
@RequiredArgsConstructor @RequiredArgsConstructor
@Transactional
@Slf4j @Slf4j
@CrossOrigin @CrossOrigin
public class RefundController { public class RefundController {
@ -89,14 +91,10 @@ public class RefundController {
@PostMapping("/search") @PostMapping("/search")
public Result search(@RequestBody Page page) { public Result search(@RequestBody Page page) {
Integer pageNum = page.getPageNum();
Integer pageSize = page.getPageSize();
Detail detail = page.getDetail();
if (ObjectUtils.isEmpty(detail)) {
return Result.success(refundService.search(detail));
if (ObjectUtils.isEmpty(page.getPageNum())) {
return Result.success(refundService.search(page.getDetail()));
}else{ }else{
return Result.success(refundService.searchForPage(pageNum, pageSize,detail));
return Result.success(refundService.searchForPage(page.getPageNum(), page.getPageSize(),page.getDetail()));
} }
} }
} }

2
src/main/java/com/example/demo/domain/entity/Admin.java

@ -22,7 +22,7 @@ public class Admin implements UserDetails, Serializable {
private Integer permission; private Integer permission;
private String area; private String area;
private String adminFlag; private String adminFlag;
private String token;
@DateTimeFormat(pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd")
private Date createTime; private Date createTime;
private String jwcode; private String jwcode;

3
src/main/java/com/example/demo/domain/vo/ConsumeDetail.java

@ -9,7 +9,7 @@ import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
@Data @Data
@NoArgsConstructor @NoArgsConstructor
public class ConsumeDetail {
public class ConsumeDetail {
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd")
private Integer detailId; private Integer detailId;
@ -40,5 +40,6 @@ public class ConsumeDetail {
private Date endDate; private Date endDate;
private Integer auditId; private Integer auditId;
private String token; private String token;
private Integer refundId;
} }

2
src/main/java/com/example/demo/mapper/AuditMapper.java

@ -51,7 +51,7 @@ public interface AuditMapper {
List<Audit> select(Audit Audit); List<Audit> select(Audit Audit);
@Select({ @Select({
"<script>", "<script>",
"select detail.*,audit.status,audit.reson,audit.audit_id,admin.*,user.name as user from detail",
"select detail.*,audit.status,audit.reson,audit.audit_id,admin.*,audit.refund_id,user.name as user from detail",
"inner join audit on detail.detail_id = audit.refund_id", "inner join audit on detail.detail_id = audit.refund_id",
"inner join `admin` on detail.admin_id = `admin`.admin_id", "inner join `admin` on detail.admin_id = `admin`.admin_id",
"inner join `user` on detail.jwcode = user.jwcode", "inner join `user` on detail.jwcode = user.jwcode",

2
src/main/java/com/example/demo/mapper/RefundMapper.java

@ -87,7 +87,7 @@ public interface RefundMapper {
"<if test='adminArea != null'>AND a.area LIKE CONCAT('%', #{adminArea}, '%')</if>", // admin表字段过滤 "<if test='adminArea != null'>AND a.area LIKE CONCAT('%', #{adminArea}, '%')</if>", // admin表字段过滤
"<if test='adminName != null'>AND a.name LIKE CONCAT('%', #{adminName}, '%')</if>", // admin表字段过滤 "<if test='adminName != null'>AND a.name LIKE CONCAT('%', #{adminName}, '%')</if>", // admin表字段过滤
"<if test='userName != null'>AND u.name LIKE CONCAT('%', #{userName}, '%')</if>", // user表字段过滤 "<if test='userName != null'>AND u.name LIKE CONCAT('%', #{userName}, '%')</if>", // user表字段过滤
"<if test='auditStatus != null'>AND au.status = #{auditStatus}</if>", // audit 表字段过滤
"<if test='auditStatus != null and auditStatus.length>0'>AND au.status = #{auditStatus}</if>", // audit 表字段过滤
"<if test='auditReson != null'>AND au.reson LIKE CONCAT('%', #{auditReson}, '%')</if>", // audit表字段过滤 "<if test='auditReson != null'>AND au.reson LIKE CONCAT('%', #{auditReson}, '%')</if>", // audit表字段过滤
"ORDER BY d.create_time DESC", "ORDER BY d.create_time DESC",
"</script>" "</script>"

2
src/main/java/com/example/demo/mapper/UserMapper.java

@ -83,7 +83,7 @@ public interface UserMapper {
int update(User user); int update(User user);
@Select({ @Select({
"select * from user where jwcode=#{jwode}"
"select * from user where jwcode=#{jwcode}"
}) })
User selectByJwcode(String jwcode);// //去掉免费金币先去6个月再去12月 User selectByJwcode(String jwcode);// //去掉免费金币先去6个月再去12月
// @Update({ // @Update({

8
src/main/java/com/example/demo/security/TokenFilter.java

@ -84,14 +84,6 @@ public class TokenFilter extends OncePerRequestFilter {
throws ServletException, IOException { throws ServletException, IOException {
// 使用RequestWrapper包装原始的HttpServletRequest使其输入流可以被重复读取 // 使用RequestWrapper包装原始的HttpServletRequest使其输入流可以被重复读取
RequestWrapper requestWrapper = new RequestWrapper(request); RequestWrapper requestWrapper = new RequestWrapper(request);
boolean isUploadOrRechargeRequest = requestWrapper.getRequestURI().contains("upload") ;
System.out.println(isUploadOrRechargeRequest);
// 如果是上传请求或添加新的充值请求则跳过令牌检查
if (isUploadOrRechargeRequest) {
filterChain.doFilter(requestWrapper, response);
System.out.println(response+"000000000000");
return;
}
// 确保请求体只被读取一次 // 确保请求体只被读取一次
boolean hasRequestBody = "POST".equals(requestWrapper.getMethod()); boolean hasRequestBody = "POST".equals(requestWrapper.getMethod());
System.out.println(hasRequestBody); System.out.println(hasRequestBody);

8
src/main/java/com/example/demo/serviceImpl/AuditServiceImpl.java

@ -12,7 +12,6 @@ import com.github.pagehelper.PageInfo;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.cache.annotation.CacheConfig; import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.CachePut;
import org.springframework.cache.annotation.Cacheable; import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -25,10 +24,12 @@ import java.util.List;
public class AuditServiceImpl implements AuditService { public class AuditServiceImpl implements AuditService {
private final AuditMapper auditMapper; private final AuditMapper auditMapper;
@CacheEvict(value = {"audit", "recharge"}, allEntries = true)
@Override @Override
public int add(Audit audit) { public int add(Audit audit) {
return auditMapper.insert(audit); return auditMapper.insert(audit);
} }
@CacheEvict(value = {"audit", "recharge"}, allEntries = true) @CacheEvict(value = {"audit", "recharge"}, allEntries = true)
@Override @Override
public int edit(Audit audit) { public int edit(Audit audit) {
@ -51,6 +52,11 @@ public class AuditServiceImpl implements AuditService {
public List<ConsumeDetail> searchForDetail(ConsumeDetail consumeDetail) { public List<ConsumeDetail> searchForDetail(ConsumeDetail consumeDetail) {
return auditMapper.selectCon(consumeDetail); return auditMapper.selectCon(consumeDetail);
} }
//问题:每次更新完数据后,redis依然是老数据,无法实时更新
//解决方案:除了查询操作之外,所有的操纵都要执行删除缓存
@Cacheable(key="#root.method.name + ':'+ #pageNum + '-' + #pageSize + '-' + #consumeDetail.hashCode() ") @Cacheable(key="#root.method.name + ':'+ #pageNum + '-' + #pageSize + '-' + #consumeDetail.hashCode() ")
@Override @Override
public PageInfo<ConsumeDetail> searchForConsumeDetail(Integer pageNum, Integer pageSize, ConsumeDetail consumeDetail) { public PageInfo<ConsumeDetail> searchForConsumeDetail(Integer pageNum, Integer pageSize, ConsumeDetail consumeDetail) {

3
src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java

@ -15,6 +15,7 @@ import com.github.pagehelper.PageInfo;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheConfig; import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.CachePut; import org.springframework.cache.annotation.CachePut;
import org.springframework.cache.annotation.Cacheable; import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -35,7 +36,7 @@ public class ConsumeServiceImpl implements ConsumeService {
ConsumeMapper consumeMapper; ConsumeMapper consumeMapper;
private final UserMapper userMapper; private final UserMapper userMapper;
@CacheEvict(value = "consume", allEntries = true)
@Override @Override
//新增消费记录 //新增消费记录
public int insert(Detail detail) throws Exception { public int insert(Detail detail) throws Exception {

17
src/main/java/com/example/demo/serviceImpl/RefundServiceImpl.java

@ -25,7 +25,7 @@ import java.util.UUID;
public class RefundServiceImpl implements RefundService { public class RefundServiceImpl implements RefundService {
private final RefundMapper refundMapper; private final RefundMapper refundMapper;
@CacheEvict(value = {"refund", "recharge"}, allEntries = true)
@Override @Override
public int add(Detail detail) { public int add(Detail detail) {
// 生成UUID作为订单编号 // 生成UUID作为订单编号
@ -34,14 +34,13 @@ public class RefundServiceImpl implements RefundService {
return refundMapper.insert(detail); return refundMapper.insert(detail);
} }
@Override
@CacheEvict(value = {"refund", "recharge"}, allEntries = true) @Override
public int addAudit(Detail detail) { public int addAudit(Detail detail) {
return refundMapper.insertAudit(detail); return refundMapper.insertAudit(detail);
} }
//自动软删除数据加更新数据 //自动软删除数据加更新数据
@Override
@CacheEvict(value = {"refund", "recharge"}, allEntries = true) @Override
public void edit(Detail newDetail) { public void edit(Detail newDetail) {
// 获取旧的明细记录 // 获取旧的明细记录
Detail oldDetail = refundMapper.selectByDetailId(newDetail.getDetailId()); Detail oldDetail = refundMapper.selectByDetailId(newDetail.getDetailId());
@ -70,31 +69,35 @@ public class RefundServiceImpl implements RefundService {
} }
@Override @Override
public int update(Integer contactId) {
@CacheEvict(value = {"refund", "recharge"}, allEntries = true) public int update(Integer contactId) {
return refundMapper.updateOrderCode(contactId); return refundMapper.updateOrderCode(contactId);
} }
@Cacheable(key="#root.method.name")
@Override @Override
public boolean existsByContactId(Integer contactId) { public boolean existsByContactId(Integer contactId) {
return refundMapper.existsByContactId(contactId); return refundMapper.existsByContactId(contactId);
} }
@CacheEvict(value = "refund",allEntries = true)
@CacheEvict(value = {"refund", "recharge"}, allEntries = true)
@Override @Override
public int softDelete(Integer detailId) { public int softDelete(Integer detailId) {
return refundMapper.update(detailId); return refundMapper.update(detailId);
} }
@Cacheable(key="#root.method.name")
@Override @Override
public Detail selectByOrderCode(String orderCode) { public Detail selectByOrderCode(String orderCode) {
return refundMapper.selectByOrderCode(orderCode); return refundMapper.selectByOrderCode(orderCode);
} }
@Cacheable(key="#root.method.name")
@Override @Override
public Detail selectByJWCODE(String jwcode) { public Detail selectByJWCODE(String jwcode) {
return refundMapper.selectByJWCODE(jwcode); return refundMapper.selectByJWCODE(jwcode);
} }
@Cacheable(key="#root.method.name")
@Override @Override
public Detail selectByDetailId(Integer detailId) { public Detail selectByDetailId(Integer detailId) {
return refundMapper.selectByDetailId(detailId); return refundMapper.selectByDetailId(detailId);
@ -107,7 +110,7 @@ public class RefundServiceImpl implements RefundService {
} }
@Cacheable(key="#root.method.name + ':'+ #pageNum + '-' + #pageSize + '-' + #detail.hashCode() ")
@Cacheable(key="#root.method.name + ':'+ #pageNum + '-' + #pageSize + '-' + #detail.auditStatus ")
@Override @Override
public PageInfo<Detail> searchForPage(Integer pageNum, Integer pageSize, Detail detail) { public PageInfo<Detail> searchForPage(Integer pageNum, Integer pageSize, Detail detail) {
PageHelper.startPage(pageNum, pageSize); PageHelper.startPage(pageNum, pageSize);

4
src/main/resources/application.yml

@ -2,6 +2,10 @@ server:
port: 10010 port: 10010
spring: spring:
servlet:
multipart:
max-file-size: 10MB
max-request-size: 100MB
datasource: datasource:
hikari: # HikariCP连接池配置 hikari: # HikariCP连接池配置
maximum-pool-size: 10 # 最大连接数 maximum-pool-size: 10 # 最大连接数

Loading…
Cancel
Save