Commit 0c22596b by Java-聂换换

分润管理

parent 5d83c89c
...@@ -9,11 +9,14 @@ import java.util.List; ...@@ -9,11 +9,14 @@ import java.util.List;
@MyBatisDao @MyBatisDao
public interface YoukaBenefitDao extends CrudDao<YoukaBenefit>{ public interface YoukaBenefitDao extends CrudDao<YoukaBenefit>{
// 查询分润 // 查询分润
public List<YoukaBenefit> getBenefitList(YoukaBenefit request); public List<YoukaBenefit> findList(YoukaBenefit request);
public Integer updateBenefitByDate(YoukaBenefit youkaBenefit); public Integer updateBenefitByDate(YoukaBenefit youkaBenefit);
// 查询分润 // 查询分润
public List<YoukaBenefit> getBenefitListByOrderCode(YoukaBenefit request); public List<YoukaBenefit> getBenefitListByOrderCode(YoukaBenefit request);
// 按照条件获取分润之和
YoukaBenefit getBenefitSum(YoukaBenefit youkaBenefit);
} }
...@@ -2,6 +2,8 @@ package com.thinkgem.jeesite.modules.youka.entity; ...@@ -2,6 +2,8 @@ package com.thinkgem.jeesite.modules.youka.entity;
import com.thinkgem.jeesite.common.persistence.DataEntity; import com.thinkgem.jeesite.common.persistence.DataEntity;
import java.util.Date;
public class YoukaBenefit extends DataEntity<YoukaBenefit> { public class YoukaBenefit extends DataEntity<YoukaBenefit> {
private String userCode; // 用户code private String userCode; // 用户code
private String orderCode; // 订单code private String orderCode; // 订单code
...@@ -12,9 +14,9 @@ public class YoukaBenefit extends DataEntity<YoukaBenefit> { ...@@ -12,9 +14,9 @@ public class YoukaBenefit extends DataEntity<YoukaBenefit> {
private String amount; // 金额 private String amount; // 金额
private String cardCode; // 提现卡code private String cardCode; // 提现卡code
private String startTime; private Date startTime;
private String endTime; private Date endTime;
private OrderEntity orderEntity; private OrderEntity orderEntity;
...@@ -26,6 +28,10 @@ public class YoukaBenefit extends DataEntity<YoukaBenefit> { ...@@ -26,6 +28,10 @@ public class YoukaBenefit extends DataEntity<YoukaBenefit> {
private String nickname; private String nickname;
private String mobile;
private String balance;
public YoukaBenefit() { public YoukaBenefit() {
} }
...@@ -87,19 +93,19 @@ public class YoukaBenefit extends DataEntity<YoukaBenefit> { ...@@ -87,19 +93,19 @@ public class YoukaBenefit extends DataEntity<YoukaBenefit> {
this.cardCode = cardCode; this.cardCode = cardCode;
} }
public String getStartTime() { public Date getStartTime() {
return startTime; return startTime;
} }
public void setStartTime(String startTime) { public void setStartTime(Date startTime) {
this.startTime = startTime; this.startTime = startTime;
} }
public String getEndTime() { public Date getEndTime() {
return endTime; return endTime;
} }
public void setEndTime(String endTime) { public void setEndTime(Date endTime) {
this.endTime = endTime; this.endTime = endTime;
} }
...@@ -151,4 +157,20 @@ public class YoukaBenefit extends DataEntity<YoukaBenefit> { ...@@ -151,4 +157,20 @@ public class YoukaBenefit extends DataEntity<YoukaBenefit> {
public void setNickname(String nickname) { public void setNickname(String nickname) {
this.nickname = nickname; this.nickname = nickname;
} }
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public String getBalance() {
return balance;
}
public void setBalance(String balance) {
this.balance = balance;
}
} }
package com.thinkgem.jeesite.modules.youka.service; package com.thinkgem.jeesite.modules.youka.service;
import com.thinkgem.jeesite.common.persistence.Page;
import com.thinkgem.jeesite.common.service.BaseService; import com.thinkgem.jeesite.common.service.BaseService;
import com.thinkgem.jeesite.common.service.CrudService; import com.thinkgem.jeesite.common.service.CrudService;
import com.thinkgem.jeesite.common.utils.DateUtils; import com.thinkgem.jeesite.common.utils.DateUtils;
import com.thinkgem.jeesite.modules.youka.dao.YoukaBenefitDao; import com.thinkgem.jeesite.modules.youka.dao.YoukaBenefitDao;
import com.thinkgem.jeesite.modules.youka.entity.OrderEntity;
import com.thinkgem.jeesite.modules.youka.entity.YoukaBenefit; import com.thinkgem.jeesite.modules.youka.entity.YoukaBenefit;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.text.DecimalFormat;
import java.util.Date; import java.util.Date;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
@Service @Service
@Transactional(readOnly = true) @Transactional(readOnly = true)
...@@ -21,7 +27,7 @@ public class YoukaBenefitService extends CrudService<YoukaBenefitDao ,YoukaBenef ...@@ -21,7 +27,7 @@ public class YoukaBenefitService extends CrudService<YoukaBenefitDao ,YoukaBenef
*/ */
public List<YoukaBenefit> getBenefitList(YoukaBenefit request){ public List<YoukaBenefit> getBenefitList(YoukaBenefit request){
return dao.getBenefitList(request); return dao.findList(request);
} }
...@@ -31,4 +37,58 @@ public class YoukaBenefitService extends CrudService<YoukaBenefitDao ,YoukaBenef ...@@ -31,4 +37,58 @@ public class YoukaBenefitService extends CrudService<YoukaBenefitDao ,YoukaBenef
return dao.updateBenefitByDate(youkaBenefit); return dao.updateBenefitByDate(youkaBenefit);
} }
/**
* 余额
* @param entity
* @return
*/
public String getBalance(YoukaBenefit entity){
// 总收益
entity.setBenefitType("A");
YoukaBenefit benefitEntityA = dao.getBenefitSum(entity);
// 总提现
entity.setBenefitType("M");
YoukaBenefit benefitEntityM = dao.getBenefitSum(entity);
// 余额 = 总收益-总提现
if(benefitEntityA==null){
return "0.00";
}else {
if(benefitEntityA.getAmount() == null){
benefitEntityA.setAmount("0.00");
}
if(benefitEntityM == null){
return "0.00";
}else{
if(benefitEntityM.getAmount() == null ){
benefitEntityM.setAmount("0.00");
}
DecimalFormat df = new DecimalFormat("######0.00");
return (df.format(Double.valueOf(benefitEntityA.getAmount()) - Double.valueOf(benefitEntityM.getAmount())));
}
}
}
public Page<YoukaBenefit> findPage(Page<YoukaBenefit> page, YoukaBenefit youkaBenefit){
Page<YoukaBenefit> pages = super.findPage(page,youkaBenefit);
Map<String,String> map = new HashMap<>();
if(page != null && pages.getList() != null && pages.getList().size()>0){
for(YoukaBenefit youkaBenefit1:pages.getList()){
if(StringUtils.isNotBlank(map.get(youkaBenefit1.getUserCode()))){
youkaBenefit1.setBalance(map.get(youkaBenefit1.getUserCode()));
}else{
youkaBenefit1.setBalance(this.getBalance(youkaBenefit1));
map.put(youkaBenefit1.getUserCode(),youkaBenefit1.getBalance());
}
}
}
return pages;
}
} }
package com.thinkgem.jeesite.modules.youka.web;
import com.thinkgem.jeesite.common.persistence.Page;
import com.thinkgem.jeesite.common.web.BaseController;
import com.thinkgem.jeesite.modules.youka.entity.OrderEntity;
import com.thinkgem.jeesite.modules.youka.entity.YoukaBenefit;
import com.thinkgem.jeesite.modules.youka.service.YoukaBenefitService;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@Controller
@RequestMapping(value = "${adminPath}/youka/benefit")
public class YoukaBenefitController extends BaseController {
@Autowired
private YoukaBenefitService youkaBenefitService;
/**
* 分润列表某个用户
* @param request
* @param response
* @param model
* @return
*/
@RequiresPermissions("youka:benefit:view")
@RequestMapping(value = {"listByUser", ""})
public String listByUser(YoukaBenefit youkaBenefit, HttpServletRequest request, HttpServletResponse response, Model model) {
Page<YoukaBenefit> page = youkaBenefitService.findPage(new Page<YoukaBenefit>(request, response), youkaBenefit);
model.addAttribute("page", page);
model.addAttribute("youkaBenefit", youkaBenefit);
model.addAttribute("balance",youkaBenefitService.getBalance(youkaBenefit));
return "modules/youka/benefit/benefitUserList";
}
/**
* 分润列表
* @param request
* @param response
* @param model
* @return
*/
@RequiresPermissions("youka:benefit:view")
@RequestMapping(value = {"list", ""})
public String list(YoukaBenefit youkaBenefit, HttpServletRequest request, HttpServletResponse response, Model model) {
Page<YoukaBenefit> page = youkaBenefitService.findPage(new Page<YoukaBenefit>(request, response), youkaBenefit);
model.addAttribute("page", page);
model.addAttribute("youkaBenefit", youkaBenefit);
return "modules/youka/benefit/benefitList";
}
}
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.thinkgem.jeesite.modules.youka.dao.YoukaBenefitDao"> <mapper namespace="com.thinkgem.jeesite.modules.youka.dao.YoukaBenefitDao">
<select id="getBenefitList" resultType="com.thinkgem.jeesite.modules.youka.entity.YoukaBenefit"> <select id="findList" resultType="com.thinkgem.jeesite.modules.youka.entity.YoukaBenefit">
SELECT SELECT
o.pay_code AS "orderEntity.payCode", o.pay_code AS "orderEntity.payCode",
o.pay_no AS "orderEntity.payNo", o.pay_no AS "orderEntity.payNo",
...@@ -12,25 +12,35 @@ ...@@ -12,25 +12,35 @@
o.`subject` AS "orderEntity.subject", o.`subject` AS "orderEntity.subject",
o.amount AS "orderEntity.amount", o.amount AS "orderEntity.amount",
sd.label AS "orderEntity.payChannelName", sd.label AS "orderEntity.payChannelName",
yu.nickname AS nickname,
yu.mobile AS mobile,
yb.amount AS "amount", yb.amount AS "amount",
yb.benefit_type,
yb.user_code,
yb.create_date AS "createDate" yb.create_date AS "createDate"
FROM FROM
youka_benefit yb youka_benefit yb
LEFT JOIN `youka_orders` o ON yb.order_code = o.`code` LEFT JOIN `youka_orders` o ON yb.order_code = o.`code`
LEFT JOIN sys_dict sd ON sd.`VALUE` = o.pay_channel LEFT JOIN sys_dict sd ON sd.`VALUE` = o.pay_channel
LEFT JOIN youka_users yu ON yu.code = yb.user_code
WHERE o.del_flag = 0 WHERE o.del_flag = 0
AND o.user_code = #{subMerchantCode} <if test="userCode != null and userCode != ''">
<if test="payChannel != null and payChannel != ''"> AND yb.user_code = #{userCode}
</if>
<if test="orderEntity!=null and orderEntity.payChannel != null and orderEntity.payChannel != ''">
AND o.pay_channel = #{payChannel} AND o.pay_channel = #{payChannel}
</if> </if>
<if test="payStatus != null and payStatus != ''"> <if test="orderEntity!=null and orderEntity.payStatus != null and orderEntity.payStatus != ''">
AND o.pay_status = #{payStatus} AND o.pay_status = #{payStatus}
</if> </if>
<if test="benefitType != null and benefitType != ''">
AND yb.benefit_type = #{benefitType}
</if>
<if test="startTime != null and startTime != ''"> <if test="startTime != null and startTime != ''">
AND o.create_date &gt;= #{startTime} AND yb.create_date &gt;= #{startTime}
</if> </if>
<if test="endTime != null and endTime != ''"> <if test="endTime != null and endTime != ''">
AND o.create_date &lt;= #{endTime} AND yb.create_date &lt;= #{endTime}
</if> </if>
AND yb.del_flag = 0 AND yb.del_flag = 0
</select> </select>
...@@ -67,4 +77,26 @@ ...@@ -67,4 +77,26 @@
) = 2; ) = 2;
</update> </update>
<select id="getBenefitSum" resultType="com.thinkgem.jeesite.modules.youka.entity.YoukaBenefit">
SELECT
SUM(amount) AS amount
FROM youka_benefit
WHERE user_code = #{userCode}
AND del_flag = 0
AND benefit_type = #{benefitType}
<if test="benefitStatus != null and benefitStatus != ''">
AND benefit_status = #{benefitStatus}
</if>
<if test="startTime != null and startTime != ''">
AND create_date >= #{startTime}
</if>
<if test="endTime != null and endTime != ''">
AND create_date &lt;= #{endTime}
</if>
</select>
</mapper> </mapper>
\ No newline at end of file
<%@ page contentType="text/html;charset=UTF-8" %>
<%@ include file="/WEB-INF/views/include/taglib.jsp"%>
<html>
<head>
<title>分润管理</title>
<meta name="decorator" content="default"/>
<script type="text/javascript">
$(document).ready(function() {
});
<%--$("#btnExport").click(function(){--%>
<%--top.$.jBox.confirm("确认要导出订单数据吗?","系统提示",function(v,h,f){--%>
<%--if(v=="ok"){--%>
<%--$("#searchForm").attr("action","${ctx}/youka/benefit/export");--%>
<%--$("#searchForm").submit();--%>
<%--}--%>
<%--},{buttonsFocus:1});--%>
<%--top.$('.jbox-body .jbox-icon').css('top','55px');--%>
<%--});--%>
<%--$("#btnImport").click(function(){--%>
<%--$.jBox($("#importBox").html(), {title:"导入数据", buttons:{"关闭":true}, --%>
<%--bottomText:"导入文件不能超过5M,仅允许导入“xls”或“xlsx”格式文件!"});--%>
<%--});--%>
function page(n,s){
if(n) $("#pageNo").val(n);
if(s) $("#pageSize").val(s);
$("#searchForm").attr("action","${ctx}/youka/benefit/list");
$("#searchForm").submit();
return false;
}
</script>
</head>
<body>
<ul class="nav nav-tabs">
<li class="active"><a href="${ctx}/youka/benefit/list">分润列表</a></li>
</ul>
<form:form id="searchForm" modelAttribute="youkaBenefit" action="${ctx}/youka/benefit/list" method="post" class="breadcrumb form-search ">
<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
<sys:tableSort id="orderBy" name="orderBy" value="${page.orderBy}" callback="page();"/>
<ul class="ul-form">
<li><label>利润类型:</label><form:select id="benefitType" path="benefitType" class="input-medium"><form:option value="" label=""/><form:options itemValue="value" itemLabel="label" items="${fns:getDictList('benefit_type')}" htmlEscape="false"/></form:select></li>
<li><label>时间:</label>
<input id="startTime" name="startTime" type="text" readonly="readonly" maxlength="20" class="input-small Wdate"
value="<fmt:formatDate value="${youkaBenefit.startTime}" pattern="yyyy-MM-dd"/>"
onclick="WdatePicker({dateFmt:'yyyy-MM-dd',isShowClear:true});"/>
<input id="endTime" name="endTime" type="text" readonly="readonly" maxlength="20" class="input-small Wdate"
value="<fmt:formatDate value="${youkaBenefit.endTime}" pattern="yyyy-MM-dd"/>"
onclick="WdatePicker({dateFmt:'yyyy-MM-dd',isShowClear:true});"/>
</li>
<li class="btns"><input id="btnSubmit" class="btn btn-primary" type="submit" value="查询" onclick="return page();"/>
<input id="btnExport" class="btn btn-primary" type="button" value="导出"/>
<%--<input id="btnImport" class="btn btn-primary" type="button" value="导入"/>--%>
</li>
<li class="clearfix"></li>
</ul>
</form:form>
<sys:message content="${message}"/>
<table id="contentTable" class="table table-striped table-bordered table-condensed">
<thead><tr><th>序号</th><th>用户名</th><th class="sort-column login_name">手机号</th><th class="sort-column name">分润类型</th><th>收入/支出</th><th>余额</th><th>订单号</th><th>时间</th></tr></thead>
<tbody>
<c:forEach items="${page.list}" var="benefit" varStatus="indexs">
<tr>
<td>${indexs.index}</td>
<td>${benefit.nickname}</td>
<td>${benefit.mobile}</td>
<td>
<c:if test="${benefit.benefitType eq 'A'}">收益</c:if>
<c:if test="${benefit.benefitType eq 'M'}">提现</c:if>
</td>
<td>
<c:if test="${benefit.benefitType eq 'A'}">+</c:if>
<c:if test="${benefit.benefitType eq 'M'}">-</c:if>
${benefit.amount}
</td>
<th>${benefit.balance}</th>
<td>
${benefit.orderEntity.payCode}
</td>
<td><fmt:formatDate value="${benefit.createDate}" type="both" dateStyle="full"/></td>
</tr>
</c:forEach>
</tbody>
</table>
<div class="pagination">${page}</div>
</body>
</html>
\ No newline at end of file
<%@ page contentType="text/html;charset=UTF-8" %>
<%@ include file="/WEB-INF/views/include/taglib.jsp"%>
<html>
<head>
<title>订单管理</title>
<meta name="decorator" content="default"/>
<script type="text/javascript">
$(document).ready(function() {
});
function page(n,s){
if(n) $("#pageNo").val(n);
if(s) $("#pageSize").val(s);
$("#searchForm").attr("action","${ctx}/youka/order/list");
$("#searchForm").submit();
return false;
}
</script>
</head>
<body>
<ul class="nav nav-tabs">
<li class="active"><a href="${ctx}/youka/order/list">订单列表</a></li>
</ul>
<form:form id="searchForm" modelAttribute="orderEntity" action="${ctx}/youka/order/list" method="post" class="breadcrumb form-search ">
<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
<sys:tableSort id="orderBy" name="orderBy" value="${page.orderBy}" callback="page();"/>
<ul class="ul-form">
<li><label>交易人:</label><form:input path="keywords"></form:input></li>
<li><label>支付方式:</label>
<form:select id="payMethod" path="payMethod" class="input-medium"><form:option value="" label=""/><form:options itemValue="value" itemLabel="label" items="${fns:getDictList('pay_method')}" htmlEscape="false"/></form:select>
<%--<form:select cssStyle="width: 100px;" id="payMethod" path="payMethod" items="${fns:getDictList('pay_method')}" itemLabel="label" itemValue="value" htmlEscape="true" />--%>
</li>
<li><label>支付渠道:</label>
<select title="${orderEntity.payChannel}" name="payChannel" id="payChannel" style="width: 150px;">
</select>
</li>
<li><label>交易状态:</label>
<form:select path="payStatus" cssStyle="width: 100px">
<form:option value="">
全部状态
</form:option>
<form:option value="0">
待支付
</form:option>
<form:option value="1">
支付中
</form:option>
<form:option value="2">
已支付
</form:option>
<form:option value="3">
逾期取消
</form:option>
<form:option value="4">
支付失败
</form:option>
</form:select>
</li>
<li class="btns"><input id="btnSubmit" class="btn btn-primary" type="submit" value="查询" onclick="return page();"/>
<input id="btnExport" class="btn btn-primary" type="button" value="导出"/>
<%--<input id="btnImport" class="btn btn-primary" type="button" value="导入"/>--%>
</li>
<li class="clearfix"></li>
</ul>
</form:form>
<sys:message content="${message}"/>
<table id="contentTable" class="table table-striped table-bordered table-condensed">
<thead><tr><th>序号</th><th>订单号</th><th class="sort-column login_name">交易时间</th><th class="sort-column name">交易人</th><th>交易平台</th><th>状态</th><th>订单金额</th><th>产生分润</th><th>分润去向</th></tr></thead>
<tbody>
<c:forEach items="${page.list}" var="order" varStatus="indexs">
<tr>
<td>${indexs.index}</td>
<td>${order.payCode}</td>
<td><fmt:formatDate value="${order.createDate}" type="both" dateStyle="full"/></td>
<td>
${order.nickname}
</td>
<td>
${order.payMethodName}-${order.payChannelName}
</td>
<td>
<c:if test="${order.payStatus eq '0'}">待支付</c:if>
<c:if test="${order.payStatus eq '1'}">支付中</c:if>
<c:if test="${order.payStatus eq '2'}">已支付</c:if>
<c:if test="${order.payStatus eq '3'}">逾期取消</c:if>
<c:if test="${order.payStatus eq '4'}">支付失败</c:if>
</td>
<td>${order.amount}</td>
<td>${order.benefitAmount}</td>
<td>${order.benefitDescribe}</td>
</tr>
</c:forEach>
</tbody>
</table>
<div class="pagination">${page}</div>
</body>
</html>
\ No newline at end of file
...@@ -132,7 +132,7 @@ ...@@ -132,7 +132,7 @@
<a href="${ctx}/youka/user/modify?id=${user.id}">查看</a> <a href="${ctx}/youka/user/modify?id=${user.id}">查看</a>
<a href="${ctx}/youka/user/real/name/audit?id=${user.id}" >审核</a> <a href="${ctx}/youka/user/real/name/audit?id=${user.id}" >审核</a>
<a href="${ctx}/youka/user/form?id=${user.id}">禁用</a> <a href="${ctx}/youka/user/form?id=${user.id}">禁用</a>
<a href="${ctx}/youka/user/form?id=${user.id}">账户明细</a> <a href="${ctx}/youka/benefit/list?userCode=${user.code}">账户明细</a>
<a href="${ctx}/youka/user/form?id=${user.id}" onclick="return confirmx('确认要删除该用户吗?', this.href)">删除</a> <a href="${ctx}/youka/user/form?id=${user.id}" onclick="return confirmx('确认要删除该用户吗?', this.href)">删除</a>
</td></shiro:hasPermission> </td></shiro:hasPermission>
</tr> </tr>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment