Commit 0c32a43a by Java-聂换换

结算管理

parent e7c130d3
...@@ -4,6 +4,8 @@ ...@@ -4,6 +4,8 @@
package com.thinkgem.jeesite.common.utils; package com.thinkgem.jeesite.common.utils;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date; import java.util.Date;
import org.apache.commons.lang3.time.DateFormatUtils; import org.apache.commons.lang3.time.DateFormatUtils;
...@@ -169,7 +171,37 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils { ...@@ -169,7 +171,37 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
long afterTime = after.getTime(); long afterTime = after.getTime();
return (afterTime - beforeTime) / (1000 * 60 * 60 * 24); return (afterTime - beforeTime) / (1000 * 60 * 60 * 24);
} }
/**
* 获取某月的最后一天
* @Title:getLastDayOfMonth
* @Description:
* @param:@param year
* @param:@param month
* @param:@return
* @return:String
* @throws
*/
public static String getLastDayOfMonth(int year,int month)
{
Calendar cal = Calendar.getInstance();
//设置年份
cal.set(Calendar.YEAR,year);
//设置月份
cal.set(Calendar.MONTH, month-1);
//获取某月最大天数
int lastDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
//设置日历中月份的最大天数
cal.set(Calendar.DAY_OF_MONTH, lastDay);
//格式化日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String lastDayOfMonth = sdf.format(cal.getTime());
return lastDayOfMonth;
}
/** /**
* @param args * @param args
* @throws ParseException * @throws ParseException
......
package com.thinkgem.jeesite.modules.youka.dao;
import com.thinkgem.jeesite.common.persistence.CrudDao;
import com.thinkgem.jeesite.common.persistence.annotation.MyBatisDao;
import com.thinkgem.jeesite.modules.youka.entity.YoukaBenefit;
import java.util.List;
@MyBatisDao
public interface YoukaBenefitDao extends CrudDao<YoukaBenefit>{
// 查询分润
public List<YoukaBenefit> getBenefitList(YoukaBenefit request);
public Integer updateBenefitByDate(YoukaBenefit youkaBenefit);
}
package com.thinkgem.jeesite.modules.youka.dao;
import com.thinkgem.jeesite.common.persistence.CrudDao;
import com.thinkgem.jeesite.common.persistence.annotation.MyBatisDao;
import com.thinkgem.jeesite.modules.youka.entity.YoukaCardEntity;
import com.thinkgem.jeesite.modules.youka.entity.YoukaSettlement;
import java.util.List;
@MyBatisDao
public interface YoukaSettlementDao extends CrudDao<YoukaSettlement> {
public List<YoukaSettlement> getYoukaSettlementList(YoukaSettlement youkaSettlement);
}
package com.thinkgem.jeesite.modules.youka.entity;
import com.thinkgem.jeesite.common.persistence.DataEntity;
import java.io.Serializable;
public class OrderEntity extends DataEntity<OrderEntity> implements Serializable {
private String userCode; // 用户code
private String payNo; // 订单号 4位年+2位月+2位日+2位时+2位分+8位随机数
private String payCode; // 支付号
private String payMethod;// 支付方式
private String payChannel; // 支付渠道
private String payStatus; // 订单状态 0待支付 1支付中 2已支付 3逾期取消
private String amount; // 金额
private String subject; // 商品名称
private String tradeNo; // 交易号
private String payType; // 交易类型 5借记卡 6贷记卡
private String cardCode; // 支付卡code
private String payChannelName;
private String payMethodName;// 支付方式
private String createDate;
private String startTime;
private String endTime;
private String code;
public OrderEntity() {
}
public String getUserCode() {
return userCode;
}
public void setUserCode(String userCode) {
this.userCode = userCode;
}
public String getPayNo() {
return payNo;
}
public void setPayNo(String payNo) {
this.payNo = payNo;
}
public String getPayCode() {
return payCode;
}
public void setPayCode(String payCode) {
this.payCode = payCode;
}
public String getPayChannel() {
return payChannel;
}
public void setPayChannel(String payChannel) {
this.payChannel = payChannel;
}
public String getPayStatus() {
return payStatus;
}
public void setPayStatus(String payStatus) {
this.payStatus = payStatus;
}
public String getAmount() {
return amount;
}
public void setAmount(String amount) {
this.amount = amount;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getTradeNo() {
return tradeNo;
}
public void setTradeNo(String tradeNo) {
this.tradeNo = tradeNo;
}
public String getPayType() {
return payType;
}
public void setPayType(String payType) {
this.payType = payType;
}
public String getCardCode() {
return cardCode;
}
public void setCardCode(String cardCode) {
this.cardCode = cardCode;
}
public String getPayChannelName() {
return payChannelName;
}
public void setPayChannelName(String payChannelName) {
this.payChannelName = payChannelName;
}
public String getPayMethod() {
return payMethod;
}
public void setPayMethod(String payMethod) {
this.payMethod = payMethod;
}
public String getPayMethodName() {
return payMethodName;
}
public void setPayMethodName(String payMethodName) {
this.payMethodName = payMethodName;
}
public String getStartTime() {
return startTime;
}
public void setStartTime(String startTime) {
this.startTime = startTime;
}
public String getEndTime() {
return endTime;
}
public void setEndTime(String endTime) {
this.endTime = endTime;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
}
package com.thinkgem.jeesite.modules.youka.entity;
import com.thinkgem.jeesite.common.persistence.DataEntity;
public class YoukaBenefit extends DataEntity<YoukaBenefit> {
private String userCode; // 用户code
private String orderCode; // 订单code
private String payChannel; // 来源渠道
private String payMethod;
private String benefitStatus; // 分润状态 0不可提现 1可以提现
private String benefitType; // 分润类型 A收益 M提现
private String amount; // 金额
private String cardCode; // 提现卡code
private String startTime;
private String endTime;
private OrderEntity orderEntity;
private String code;
private String startDate;
private String endDate;
public YoukaBenefit() {
}
public String getUserCode() {
return userCode;
}
public void setUserCode(String userCode) {
this.userCode = userCode;
}
public String getOrderCode() {
return orderCode;
}
public void setOrderCode(String orderCode) {
this.orderCode = orderCode;
}
public String getPayChannel() {
return payChannel;
}
public void setPayChannel(String payChannel) {
this.payChannel = payChannel;
}
public String getBenefitStatus() {
return benefitStatus;
}
public void setBenefitStatus(String benefitStatus) {
this.benefitStatus = benefitStatus;
}
public String getBenefitType() {
return benefitType;
}
public void setBenefitType(String benefitType) {
this.benefitType = benefitType;
}
public String getAmount() {
return amount;
}
public void setAmount(String amount) {
this.amount = amount;
}
public String getCardCode() {
return cardCode;
}
public void setCardCode(String cardCode) {
this.cardCode = cardCode;
}
public String getStartTime() {
return startTime;
}
public void setStartTime(String startTime) {
this.startTime = startTime;
}
public String getEndTime() {
return endTime;
}
public void setEndTime(String endTime) {
this.endTime = endTime;
}
public OrderEntity getOrderEntity() {
return orderEntity;
}
public void setOrderEntity(OrderEntity orderEntity) {
this.orderEntity = orderEntity;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getStartDate() {
return startDate;
}
public void setStartDate(String startDate) {
this.startDate = startDate;
}
public String getEndDate() {
return endDate;
}
public void setEndDate(String endDate) {
this.endDate = endDate;
}
public String getPayMethod() {
return payMethod;
}
public void setPayMethod(String payMethod) {
this.payMethod = payMethod;
}
}
package com.thinkgem.jeesite.modules.youka.entity;
import java.util.Date;
public class YoukaSettlement {
private long id;
private String settlementDate; // 结算时间
private Date createDate; // 创建时间
private String createBy;// 创建人
private String payChannel;
private String payMethod;
private String payChannelName;
private String payMethodName;
private String status;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getSettlementDate() {
return settlementDate;
}
public void setSettlementDate(String settlementDate) {
this.settlementDate = settlementDate;
}
public Date getCreateDate() {
return createDate;
}
public void setCreateDate(Date createDate) {
this.createDate = createDate;
}
public String getCreateBy() {
return createBy;
}
public void setCreateBy(String createBy) {
this.createBy = createBy;
}
public String getPayChannel() {
return payChannel;
}
public void setPayChannel(String payChannel) {
this.payChannel = payChannel;
}
public String getPayMethod() {
return payMethod;
}
public void setPayMethod(String payMethod) {
this.payMethod = payMethod;
}
public String getPayChannelName() {
return payChannelName;
}
public void setPayChannelName(String payChannelName) {
this.payChannelName = payChannelName;
}
public String getPayMethodName() {
return payMethodName;
}
public void setPayMethodName(String payMethodName) {
this.payMethodName = payMethodName;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
}
package com.thinkgem.jeesite.modules.youka.service;
import com.thinkgem.jeesite.common.service.BaseService;
import com.thinkgem.jeesite.common.service.CrudService;
import com.thinkgem.jeesite.common.utils.DateUtils;
import com.thinkgem.jeesite.modules.youka.dao.YoukaBenefitDao;
import com.thinkgem.jeesite.modules.youka.entity.YoukaBenefit;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
@Service
@Transactional(readOnly = true)
public class YoukaBenefitService extends CrudService<YoukaBenefitDao ,YoukaBenefit> {
/**
* 分润
* @param request
* @return
*/
public List<YoukaBenefit> getBenefitList(YoukaBenefit request){
return dao.getBenefitList(request);
}
// 通过时间修改分润的状态
public Integer updateBenefitByDate(YoukaBenefit youkaBenefit){
return dao.updateBenefitByDate(youkaBenefit);
}
}
package com.thinkgem.jeesite.modules.youka.service;
import com.thinkgem.jeesite.common.service.BaseService;
import com.thinkgem.jeesite.common.service.CrudService;
import com.thinkgem.jeesite.common.utils.DateUtils;
import com.thinkgem.jeesite.common.utils.StringUtils;
import com.thinkgem.jeesite.modules.sys.dao.DictDao;
import com.thinkgem.jeesite.modules.sys.entity.Dict;
import com.thinkgem.jeesite.modules.sys.service.DictService;
import com.thinkgem.jeesite.modules.sys.utils.UserUtils;
import com.thinkgem.jeesite.modules.youka.dao.YoukaCardDao;
import com.thinkgem.jeesite.modules.youka.dao.YoukaSettlementDao;
import com.thinkgem.jeesite.modules.youka.entity.YoukaBenefit;
import com.thinkgem.jeesite.modules.youka.entity.YoukaCardEntity;
import com.thinkgem.jeesite.modules.youka.entity.YoukaSettlement;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* 结算
*/
@Service
@Transactional(readOnly = true)
public class YoukaSettlementService extends BaseService{
@Autowired
private YoukaSettlementDao dao;
@Autowired
private YoukaBenefitService youkaBenefitService;
@Autowired
private DictService dictService;
/**
* 结算
* @param settlement
*/
@Transactional(readOnly = false)
public void save(YoukaSettlement settlement){
settlement.setCreateDate(new Date());
settlement.setCreateBy(UserUtils.getUser().getId());
dao.insert(settlement);
String date = settlement.getSettlementDate();
if(!StringUtils.isBlank(date)){
int year = Integer.valueOf(date.substring(0,4));
int month = Integer.valueOf(date.substring(5));
String endTime = DateUtils.getLastDayOfMonth(year,month)+" 23:59:59";
YoukaBenefit youkaBenefit = new YoukaBenefit();
youkaBenefit.setPayChannel(settlement.getPayChannel());
youkaBenefit.setPayMethod(settlement.getPayMethod());
youkaBenefit.setEndDate(endTime);
youkaBenefitService.updateBenefitByDate(youkaBenefit);
}
}
/**
* 查看是否已经结算
* @param youkaSettlement
* @return
*/
public YoukaSettlement get(YoukaSettlement youkaSettlement){
return dao.get(youkaSettlement);
}
public List<YoukaSettlement> getList(YoukaSettlement youkaSettlement){
List<YoukaSettlement> list = new ArrayList<>();
Dict dict = new Dict();
dict.setType("pay_method");
List<Dict> dictList = dictService.findList(dict);
for(Dict dict1:dictList){
youkaSettlement.setPayMethod(dict1.getValue());
list.addAll(dao.getYoukaSettlementList(youkaSettlement));
}
return list;
}
}
package com.thinkgem.jeesite.modules.youka.web;
import com.thinkgem.jeesite.common.persistence.Page;
import com.thinkgem.jeesite.common.utils.DateUtils;
import com.thinkgem.jeesite.common.utils.StringUtils;
import com.thinkgem.jeesite.modules.youka.entity.YoukaSettlement;
import com.thinkgem.jeesite.modules.youka.entity.YoukaUser;
import com.thinkgem.jeesite.modules.youka.service.YoukaSettlementService;
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;
/**
* @author niehh
* @Description: 结算
* @date 2018年03月06日 11:53
*/
@Controller
@RequestMapping(value = "${adminPath}/youka/settlement")
public class YoukaSettlementController {
@Autowired
private YoukaSettlementService youkaSettlementService;
@RequiresPermissions("youka:settlement:view")
@RequestMapping(value = {"list", ""})
public String list(YoukaSettlement youkaSettlement, HttpServletRequest request, HttpServletResponse response, Model model) {
if(StringUtils.isBlank(youkaSettlement.getSettlementDate())){
youkaSettlement.setSettlementDate(DateUtils.getDate("yyyy-MM"));
}
model.addAttribute("list",youkaSettlementService.getList(youkaSettlement));
model.addAttribute("youkaSettlement",youkaSettlement);
return "/modules/youka/settlement/settlementList";
}
@RequiresPermissions("youka:settlement:settlement")
@RequestMapping(value = {"settlement", ""})
public String settlement(YoukaSettlement youkaSettlement, HttpServletRequest request, HttpServletResponse response, Model model){
youkaSettlementService.save(youkaSettlement);
return this.list(youkaSettlement,request,response,model);
}
}
<?xml version="1.0" encoding="UTF-8" ?>
<!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">
<select id="getBenefitList" resultType="com.thinkgem.jeesite.modules.youka.entity.YoukaBenefit">
SELECT
o.pay_code AS "orderEntity.payCode",
o.pay_no AS "orderEntity.payNo",
o.pay_status AS "orderEntity.payStatus",
o.pay_type AS "orderEntity.payType",
o.pay_channel AS "orderEntity.payChannel",
o.`subject` AS "orderEntity.subject",
o.amount AS "orderEntity.amount",
sd.label AS "orderEntity.payChannelName",
yb.amount AS "amount",
yb.create_date AS "createDate"
FROM
youka_benefit yb
LEFT JOIN `youka_orders` o ON yb.order_code = o.`code`
LEFT JOIN sys_dict sd ON sd.`VALUE` = o.pay_channel
WHERE o.del_flag = 0
AND o.user_code = #{subMerchantCode}
<if test="payChannel != null and payChannel != ''">
AND o.pay_channel = #{payChannel}
</if>
<if test="payStatus != null and payStatus != ''">
AND o.pay_status = #{payStatus}
</if>
<if test="startTime != null and startTime != ''">
AND o.create_date &gt;= #{startTime}
</if>
<if test="endTime != null and endTime != ''">
AND o.create_date &lt;= #{endTime}
</if>
AND yb.del_flag = 0
</select>
<update id="updateBenefitByDate">
UPDATE `youka_benefit` yb
SET yb.benefit_status = 1
WHERE
yb.update_date &lt;= #{endDate}
AND yb.del_flag = 0
AND yb.benefit_type = 'A'
AND yb.pay_channel = #{payChannel}
AND yb.pay_method = #{payMethod}
AND (
SELECT
pay_status
FROM
youka_orders
WHERE
pay_code = yb.order_code
) = 2;
</update>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" ?>
<!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.YoukaSettlementDao">
<sql id="youkaSettlementColumns">
ys.id AS "id",
ys.settlement_date,
ys.pay_method,
ys.pay_channel,
yc.create_by,
yc.create_date
</sql>
<select id="get" resultType="com.thinkgem.jeesite.modules.youka.entity.YoukaSettlement">
SELECT
<include refid="youkaSettlementColumns"/>
FROM
youka_settlement ys
WHERE
1=1
<if test="id != 0">
AND ys.id = #{id}
</if>
<if test="settlementDate != null and settlementDate != ''">
AND ys.settlement_date = #{settlementDate}
</if>
<if test="payChannel != null and payChannel != ''">
AND ys.pay_channel = #{payChannel}
</if>
<if test="payMethod != null and payMethod != ''">
AND ys.pay_method = #{payMethod}
</if>
</select>
<insert id="insert">
INSERT INTO youka_settlement (
settlement_date,
pay_method,
pay_channel,
create_by,
create_date
)
VALUES
(#{settlementDate},
#{payMethod},
#{payChannel},
#{createBy},
#{createDate}
)
</insert>
<select id="getYoukaSettlementList" resultType="com.thinkgem.jeesite.modules.youka.entity.YoukaSettlement">
SELECT
sd.value AS "payChannel",
sd.label AS "payChannelName",
sdp.value AS "payMethod",
sdp.label AS "payMethodName",
if(ys.id is null,0,1) as status
FROM
sys_dict sd
LEFT JOIN youka_settlement ys ON ys.pay_channel = sd.value AND ys.pay_method = #{payMethod} AND ys.settlement_date = #{settlementDate}
LEFT JOIN sys_dict sdp ON sdp.id = sd.parent_id
WHERE
sd.type = 'pay_channel'
AND sdp.value = #{payMethod}
</select>
</mapper>
\ No newline at end of file
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