21 changed files with 492 additions and 27 deletions
			
			
		- 
					3demo/audit/src/main/java/com/example/audit/mapper/AuditMapper.java
- 
					3demo/commons/src/main/java/com/example/commons/domain/entity/Detail.java
- 
					1demo/commons/src/main/java/com/example/commons/domain/vo/ConsumeDetail.java
- 
					48demo/commons/src/main/java/com/example/commons/domain/vo/DetailVo.java
- 
					1demo/commons/src/main/java/com/example/commons/domain/vo/Page.java
- 
					2demo/commons/src/main/java/com/example/commons/domain/vo/RechargeVo.java
- 
					22demo/commons/src/main/java/com/example/commons/sevice/ConsumeService.java
- 
					17demo/commons/src/main/java/com/example/commons/sevice/RefundService.java
- 
					55demo/consume/src/main/java/com/example/consume/controller/ConsumeController.java
- 
					59demo/consume/src/main/java/com/example/consume/mapper/ConsumeMapper.java
- 
					52demo/consume/src/main/java/com/example/consume/service/ConsumeServiceImpl.java
- 
					15demo/consume/src/main/resources/application.yml
- 
					2demo/pom.xml
- 
					22demo/recharge/src/main/java/com/example/recharge/controller/RateController.java
- 
					24demo/recharge/src/main/java/com/example/recharge/mapper/RateMapper.java
- 
					2demo/recharge/src/main/java/com/example/recharge/mapper/RechargeMapper.java
- 
					57demo/refund/src/main/java/com/example/fefund/controller/RefundController.java
- 
					46demo/refund/src/main/java/com/example/fefund/mapper/RefundMapper.java
- 
					61demo/refund/src/main/java/com/example/fefund/service/RefundServiceImpl.java
- 
					15demo/refund/src/main/resources/application.yml
- 
					12demo/statistics/src/main/java/com/example/statistics/service/DetailServiceImpl.java
| @ -0,0 +1,48 @@ | |||
| package com.example.commons.domain.vo; | |||
| 
 | |||
| import com.fasterxml.jackson.annotation.JsonFormat; | |||
| import lombok.Data; | |||
| import lombok.NoArgsConstructor; | |||
| import org.springframework.format.annotation.DateTimeFormat; | |||
| 
 | |||
| import java.util.Date; | |||
| 
 | |||
| @Data | |||
| @NoArgsConstructor | |||
| public class DetailVo { | |||
|     private Integer detailId; | |||
|     private String name; | |||
|     private String jwcode; | |||
|     private String area; | |||
|     private Integer activityId; | |||
|     private String rechargeWay; | |||
|     private String goods; | |||
|     private String consumePlatform; | |||
|     private String consumeType; | |||
|     private String refundType; | |||
|     private String refundGoods; | |||
|     private Integer contactId; | |||
|     private String remark; | |||
|     private Double rechargeCoin; | |||
|     private Double freeCoin; | |||
|     private Double taskCoin; | |||
|     private Integer adminId; | |||
|     private Integer status; | |||
|     private String updateType; | |||
|     private Integer detailFlag; | |||
|     @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") | |||
|     @DateTimeFormat(pattern = "yyyy-MM-dd") | |||
|     private Date createTime; | |||
| 
 | |||
|     //搜索消费时间 | |||
|     @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") | |||
|     private Date searchStartTime; | |||
|     @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") | |||
|     private Date searchEndTime; | |||
| 
 | |||
|     //提交人姓名 | |||
|     private String adminName; | |||
| 
 | |||
|     //消费金币总数 | |||
|     private Integer totalCoin; | |||
| } | |||
| @ -0,0 +1,22 @@ | |||
| package com.example.commons.sevice; | |||
| 
 | |||
| import com.example.commons.domain.entity.Admin; | |||
| import com.example.commons.domain.entity.Detail; | |||
| import com.example.commons.domain.entity.User; | |||
| import com.example.commons.domain.vo.DetailVo; | |||
| import com.github.pagehelper.PageInfo; | |||
| 
 | |||
| import java.util.List; | |||
| 
 | |||
| public interface ConsumeService { | |||
|     //新增消费记录 | |||
|     int insert(Detail detail); | |||
| 
 | |||
|     User getByUserId(Integer userId); | |||
| 
 | |||
|     Admin getByadminId(Integer adminId); | |||
| 
 | |||
|     List<DetailVo> search(DetailVo detailVo); | |||
| 
 | |||
|     PageInfo<DetailVo> searchForPage(Integer pageNum, Integer pageSize, DetailVo detailVo); | |||
| } | |||
| @ -0,0 +1,17 @@ | |||
| package com.example.commons.sevice; | |||
| 
 | |||
| import com.example.commons.domain.entity.Detail; | |||
| import com.github.pagehelper.PageInfo; | |||
| import org.springframework.stereotype.Service; | |||
| 
 | |||
| import java.util.List; | |||
| 
 | |||
| @Service | |||
| public interface RefundService { | |||
|     int add(Detail detail) throws Exception; | |||
|     void edit(Detail newDetail) throws Exception; | |||
|     Detail selectByDetailId(Integer detailId); | |||
|     List<Detail> search(Detail detail); | |||
|     PageInfo<Detail> searchForPage(Integer pageNum, Integer pageSize, Detail detail); | |||
| 
 | |||
| } | |||
| @ -0,0 +1,55 @@ | |||
| package com.example.consume.controller; | |||
| 
 | |||
| 
 | |||
| import com.example.commons.domain.entity.Admin; | |||
| import com.example.commons.domain.entity.Detail; | |||
| import com.example.commons.domain.entity.User; | |||
| import com.example.commons.domain.vo.DetailVo; | |||
| import com.example.commons.domain.vo.Page; | |||
| import com.example.commons.domain.vo.Result; | |||
| import com.example.consume.service.ConsumeServiceImpl; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.util.ObjectUtils; | |||
| import org.springframework.web.bind.annotation.*; | |||
| 
 | |||
| 
 | |||
| 
 | |||
| 
 | |||
| @RestController | |||
| @RequestMapping("/consume") | |||
| public class ConsumeController { | |||
|     @Autowired | |||
|     ConsumeServiceImpl consumeService; | |||
|     @PostMapping("/add") | |||
|     public Result add(@RequestParam("userId") Integer userId, @RequestBody Detail detail){ | |||
| //        try { | |||
|         System.out.println(userId+"-----------"); | |||
|         //通过userid获取username,插入到detail | |||
|         User user=consumeService.getByUserId(userId); | |||
|         detail.setName(user.getName()); | |||
|         //添加所属地区 | |||
|         Admin admin=consumeService.getByadminId(detail.getAdminId()); | |||
|         detail.setArea(admin.getArea()); | |||
|             consumeService.insert(detail); | |||
|             return Result.success(); | |||
| //        } catch (Exception e) { | |||
| //            log.warn(Arrays.toString(e.getStackTrace())); | |||
| //            return Result.error(e.getMessage()); | |||
| //        } | |||
|  } | |||
| 
 | |||
| 
 | |||
| 
 | |||
|     @PostMapping("/select") | |||
|     public Result search(@RequestBody Page detailpage){ | |||
|             Integer pageNum = detailpage.getPageNum(); | |||
|             Integer pageSize = detailpage.getPageSize(); | |||
|             DetailVo detailVo = detailpage.getDetailVo(); | |||
|         if(ObjectUtils.isEmpty(pageNum)){ | |||
|             return Result.success(consumeService.search(detailVo)); | |||
|         } | |||
|         else { | |||
|             return Result.success(consumeService.searchForPage(pageNum,pageSize,detailVo)); | |||
|         } | |||
|     } | |||
| } | |||
| @ -0,0 +1,59 @@ | |||
| package com.example.consume.mapper; | |||
| 
 | |||
| 
 | |||
| import com.example.commons.domain.entity.Admin; | |||
| import com.example.commons.domain.entity.Detail; | |||
| import com.example.commons.domain.entity.User; | |||
| import com.example.commons.domain.vo.DetailVo; | |||
| import org.apache.ibatis.annotations.*; | |||
| import org.springframework.stereotype.Service; | |||
| 
 | |||
| import java.util.Date; | |||
| import java.util.List; | |||
| 
 | |||
