From 585f72d4f6022cd9498a9a1e4309f51821f1995a Mon Sep 17 00:00:00 2001
From: 935090232@qq.com <ak473600000>
Date: Mon, 22 Mar 2021 08:25:33 +0800
Subject: [PATCH] 用户积分流水查询

---
 zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopScoreAction.java |   51 ++++++++-
 /dev/null                                                                        |   40 --------
 zq-erp/src/test/java/com/matrix/JyyTests.java                                    |    2 
 zq-erp/src/main/java/com/matrix/system/shopXcx/api/dto/ScoreFlowDto.java         |   26 +++++
 zq-erp/src/main/java/com/matrix/system/shopXcx/api/tools/WxShopOrderUtil.java    |    2 
 zq-erp/src/main/java/com/matrix/system/score/entity/ScoreVipDetail.java          |    2 
 zq-erp/src/main/resources/mybatis/mapper/score/ScoreUseRecordDao.xml             |   49 ++-------
 zq-erp/src/main/java/com/matrix/system/score/service/ScoreVipDetailService.java  |   89 +++++++++++++++++
 zq-erp/src/main/java/com/matrix/system/score/dao/ScoreUseRecordDao.java          |   16 ++
 9 files changed, 184 insertions(+), 93 deletions(-)

diff --git a/zq-erp/src/main/java/com/matrix/system/score/dao/ScoreUseRecordDao.java b/zq-erp/src/main/java/com/matrix/system/score/dao/ScoreUseRecordDao.java
index 2162dc5..a2e4549 100644
--- a/zq-erp/src/main/java/com/matrix/system/score/dao/ScoreUseRecordDao.java
+++ b/zq-erp/src/main/java/com/matrix/system/score/dao/ScoreUseRecordDao.java
@@ -1,11 +1,12 @@
 package com.matrix.system.score.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.apache.ibatis.annotations.Param;
-import java.util.List;
-import java.util.Map;
-import com.matrix.core.pojo.PaginationVO;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.matrix.system.score.entity.ScoreUseRecord;
+import com.matrix.system.shopXcx.api.dto.ScoreFlowDto;
+import com.matrix.system.shopXcx.vo.SalesOrderVo;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * @description 积分记录表
@@ -14,4 +15,11 @@
  */
 public interface ScoreUseRecordDao extends BaseMapper<ScoreUseRecord> {
 
+    /**
+     * 查询收支记录
+     * @param page
+     * @param scoreFlowDto
+     * @return
+     */
+    IPage<ScoreUseRecord> selectFlowList(Page<SalesOrderVo> page, @Param("record")ScoreFlowDto scoreFlowDto);
 }
\ No newline at end of file
diff --git a/zq-erp/src/main/java/com/matrix/system/score/entity/ScoreVipDetail.java b/zq-erp/src/main/java/com/matrix/system/score/entity/ScoreVipDetail.java
index f777ee6..33ff3ca 100644
--- a/zq-erp/src/main/java/com/matrix/system/score/entity/ScoreVipDetail.java
+++ b/zq-erp/src/main/java/com/matrix/system/score/entity/ScoreVipDetail.java
@@ -42,7 +42,7 @@
 	/**
 	 * erp用户Id
 	 */
-	private String vipId;
+	private Long vipId;
 
 	
 	/**
diff --git a/zq-erp/src/main/java/com/matrix/system/score/service/ScoreVipDetailService.java b/zq-erp/src/main/java/com/matrix/system/score/service/ScoreVipDetailService.java
index 38cfd4d..1b939fc 100644
--- a/zq-erp/src/main/java/com/matrix/system/score/service/ScoreVipDetailService.java
+++ b/zq-erp/src/main/java/com/matrix/system/score/service/ScoreVipDetailService.java
@@ -5,7 +5,12 @@
 import com.matrix.biz.dao.BizUserDao;
 import com.matrix.core.constance.MatrixConstance;
 import com.matrix.core.exception.GlobleException;
+import com.matrix.core.tools.DateUtil;
+import com.matrix.system.common.bean.BusParameterSettings;
+import com.matrix.system.common.dao.BusParameterSettingsDao;
+import com.matrix.system.common.dao.SysUsersDao;
 import com.matrix.system.hive.dao.SysVipInfoDao;
+import com.matrix.system.score.constant.ScoreSettingConstant;
 import com.matrix.system.score.dao.ScoreUseRecordDao;
 import com.matrix.system.score.dao.ScoreVipDetailDao;
 import com.matrix.system.score.entity.ScoreUseRecord;
@@ -14,6 +19,8 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.Calendar;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -35,6 +42,12 @@
 
     @Autowired
     SysVipInfoDao vipInfoDao;
+
+    @Autowired
+    SysUsersDao sysUsersDao;
+
+    @Autowired
+    BusParameterSettingsDao busParameterSettingsDao;
 
     /**
      * 扣除用户积分
@@ -89,7 +102,7 @@
             scoreUseRecord.setCompanyId(companyId);
             scoreUseRecord.setScoreVipDetailId(scoreVipDetail.getId());
             scoreUseRecord.setBusinessId(businessId);
-            scoreUseRecord.setRecNum(currentDedution);
+            scoreUseRecord.setRecNum(-currentDedution);
             scoreUseRecord.setRecType(type);
             scoreUseRecord.setOpenId(openId);
             scoreUseRecord.setVipId(vipId);
@@ -102,6 +115,80 @@
         if(score>0){
             throw new GlobleException("积分不足");
         }
+    }
+
+    /**
+     * 新增用户积分
+     * @param openId
+     * @param vipId
+     * @param oprationUserId
+     * @param score
+     * @param businessId
+     * @param type
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void addScore(String openId, Long vipId, Long oprationUserId, Integer score, Long businessId, int type) {
+        Long companyId=null;
+        if(openId!=null){
+            companyId= bizUserDao.findByOpenId(openId).getCompanyId();
+        }else if(vipId!=null){
+            companyId= vipInfoDao.selectById(vipId).getCompanyId();
+        }else{
+            throw new IllegalArgumentException("vipId,openId必须有一个");
+        }
+        if(score<0){
+            throw new IllegalArgumentException("score必须有为大于零的数");
+        }
+
+        String createBy=MatrixConstance.SYSTEM_USER;
+        if(oprationUserId!=null){
+            createBy=sysUsersDao.selectById(oprationUserId).getSuName();
+        }
+
+        //计算过期时间
+        BusParameterSettings yxqSetting = busParameterSettingsDao.selectCompanyParamByCode(ScoreSettingConstant.VALID_PERIOD_POINTS, companyId);
+        Calendar cal=Calendar.getInstance();
+        int year = cal.get(Calendar.YEAR);
+        int sxYear=year+(Integer.parseInt(yxqSetting.getParamValue())-1);
+        Date sxys=DateUtil.stringToDate(year+"-12-31 23:59",DateUtil.DATE_FORMAT_MM );
+
+        ScoreVipDetail scoreVipDetail=new ScoreVipDetail();
+
+        scoreVipDetail.setCreateBy(createBy);
+        scoreVipDetail.setUpdateBy(createBy);
+        scoreVipDetail.setCreateTime(DateTime.now());
+        scoreVipDetail.setUpdateTime(DateTime.now());
+        scoreVipDetail.setState(ScoreVipDetail.SCORE_STATUS_YX);
+        scoreVipDetail.setRemainScore(score);
+        scoreVipDetail.setUsedScore(0);
+        scoreVipDetail.setValiditeTime(sxys);
+        scoreVipDetail.setOpenId(openId);
+        scoreVipDetail.setVipId(vipId);
+        scoreVipDetail.setGainTime(DateTime.now());
+        scoreVipDetail.setAllScore(score);
+        scoreVipDetail.setType(type);
+        scoreVipDetail.setCompanyId(companyId);
+        scoreVipDetailDao.insert(scoreVipDetail);
+
+        //新增添加记录
+        ScoreUseRecord   scoreUseRecord = new ScoreUseRecord();
+        scoreUseRecord.setPreScore(score);
+        scoreUseRecord.setCreateBy(createBy);
+        scoreUseRecord.setUpdateBy(createBy);
+        scoreUseRecord.setCreateTime(DateTime.now());
+        scoreUseRecord.setUpdateTime(DateTime.now());
+        scoreUseRecord.setNowScore(score);
+        scoreUseRecord.setCompanyId(companyId);
+        scoreUseRecord.setScoreVipDetailId(scoreVipDetail.getId());
+        scoreUseRecord.setBusinessId(businessId);
+        scoreUseRecord.setRecNum(score);
+        scoreUseRecord.setRecType(type);
+        scoreUseRecord.setOpenId(openId);
+        scoreUseRecord.setVipId(vipId);
+        scoreUseRecordDao.insert(scoreUseRecord);
+
 
     }
+
+
 }
\ No newline at end of file
diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopScoreAction.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopScoreAction.java
index a18df97..f6c5172 100644
--- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopScoreAction.java
+++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxShopScoreAction.java
@@ -1,19 +1,54 @@
 package com.matrix.system.shopXcx.api.action;
 
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.CrossOrigin;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.matrix.biz.bean.BizUser;
+import com.matrix.component.redis.RedisUserLoginUtils;
+import com.matrix.core.pojo.AjaxResult;
+import com.matrix.system.score.dao.ScoreUseRecordDao;
+import com.matrix.system.score.entity.ScoreUseRecord;
+import com.matrix.system.shopXcx.api.dto.ScoreFlowDto;
+import com.matrix.system.shopXcx.vo.SalesOrderVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+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;
 
 /**
- * @description 用户积分控制器
  * @author jyy
- * @date 2019-08-09 15:10
+ * @date 2021-03-22 15:10
  */
-@Controller
-@RequestMapping(value="/wxapi/shopScoreRecord")
-@CrossOrigin(origins = "*", maxAge = 3600)
+@Api(tags = "用户积分接口类")
+@RestController
+@RequestMapping(value = "/wxapi/score")
 public class WxShopScoreAction {
 
+    @Autowired
+    RedisUserLoginUtils redisUserLoginUtils;
 
-  
+    @Autowired
+    ScoreUseRecordDao scoreUseRecordDao;
+
+    @ApiOperation(value = "获取积分流水", notes = "")
+    @PostMapping(value = "/getOrderList")
+    @ApiResponses({
+            @ApiResponse(code = 200, message = "ok", response = ScoreUseRecord.class)
+    })
+    AjaxResult getInvitationuserList(@RequestBody @Validated ScoreFlowDto scoreFlowDto) {
+        BizUser loginUser = redisUserLoginUtils.getLoginUser(BizUser.class);
+        Page<SalesOrderVo> page=new Page<>(scoreFlowDto.getPageNum(),scoreFlowDto.getPageSize());
+        scoreFlowDto.setUserId(loginUser.getOpenId());
+        IPage<ScoreUseRecord> shopScoreRecord = scoreUseRecordDao.selectFlowList(page,  scoreFlowDto);
+        AjaxResult result=AjaxResult.buildSuccessInstance(shopScoreRecord.getRecords());
+        return result;
+    }
+
+
+
 }
\ No newline at end of file
diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/dto/ScoreFlowDto.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/dto/ScoreFlowDto.java
new file mode 100644
index 0000000..b1a94b3
--- /dev/null
+++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/dto/ScoreFlowDto.java
@@ -0,0 +1,26 @@
+package com.matrix.system.shopXcx.api.dto;
+
+import com.matrix.core.pojo.BasePageQueryDto;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+@Data
+@ApiModel(value = "ScoreFlowDto", description = "积分流水查询参数接收类")
+public class ScoreFlowDto extends BasePageQueryDto {
+
+    @NotNull(message = "查询月份不能为空")
+    @ApiModelProperty(value = "查询月份",example = "2021-03")
+    private String queryTime;
+
+
+    @ApiModelProperty(value = "收支类型 不传全部,1,收入,2支出", example = "1")
+    private Integer  revenueType;
+
+    @ApiModelProperty(hidden = true)
+    private String  userId;
+
+
+}
diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/tools/WxShopOrderUtil.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/tools/WxShopOrderUtil.java
index e0b6c40..283da6a 100644
--- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/tools/WxShopOrderUtil.java
+++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/tools/WxShopOrderUtil.java
@@ -46,8 +46,6 @@
     private WxShopMemberDayService wxShopMemberDayService;
     @Autowired
     private BizUserService bizUserService;
-    @Autowired
-    private ShopScoreRecordDao shopScoreRecordDao;
 
 
     private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日");
diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopScoreRecord.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopScoreRecord.java
deleted file mode 100644
index 59de19f..0000000
--- a/zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopScoreRecord.java
+++ /dev/null
@@ -1,155 +0,0 @@
-package com.matrix.system.shopXcx.bean;
-
-import com.matrix.core.pojo.EntityDTO;
-import com.matrix.core.anotations.Extend;
-import com.matrix.core.tools.DateUtil;
-
-import java.math.BigDecimal;
-
-/**
- * @description 用户积分获取记录
- * @author jyy
- * @date 2019-08-09 15:10
- */
-public class ShopScoreRecord  extends EntityDTO{
-	@Extend
-	private static final long serialVersionUID = 1L; 
-
-	
-	/**
-	 * 主键
-	 */
-	private Integer  id;
-			
-	
-	/**
-	 * 受益人openID
-	 */
-	private String  beneficiaryId;
-			
-	
-	/**
-	 * 购买人openID
-	 */
-	private String  buyerId;
-			
-	
-	/**
-	 * 购买人名称
-	 */
-	private String  buyerName;
-
-
-	/**
-	 * 购买人头像地址
-	 */
-	private String buyerAvatarUrl;
-
-
-	/**
-	 * 订单ID
-	 */
-	private Integer  orderId;
-			
-	
-	/**
-	 * 订单金额
-	 */
-	private BigDecimal  amount;
-			
-	
-	/**
-	 * 获得积分
-	 */
-	private Integer  score;
-
-
-	/**
-	 * 创建时间格式化成字符串
-	 */
-	@Extend
-	private String createTimeStr;
-
-
-	public String getCreateTimeStr() {
-		if (this.getCreateTime() == null) {
-			return "";
-		}
-		return DateUtil.dateToString(this.getCreateTime(), DateUtil.DATE_FORMAT_DD);
-	}
-	
-
-	public Integer getId() {
-		return id;
-	}
-   	
-   	public void setId(Integer id) {
-		this.id=id;
-	}
-   	
-
-	public String getBeneficiaryId() {
-		return beneficiaryId;
-	}
-   	
-   	public void setBeneficiaryId(String beneficiaryId) {
-		this.beneficiaryId=beneficiaryId;
-	}
-   	
-
-	public String getBuyerId() {
-		return buyerId;
-	}
-   	
-   	public void setBuyerId(String buyerId) {
-		this.buyerId=buyerId;
-	}
-   	
-
-	public String getBuyerName() {
-		return buyerName;
-	}
-   	
-   	public void setBuyerName(String buyerName) {
-		this.buyerName=buyerName;
-	}
-
-
-	public String getBuyerAvatarUrl() {
-		return buyerAvatarUrl;
-	}
-
-	public void setBuyerAvatarUrl(String buyerAvatarUrl) {
-		this.buyerAvatarUrl = buyerAvatarUrl;
-	}
-
-	public Integer getOrderId() {
-		return orderId;
-	}
-   	
-   	public void setOrderId(Integer orderId) {
-		this.orderId=orderId;
-	}
-   	
-
-	public BigDecimal getAmount() {
-		return amount;
-	}
-   	
-   	public void setAmount(BigDecimal amount) {
-		this.amount=amount;
-	}
-   	
-
-	public Integer getScore() {
-		return score;
-	}
-   	
-   	public void setScore(Integer score) {
-		this.score=score;
-	}
-   	
-
-
-  
-}
\ No newline at end of file
diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/dao/ShopScoreRecordDao.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/dao/ShopScoreRecordDao.java
deleted file mode 100644
index 9475abe..0000000
--- a/zq-erp/src/main/java/com/matrix/system/shopXcx/dao/ShopScoreRecordDao.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package com.matrix.system.shopXcx.dao;
-
-import org.apache.ibatis.annotations.Param;
-import java.util.List;
-import java.util.Map;
-import com.matrix.core.pojo.PaginationVO;
-import com.matrix.system.shopXcx.bean.ShopScoreRecord;
-
-/**
- * @description 用户积分获取记录
- * @author jyy
- * @date 2019-08-09 15:10
- */
-public interface ShopScoreRecordDao{
-
-	public int insert(@Param("item") ShopScoreRecord shopScoreRecord);
-   	
-   	public int batchInsert(@Param("list") List<ShopScoreRecord> shopScoreRecordList);
-   	
-	public int updateByMap(Map<String, Object> modifyMap);
-	
-	public int updateByModel(@Param("record") ShopScoreRecord shopScoreRecord);
-	
-	public int deleteByIds(@Param("list") List<String> list);
-	
-	public int deleteById(Integer id);
-
-	public int deleteByModel(@Param("record") ShopScoreRecord shopScoreRecord);
-	
-	public List<ShopScoreRecord> selectInPage(@Param("record") ShopScoreRecord shopScoreRecord, @Param("pageVo") PaginationVO pageVo);
-
-	public List<ShopScoreRecord> selectByModel(@Param("record") ShopScoreRecord shopScoreRecord);
-	
-	public int selectTotalRecord(@Param("record") ShopScoreRecord shopScoreRecord);
-	
-	public ShopScoreRecord  selectById(Integer id);
-	
-	public ShopScoreRecord  selectForUpdate(Integer id);
-	
-}
\ No newline at end of file
diff --git a/zq-erp/src/main/resources/mybatis/mapper/score/ScoreUseRecordDao.xml b/zq-erp/src/main/resources/mybatis/mapper/score/ScoreUseRecordDao.xml
index ca3b694..ab3d85e 100644
--- a/zq-erp/src/main/resources/mybatis/mapper/score/ScoreUseRecordDao.xml
+++ b/zq-erp/src/main/resources/mybatis/mapper/score/ScoreUseRecordDao.xml
@@ -3,41 +3,18 @@
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 
 <mapper namespace="com.matrix.system.score.dao.ScoreUseRecordDao">
-	<!-- 定义ScoreUseRecord 的复杂关联map -->
-	<resultMap type="com.matrix.system.score.entity.ScoreUseRecord" id="ScoreUseRecordMap">
-		<id property="id" column="id" />
-		<result property="createBy" column="create_by" />
-		<result property="createTime" column="create_time" />
-		<result property="updateBy" column="update_by" />
-		<result property="updateTime" column="update_time" />
-			<result property="recType" column="rec_type" />
-			<result property="recNum" column="rec_num" />
-			<result property="businessId" column="business_id" />
-			<result property="scoreVipDetailId" column="score_vip_detail_id" />
-			<result property="preScore" column="pre_score" />
-			<result property="nowScore" column="now_score" />
-			<result property="userId" column="user_id" />
-			<result property="remarks" column="remarks" />
-			<result property="companyId" column="company_id" />
-	</resultMap>
-	
-	
-	<!-- 定义ScoreUseRecord 的简单map  ,本map不添加其他的关联属性 -->
-	<resultMap type="com.matrix.system.score.entity.ScoreUseRecord" id="ScoreUseRecordSimpleMap">
-		<id property="id" column="id" />
-		<result property="createBy" column="create_by" />
-		<result property="createTime" column="create_time" />
-		<result property="updateBy" column="update_by" />
-		<result property="updateTime" column="update_time" />
-			<result property="recType" column="rec_type" />
-			<result property="recNum" column="rec_num" />
-			<result property="businessId" column="business_id" />
-			<result property="scoreVipDetailId" column="score_vip_detail_id" />
-			<result property="preScore" column="pre_score" />
-			<result property="nowScore" column="now_score" />
-			<result property="userId" column="user_id" />
-			<result property="remarks" column="remarks" />
-			<result property="companyId" column="company_id" />
-	</resultMap>
+
+    <select id="selectFlowList" resultType="com.matrix.system.score.entity.ScoreUseRecord">
+		select * from score_use_record
+		where open_id=#{record.userId}
+		and DATE_FORMAT(create_time,'%Y-%m')=#{record.queryTime}
+		<if test="record.revenueType==1">
+			and rec_num>0
+		</if>
+		<if test="record.revenueType==2">
+			<![CDATA[ and rec_num<0 ]]>
+		</if>
+		order by create_time desc
+	</select>
 
 </mapper>
\ No newline at end of file
diff --git a/zq-erp/src/test/java/com/matrix/JyyTests.java b/zq-erp/src/test/java/com/matrix/JyyTests.java
index ced21db..f199835 100644
--- a/zq-erp/src/test/java/com/matrix/JyyTests.java
+++ b/zq-erp/src/test/java/com/matrix/JyyTests.java
@@ -32,7 +32,7 @@
 
 	@Test
 	public void scoreVipDetailService() throws InterruptedException {
-		scoreVipDetailService.deductionScore("oJkRK4yelehsY4S7I6Ee1ydWtQMI",null,15,1L,1);
+		scoreVipDetailService.addScore("oJkRK4yelehsY4S7I6Ee1ydWtQMI",null,null,15,1L,1);
 	}
 
 	/**

--
Gitblit v1.9.1