浏览代码

update:平台收入

yonge 2 年之前
父节点
当前提交
ed01ff1ebe

+ 45 - 0
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/PlatformCashAccountRecordController.java

@@ -0,0 +1,45 @@
+package com.yonge.cooleshow.admin.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+import javax.validation.Valid;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.yonge.cooleshow.biz.dal.dto.search.PlatformCashAccountRecordSearch;
+import com.yonge.cooleshow.biz.dal.entity.PlatformCashAccountRecord;
+import com.yonge.cooleshow.biz.dal.service.PlatformCashAccountRecordService;
+import com.yonge.cooleshow.common.controller.BaseController;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.toolset.base.page.PageInfo;
+import com.yonge.toolset.mybatis.support.PageUtil;
+
+@RestController
+@RequestMapping("/platformCashAccountRecord")
+@Api(value = "平台账户记录", tags = "平台账户记录")
+public class PlatformCashAccountRecordController extends BaseController {
+
+    @Autowired
+    private PlatformCashAccountRecordService platformCashAccountRecordService;
+
+	@ApiOperation(value = "平台账户记录-列表", httpMethod = "POST", consumes = "application/json", produces = "application/json")
+	@PostMapping(value = "/list", consumes = "application/json", produces = "application/json")
+	@PreAuthorize("@pcs.hasPermissions('platformCashAccountRecord/list')")
+	public HttpResponseResult<ModelMap> list(@Valid @RequestBody PlatformCashAccountRecordSearch query) {
+		ModelMap model = new ModelMap();
+		
+		PageInfo<PlatformCashAccountRecord> pageInfo = PageUtil.pageInfo(platformCashAccountRecordService.queryPage(PageUtil.getPage(query),query));
+		model.put("pageInfo", pageInfo);
+		model.put("summary", platformCashAccountRecordService.querySummary(query));
+		
+		return succeed(model);
+	}
+
+}

+ 10 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/PlatformCashAccountRecordDao.java

@@ -1,7 +1,11 @@
 package com.yonge.cooleshow.biz.dal.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.yonge.cooleshow.biz.dal.dto.search.PlatformCashAccountRecordSearch;
 import com.yonge.cooleshow.biz.dal.entity.PlatformCashAccountRecord;
+import com.yonge.cooleshow.biz.dal.vo.PlatformCashAccountRecordSummaryVo;
+
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -15,5 +19,11 @@ import java.util.List;
 public interface PlatformCashAccountRecordDao extends BaseMapper<PlatformCashAccountRecord> {
 
     int insertBatch(@Param("entities") List<PlatformCashAccountRecord> entities);
+    
+    IPage<PlatformCashAccountRecord> queryPage(@Param("page") IPage<PlatformCashAccountRecord> page, @Param("param") PlatformCashAccountRecordSearch query);
+    
+    PlatformCashAccountRecordSummaryVo querySummary(@Param("param") PlatformCashAccountRecordSearch query);
+    
+    List<PlatformCashAccountRecord> queryByBizTypeAndPaymentDays(@Param("bizType")String bizType, @Param("paymentDays")int paymentDays);
 }
 

+ 87 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/PlatformCashAccountRecordSearch.java