| @Mapper | |||
| public interface ConsumeMapper { | |||
| 
 | |||
|    //通过id查询user全部信息 | |||
| @Select({ | |||
|         "select * from user where user_id=#{userId}" | |||
| }) | |||
| User getByUserId(Integer userId); | |||
| 
 | |||
|     //通过id查询admin全部信息 | |||
|     @Select({ | |||
|             "select * from admin where admin_id=#{adminId}" | |||
|     }) | |||
|     Admin getByadminId(@Param("adminId") Integer adminId); | |||
|     //新增消费记录 | |||
|     @Insert({ | |||
|             "insert into detail", | |||
|             "(jwcode,name,area,goods,consume_platform,consume_type,remark,recharge_coin,free_coin,task_coin,admin_id,create_time,detail_flag)", | |||
|             "values", | |||
|             "(#{jwcode},#{name},#{area},#{goods},'海外金币管理系统','购买商品',#{remark},#{rechargeCoin},#{freeCoin},#{taskCoin},#{adminId},now(),1)" | |||
|     }) | |||
| //    获取自增主键 | |||
|     @Options(useGeneratedKeys = true,keyColumn = "detail_id",keyProperty = "detailId") | |||
|     int insert(Detail detail); | |||
| 
 | |||
| 
 | |||
| 
 | |||
| 
 | |||
|     //模糊分页查询,查询消费明细 | |||
|     @Select({ | |||
|             "<script>", | |||
|             "select detail.*,admin.name  as adminName  from detail ", | |||
|             "inner join admin on detail.admin_id=admin.admin_id ", | |||
|             "<where>", | |||
|             "`detail_flag`=1", | |||
|             "<if test='goods!=null'>and goods like concat('%','#{goods}','%')</if>", | |||
|             "<if test='consumePlatform!=null'>and consume_platform like concat('%','#{consumePlatform}','%')</if>", | |||
|             "<if test='consumeType!=null'>and consume_type like concat('%','#{consumeType}','%')</if>", | |||
|             "<if test='searchStartTime != null and searchEndTime != null'>", | |||
|             "and create_time between #{searchStartTime} and #{searchEndTime}", | |||
|             "</if>", | |||
|             "</where>", | |||
|             "</script>" | |||
|     }) | |||
|     List<DetailVo> select(DetailVo detailVo); | |||
| } | |||
| @ -0,0 +1,52 @@ | |||
| package com.example.consume.service; | |||
| 
 | |||
| 
 | |||
| import com.example.commons.domain.entity.Admin; | |||
| import com.example.commons.domain.entity.Detail; | |||
| import com.example.commons.domain.entity.User; | |||
| import com.example.commons.domain.vo.DetailVo; | |||
| import com.example.commons.sevice.ConsumeService; | |||
| import com.example.consume.mapper.ConsumeMapper; | |||
| 
 | |||
| import com.github.pagehelper.PageHelper; | |||
| import com.github.pagehelper.PageInfo; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.stereotype.Service; | |||
| 
 | |||
| import java.util.List; | |||
| 
 | |||
| @Service | |||
| public class ConsumeServiceImpl implements ConsumeService { | |||
|     @Autowired | |||
|     ConsumeMapper consumeMapper; | |||
| 
 | |||
|     @Override | |||
|     //新增消费记录 | |||
|     public int insert(Detail detail) { | |||
| 
 | |||
|         //添加表单数据 | |||
|          return consumeMapper.insert(detail); | |||
|     } | |||
|     @Override | |||
|     public User getByUserId(Integer userId) { | |||
|        return consumeMapper.getByUserId(userId); | |||
|     } | |||
|     @Override | |||
|     public Admin getByadminId(Integer adminId) { | |||
|         return consumeMapper.getByadminId(adminId); | |||
|     } | |||
| 
 | |||
| 
 | |||
|     @Override | |||
|     public List<DetailVo> search(DetailVo detailVo) { | |||
|         return consumeMapper.select(detailVo); | |||
|     } | |||
| 
 | |||
| 
 | |||
|     @Override | |||
|     public PageInfo<DetailVo> searchForPage(Integer pageNum, Integer pageSize, DetailVo detailVo) { | |||
|         PageHelper.startPage(pageNum, pageSize); | |||
|         List<DetailVo> list = consumeMapper.select(detailVo); | |||
|         return new PageInfo<>(list); | |||
|     } | |||
| } | |||
| @ -0,0 +1,15 @@ | |||
| server: | |||
|   port: 10050 | |||
| 
 | |||
| spring: | |||
|   datasource: | |||
|     driver-class-name: com.mysql.cj.jdbc.Driver | |||
|     url: jdbc:mysql://39.101.133.168:3306/hwgold?serverTimezone=GMT%2b8&serverTimezone=Asia/Shanghai | |||
|     username:  hwgold | |||
|     password: 'AGX4Z3YMxiCG3GR2' | |||
|   application: | |||
|     name: consume | |||
| mybatis: | |||
|   configuration: | |||
|     map-underscore-to-camel-case: true | |||
|     log-impl: org.apache.ibatis.logging.stdout.StdOutImpl | |||
| @ -0,0 +1,57 @@ | |||
| package com.example.fefund.controller; | |||
| 
 | |||
| import com.example.commons.domain.entity.Detail; | |||
| 
 | |||
| import com.example.commons.domain.vo.Page; | |||
| import com.example.commons.domain.vo.Result; | |||
| import com.example.commons.sevice.RefundService; | |||
| import lombok.RequiredArgsConstructor; | |||
| import lombok.extern.slf4j.Slf4j; | |||
| import org.springframework.util.ObjectUtils; | |||
| import org.springframework.web.bind.annotation.*; | |||
| 
 | |||
| import java.util.Arrays; | |||
| 
 | |||
| @RestController | |||
| @RequestMapping("/refund") | |||
| @RequiredArgsConstructor | |||
| @Slf4j | |||
| @CrossOrigin | |||
| public class RefundController { | |||
|     private final RefundService refundService; | |||
| 
 | |||
|     @PostMapping("/add") | |||
|     public Result add(@RequestBody Detail detail) { | |||
|         try { | |||
|             refundService.add(detail); | |||
|             return Result.success(); | |||
|         } catch (Exception e) { | |||
|             log.warn(Arrays.toString(e.getStackTrace())); | |||
|             return Result.error(e.getMessage()); | |||
|         } | |||
|     } | |||
| 
 | |||
|     @PostMapping("/update") | |||
|     public Result update(@RequestBody Detail newDetail) { | |||
|         try { | |||
|             refundService.edit(newDetail); | |||
|             return Result.success(); | |||
|         } catch (Exception e) { | |||
|             log.warn(Arrays.toString(e.getStackTrace())); | |||
|             return Result.error(e.getMessage()); | |||
|         } | |||
|     } | |||
| 
 | |||
|     @PostMapping("/search") | |||
|     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)); | |||
|         }else{ | |||
|             return Result.success(refundService.searchForPage(pageNum, pageSize,detail)); | |||
|         } | |||
|     } | |||
| } | |||
| @ -0,0 +1,46 @@ | |||
| package com.example.fefund.mapper; | |||
| 
 | |||
| import com.example.commons.domain.entity.Detail; | |||
| import org.apache.ibatis.annotations.*; | |||
| 
 | |||
| import java.util.List; | |||
| 
 | |||
| @Mapper | |||
| public interface RefundMapper { | |||
| 
 | |||
|     @Insert({ | |||
|             "insert into detail", | |||
|             "(jwcord_id,refund_type,refund_goods,recharge_coin,free_coin,task_coin,remark,admin_id,creat_time)", | |||
|             "values", | |||
|             "(#{jwcode},#{refundType},#{refundGoods},#{rechargeCoin},#{freeCoin},#{taskCoin},#{remark},#{adminId},now())" | |||
|     }) | |||
|     @Options(useGeneratedKeys = true, keyColumn = "detail_id", keyProperty = "detailId") | |||
|     int insert(Detail detail); | |||
| 
 | |||
|     @Update("update detail set detail_flag = 0 where detail_id = #{detailId}") | |||
|     int update(Integer detailId); | |||
| 
 | |||
|     @Select("select * from detail where detail_id = #{detailId} and detail_flag = 1") | |||
|     Detail selectByDetailId(Integer detailId); | |||
| 
 | |||
| 
 | |||
|     @Select({ | |||
|             "<script>", | |||
|             "SELECT d.*, a.area AS adminArea", | |||
|             "FROM detail d", | |||
|             "LEFT JOIN admin a ON d.admin_id = a.admin_id", | |||
|             "WHERE d.detail_flag = 1", | |||
|             "<where>", | |||
|             "<if test='jwcode != null'>AND d.jwcode = #{jwcode}</if>", | |||
|             "<if test='refundType != null'>AND d.refund_type LIKE CONCAT('%', #{refundType}, '%')</if>", | |||
|             "<if test='refundGoods != null'>AND d.refund_goods = #{refundGoods}</if>", | |||
|             "<if test='rechargeCoin != null'>AND d.recharge_coin = #{rechargeCoin}</if>", | |||
|             "<if test='freeCoin != null'>AND d.free_coin = #{freeCoin}</if>", | |||
|             "<if test='taskCoin != null'>AND d.task_coin = #{taskCoin}</if>", | |||
|             "<if test='remark != null'>AND d.remark LIKE CONCAT('%', #{remark}, '%')</if>", | |||
|             "<if test='adminId != null'>AND d.admin_id = #{adminId}</if>", | |||
|             "</where>", | |||
|             "</script>" | |||
|     }) | |||
|     List<Detail> select(Detail detail); | |||
| } | |||
| @ -0,0 +1,61 @@ | |||
| package com.example.fefund.service; | |||
| 
 | |||