@@ -0,0 +1,87 @@
+package com.yonge.cooleshow.biz.dal.dto.search;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.Date;
+
+import com.yonge.toolset.base.page.QueryInfo;
+
+public class PlatformCashAccountRecordSearch extends QueryInfo {
+
+	@ApiModelProperty("关联订单号")
+	private String orderNo;
+	
+	@ApiModelProperty("业务编号")
+	private Long bizId;
+	
+	@ApiModelProperty("收支类型(IN-收入  OUT-支出)")
+	private String inOrOut;
+	
+	@ApiModelProperty("业务类型:PRACTICE、陪练课 LIVE、直播课 VIDEO、视频课 MUSIC、乐谱")
+	private String bizType;
+	
+	@ApiModelProperty("入账状态 WAIT 待入账 RECORDED 已入账 CANCEL 取消")
+	private String status;
+	
+	@ApiModelProperty("记录开始时间")
+	private Date startDate;
+	
+	@ApiModelProperty("记录结束时间")
+	private Date endDate;
+
+	public String getOrderNo() {
+		return orderNo;
+	}
+
+	public void setOrderNo(String orderNo) {
+		this.orderNo = orderNo;
+	}
+
+	public Long getBizId() {
+		return bizId;
+	}
+
+	public void setBizId(Long bizId) {
+		this.bizId = bizId;
+	}
+
+	public String getInOrOut() {
+		return inOrOut;
+	}
+
+	public void setInOrOut(String inOrOut) {
+		this.inOrOut = inOrOut;
+	}
+
+	public String getBizType() {
+		return bizType;
+	}
+
+	public void setBizType(String bizType) {
+		this.bizType = bizType;
+	}
+
+	public String getStatus() {
+		return status;
+	}
+
+	public void setStatus(String status) {
+		this.status = status;
+	}
+
+	public Date getStartDate() {
+		return startDate;
+	}
+
+	public void setStartDate(Date startDate) {
+		this.startDate = startDate;
+	}
+
+	public Date getEndDate() {
+		return endDate;
+	}
+
+	public void setEndDate(Date endDate) {
+		this.endDate = endDate;
+	}
+}

+ 29 - 26
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/PlatformCashAccountRecord.java

@@ -1,16 +1,19 @@
 package com.yonge.cooleshow.biz.dal.entity;
 
 
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.Date;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
 import com.baomidou.mybatisplus.annotation.TableId;
-
-import java.io.Serializable;
+import com.yonge.cooleshow.biz.dal.enums.AccountBizTypeEnum;
+import com.yonge.cooleshow.biz.dal.enums.InOrOutEnum;
+import com.yonge.cooleshow.common.enums.PostStatusEnum;
 
 /**
  * 平台账户流水表(PlatformCashAccountRecord)表实体类
@@ -34,15 +37,15 @@ public class PlatformCashAccountRecord implements Serializable {
 
     @TableField("in_or_out_")
     @ApiModelProperty(value = "收支类型:IN、收入 OUT、支出")
-    private String inOrOut;
+    private InOrOutEnum inOrOut;
 
     @TableField("post_status_")
     @ApiModelProperty(value = "入账状态 WAIT 待入账 RECORDED 已入账 CANCEL 取消")
-    private String postStatus;
+    private PostStatusEnum postStatus;
 
     @TableField("biz_type_")
     @ApiModelProperty(value = "业务类型:PRACTICE、陪练课 LIVE、直播课 VIDEO、视频课 MUSIC、乐谱")
-    private String bizType;
+    private AccountBizTypeEnum bizType;
 
     @TableField("biz_id_")
     @ApiModelProperty(value = "业务id(陪练课,直播课course_schedule_id_ | 视频课,乐谱为课程组曲子id | 提现为提现记录id)")
@@ -89,31 +92,31 @@ public class PlatformCashAccountRecord implements Serializable {
         this.transAmount = transAmount;
     }
 
-    public String getInOrOut() {
-        return inOrOut;
-    }
+    public InOrOutEnum getInOrOut() {
+		return inOrOut;
+	}
 
-    public void setInOrOut(String inOrOut) {
-        this.inOrOut = inOrOut;
-    }
+	public void setInOrOut(InOrOutEnum inOrOut) {
+		this.inOrOut = inOrOut;
+	}
 
-    public String getPostStatus() {
-        return postStatus;
-    }
+	public PostStatusEnum getPostStatus() {
+		return postStatus;
+	}
 
-    public void setPostStatus(String postStatus) {
-        this.postStatus = postStatus;
-    }
+	public void setPostStatus(PostStatusEnum postStatus) {
+		this.postStatus = postStatus;
+	}
 
-    public String getBizType() {
-        return bizType;
-    }
+	public AccountBizTypeEnum getBizType() {
+		return bizType;
+	}
 
-    public void setBizType(String bizType) {
-        this.bizType = bizType;
-    }
+	public void setBizType(AccountBizTypeEnum bizType) {
+		this.bizType = bizType;
+	}
 
-    public Long getBizId() {
+	public Long getBizId() {
         return bizId;
     }
 

+ 13 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/PlatformCashAccountRecordService.java

@@ -1,9 +1,12 @@
 package com.yonge.cooleshow.biz.dal.service;
 
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.yonge.cooleshow.biz.dal.dao.PlatformCashAccountRecordDao;
+import com.yonge.cooleshow.biz.dal.dto.search.PlatformCashAccountRecordSearch;
 import com.yonge.cooleshow.biz.dal.entity.PlatformCashAccountRecord;
+import com.yonge.cooleshow.biz.dal.vo.PlatformCashAccountRecordSummaryVo;
 
 /**
  * 平台账户流水表(PlatformCashAccountRecord)表服务接口
@@ -14,5 +17,15 @@ import com.yonge.cooleshow.biz.dal.entity.PlatformCashAccountRecord;
 public interface PlatformCashAccountRecordService extends IService<PlatformCashAccountRecord> {
 
     PlatformCashAccountRecordDao getDao();
+    
+    IPage<PlatformCashAccountRecord> queryPage(IPage<PlatformCashAccountRecord> page, PlatformCashAccountRecordSearch query);
+    
+    PlatformCashAccountRecordSummaryVo querySummary(PlatformCashAccountRecordSearch query);
+    
+    /**
+     * 更新待入账记录
+     * @return
+     */
+    boolean updateWaitRecord();
 }
 