| 
 | |||
| import com.example.commons.domain.entity.Detail; | |||
| import com.example.commons.sevice.RefundService; | |||
| import com.example.fefund.mapper.RefundMapper; | |||
| import com.github.pagehelper.PageHelper; | |||
| import com.github.pagehelper.PageInfo; | |||
| import lombok.RequiredArgsConstructor; | |||
| 
 | |||
| import org.springframework.stereotype.Service; | |||
| import org.springframework.transaction.annotation.Transactional; | |||
| 
 | |||
| import java.util.List; | |||
| 
 | |||
| 
 | |||
| @RequiredArgsConstructor | |||
| @Transactional | |||
| @Service | |||
| public class RefundServiceImpl implements RefundService { | |||
|     private final RefundMapper refundMapper; | |||
|     @Override | |||
|     public int add(Detail detail) throws Exception { | |||
|         return refundMapper.insert(detail); | |||
|     } | |||
| 
 | |||
|     @Override | |||
|     public void edit(Detail newDetail) throws Exception { | |||
|         // 获取旧的明细记录 | |||
|         Detail oldDetail = refundMapper.selectByDetailId(newDetail.getDetailId()); | |||
| 
 | |||
|         if (oldDetail == null || oldDetail.getDetailFlag() ==0) { | |||
|             throw new IllegalArgumentException("该记录不存在或已被隐藏!"); | |||
|         } | |||
| 
 | |||
|         // 软删除旧记录 | |||
|         refundMapper.update(oldDetail.getDetailId()); | |||
| 
 | |||
|         // 插入新记录 | |||
|         newDetail.setDetailId(null); // 清空 ID,让其自动生成 | |||
|         newDetail.setDetailFlag(1); // 确保新记录未被删除 | |||
|         refundMapper.insert(newDetail); | |||
|     } | |||
| 
 | |||
|     @Override | |||
|     public Detail selectByDetailId(Integer detailId) { | |||
|         return null; | |||
|     } | |||
| 
 | |||
|     @Override | |||
|     public List<Detail> search(Detail detail) { | |||
|         return refundMapper.select(detail); | |||
|     } | |||
| 
 | |||
|     @Override | |||
|     public PageInfo<Detail> searchForPage(Integer pageNum, Integer pageSize, Detail detail) { | |||
|         PageHelper.startPage(pageNum, pageSize); | |||
|         List<Detail> list = refundMapper.select(detail); | |||
|         return new PageInfo<>(list); | |||
|     } | |||
| } | |||
| @ -0,0 +1,15 @@ | |||
| server: | |||
|   port: 10060 | |||
| 
 | |||
| spring: | |||
|   datasource: | |||
|     driver-class-name: com.mysql.cj.jdbc.Driver | |||
|     url: jdbc:mysql://39.101.133.168/hwgold?serverTimezone=GMT%2b8 | |||
|     username:  hwgold | |||
|     password: 'AGX4Z3YMxiCG3GR2' | |||
|   application: | |||
|     name: refund | |||
| mybatis: | |||
|   configuration: | |||
|     map-underscore-to-camel-case: true | |||
|     log-impl: org.apache.ibatis.logging.stdout.StdOutImpl | |||
						Write
						Preview
					
					
					Loading…
					
					Cancel
						Save
					
		Reference in new issue