+ 25 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/PlatformCashAccountRecordServiceImpl.java

@@ -1,13 +1,18 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.yonge.cooleshow.biz.dal.dao.PlatformCashAccountRecordDao;
+import com.yonge.cooleshow.biz.dal.dto.search.PlatformCashAccountRecordSearch;
 import com.yonge.cooleshow.biz.dal.entity.PlatformCashAccountRecord;
 import com.yonge.cooleshow.biz.dal.service.PlatformCashAccountRecordService;
+import com.yonge.cooleshow.biz.dal.vo.PlatformCashAccountRecordSummaryVo;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 /**
  * 平台账户流水表(PlatformCashAccountRecord)表服务实现类
@@ -25,5 +30,25 @@ public class PlatformCashAccountRecordServiceImpl extends ServiceImpl<PlatformCa
         return this.baseMapper;
     }
 
+	@Override
+	public IPage<PlatformCashAccountRecord> queryPage(IPage<PlatformCashAccountRecord> page, PlatformCashAccountRecordSearch query) {
+		return getDao().queryPage(page, query);
+	}
+
+	@Override
+	public PlatformCashAccountRecordSummaryVo querySummary(PlatformCashAccountRecordSearch query) {
+		return getDao().querySummary(query);
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public boolean updateWaitRecord() {
+		//根据不同类型(业务类型:PRACTICE、陪练课 LIVE、直播课 VIDEO、视频课 MUSIC、乐谱)查询超过账期待结算的记录
+		
+		//getDao().queryByBizTypeAndPaymentDays(bizType, paymentDays);
+		
+		return false;
+	}
+
 }
 

+ 52 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/PlatformCashAccountRecordSummaryVo.java

@@ -0,0 +1,52 @@
+package com.yonge.cooleshow.biz.dal.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+
+public class PlatformCashAccountRecordSummaryVo {
+
+	@ApiModelProperty(value = "预收金额")
+	private BigDecimal advancesReceived;
+	
+	@ApiModelProperty(value = "实收金额")
+	private BigDecimal settledReceived;
+	
+	@ApiModelProperty(value = "预付金额")
+	private BigDecimal advancePayment;
+	
+	@ApiModelProperty(value = "实付金额")
+	private BigDecimal settledPayment;
+
+	public BigDecimal getAdvancesReceived() {
+		return advancesReceived;
+	}
+
+	public void setAdvancesReceived(BigDecimal advancesReceived) {
+		this.advancesReceived = advancesReceived;
+	}
+
+	public BigDecimal getSettledReceived() {
+		return settledReceived;
+	}
+
+	public void setSettledReceived(BigDecimal settledReceived) {
+		this.settledReceived = settledReceived;
+	}
+
+	public BigDecimal getAdvancePayment() {
+		return advancePayment;
+	}
+
+	public void setAdvancePayment(BigDecimal advancePayment) {
+		this.advancePayment = advancePayment;
+	}
+
+	public BigDecimal getSettledPayment() {
+		return settledPayment;
+	}
+
+	public void setSettledPayment(BigDecimal settledPayment) {
+		this.settledPayment = settledPayment;
+	}
+}

+ 63 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/PlatformCashAccountRecordMapper.xml

@@ -30,5 +30,68 @@
             #{entity.bizId}, #{entity.memo}, #{entity.orderNo}, #{entity.createTime}, #{entity.updateTime})
         </foreach>
     </insert>
+    
+    <select id="queryPage" resultType="com.yonge.cooleshow.biz.dal.entity.PlatformCashAccountRecord">
+    	select * from platform_cash_account_record
+    	<where>
+    		<if test="param.orderNo">
+    			and order_no_ = #{param.orderNo}
+    		</if>
+    		<if test="param.bizId">
+    			and biz_id_ = #{param.bizId}
+    		</if>
+    		<if test="param.inOrOut">
+    			and in_or_out_ = #{param.inOrOut}
+    		</if>
+    		<if test="param.bizType">
+    			and biz_type_ = #{param.bizType}
+    		</if>
+    		<if test="param.status">
+    			and post_status_ = #{param.status}
+    		</if>
+    		<if test="param.startDate">
+    			and update_time_ &gt;= #{param.startDate}
+    		</if>
+    		<if test="param.endDate">
+    			and update_time_ &lt;= #{param.endDate}
+    		</if>
+    	</where>
+    </select>
+    
+    <select id="querySummary" resultType="com.yonge.cooleshow.biz.dal.vo.PlatformCashAccountRecordSummaryVo">
+    	select 
+    		sum(case when in_or_out_ = 'IN' and post_status_ = 'WAIT' then trans_amount_ else 0 end) advancesReceived,
+    		sum(case when in_or_out_ = 'IN' and post_status_ = 'RECORDED' then trans_amount_ else 0 end) settledReceived,
+    		sum(case when in_or_out_ = 'OUT' and post_status_ = 'WAIT' then trans_amount_ else 0 end) advancePayment,
+    		sum(case when in_or_out_ = 'OUT' and post_status_ = 'RECORDED' then trans_amount_ else 0 end) settledPayment 
+    	from platform_cash_account_record
+    	<where>
+    		<if test="param.orderNo">
+    			and order_no_ = #{param.orderNo}
+    		</if>
+    		<if test="param.bizId">
+    			and biz_id_ = #{param.bizId}
+    		</if>
+    		<if test="param.inOrOut">
+    			and in_or_out_ = #{param.inOrOut}
+    		</if>
+    		<if test="param.bizType">
+    			and biz_type_ = #{param.bizType}
+    		</if>
+    		<if test="param.status">
+    			and post_status_ = #{param.status}
+    		</if>
+    		<if test="param.startDate">
+    			and update_time_ &gt;= #{param.startDate}
+    		</if>
+    		<if test="param.endDate">
+    			and update_time_ &lt;= #{param.endDate}
+    		</if>
+    	</where>
+    </select>
+    
+    <select id="queryByBizTypeAndPaymentDays" resultType="com.yonge.cooleshow.biz.dal.entity.PlatformCashAccountRecord">
+    	select * from platform_cash_account_record where biz_type_ = #{bizType} and TIMESTAMPDIFF(HOUR, create_time_, now()) &gt;= ${24 * paymentDays}
+    </select>
 
 </mapper>