From 7efc6ed86025b610cab109a2e9f83362740d8ed4 Mon Sep 17 00:00:00 2001
From: 李旭东 <woaiguo66@sina.com>
Date: 星期五, 08 十二月 2023 13:29:07 +0800
Subject: [PATCH] Merge branch 'master' of http://111.30.93.211:10101/r/supipe

---
 hd/pipe/secure/src/main/java/com/thhy/secure/modules/biz/integralAccount/service/impl/IntegralDetailServiceImpl.java |  222 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 222 insertions(+), 0 deletions(-)

diff --git a/hd/pipe/secure/src/main/java/com/thhy/secure/modules/biz/integralAccount/service/impl/IntegralDetailServiceImpl.java b/hd/pipe/secure/src/main/java/com/thhy/secure/modules/biz/integralAccount/service/impl/IntegralDetailServiceImpl.java
new file mode 100644
index 0000000..9e9c823
--- /dev/null
+++ b/hd/pipe/secure/src/main/java/com/thhy/secure/modules/biz/integralAccount/service/impl/IntegralDetailServiceImpl.java
@@ -0,0 +1,222 @@
+package com.thhy.secure.modules.biz.integralAccount.service.impl;
+
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import com.thhy.general.common.BasicResult;
+import com.thhy.general.config.SysUserInfo;
+import com.thhy.general.utils.ExcelUtils;
+import com.thhy.general.utils.UUIDUtils;
+import com.thhy.general.utils.UserInfoUtils;
+import com.thhy.secure.modules.biz.integralAccount.entity.IntegralAccountEntity;
+import com.thhy.secure.modules.biz.integralAccount.entity.IntegralDetailDto;
+import com.thhy.secure.modules.biz.integralAccount.entity.IntegralDetailEntity;
+import com.thhy.secure.modules.biz.integralAccount.mapper.IntegralDetailMapper;
+import com.thhy.secure.modules.biz.integralAccount.service.IntegralDetailService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Author QiuYuHao
+ * @CreateDate 2023-11-27 18:33:40
+ * 积分超市实现
+ */
+@Service
+public class IntegralDetailServiceImpl implements IntegralDetailService
+{
+
+	@Autowired
+	private IntegralDetailMapper integralDetailMapper;
+
+	private static final Object Lock= new Object();
+	/**
+	 * 积分超市新增和修改
+	 * @param integralDetailEntity
+	 */
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public BasicResult insertAndUpdate(IntegralDetailEntity integralDetailEntity){
+		String id = integralDetailEntity.getId();
+		SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo();
+		String sysUserId = sysUserInfo.getUserId();
+		String companyId = sysUserInfo.getCompanyId();
+		//扣积分逻辑
+		synchronized (Lock){
+			IntegralAccountEntity integralAccountEntity = IntegralAccountEntity
+					.builder()
+					.userId(integralDetailEntity.getUserId())
+					.updateUser(sysUserId)
+					.updateTime(new Date())
+					.id(UUIDUtils.create())
+					.build();
+			Map map = new HashMap();
+			map.put("userId",integralDetailEntity.getUserId());
+			//查询账户
+			IntegralAccountEntity queryAccount = integralDetailMapper.selectByOne(map);
+			if(queryAccount == null || queryAccount.getTotalIntegral()<integralDetailEntity.getIntegralWater()){//无账户
+				return BasicResult.faild("500","积分不足,无法扣除积分",null);
+			}
+			//有账户
+			Double totalConsumption = queryAccount.getTotalConsumption();//总消耗
+			Double accumulateIntegral = queryAccount.getAccumulateIntegral();//累计积分
+			Double totalIntegral = queryAccount.getTotalIntegral();//当前余额
+
+			integralAccountEntity.setTotalIntegral(totalIntegral-integralDetailEntity.getIntegralWater());
+			integralAccountEntity.setAccumulateIntegral(accumulateIntegral);
+			integralAccountEntity.setTotalConsumption(totalConsumption+integralDetailEntity.getIntegralWater());
+			//修改账户
+			integralDetailMapper.insertAndUpdateAccount(integralAccountEntity);
+			if(id  == null){
+				integralDetailEntity.setCompanyId(companyId);
+				integralDetailEntity.setId(UUIDUtils.create());
+				integralDetailEntity.setCreateTime(new Date());
+				integralDetailEntity.setCreateUser(sysUserId);
+			}
+			integralDetailEntity.setBalanc(totalIntegral-integralDetailEntity.getIntegralWater());//拿到当前余额
+
+			integralDetailEntity.setType(2);
+			integralDetailEntity.setIntegralSource("积分超市");
+			//添加或修改明细
+			integralDetailMapper.insertDetailAndUpdate(integralDetailEntity);
+		}
+		return BasicResult.success();
+	}
+
+	/**
+	 * 积分超市
+	 * @param map
+	 * @return
+	 */
+	@Override
+	public BasicResult selectPageList(Map map){
+		SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo();
+		String companyId = sysUserInfo.getCompanyId();
+		int pageNum = (int) map.get("pageNum");
+		int pageSize = (int) map.get("pageSize");
+		PageHelper.startPage(pageNum,pageSize);
+		map.put("companyId",companyId);
+		List<IntegralDetailEntity> integralDetailEntities = integralDetailMapper.selectPageList(map);
+		return BasicResult.success(new PageInfo<>(integralDetailEntities));
+	}
+
+
+	/**
+	 * 积分超市删除
+	 * @param id
+	 */
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public BasicResult delete(String id){
+		Map map =new HashMap();
+		map.put("id",id);
+		IntegralDetailDto integralDetailEntity = integralDetailMapper.selectSafeIntegralInfo(map).get(0);
+		Double integralWater = integralDetailEntity.getIntegralWater();//获取消耗积分
+		Map account = new HashMap();
+		account.put("userId",integralDetailEntity.getUserId());
+		//查询账户
+		IntegralAccountEntity queryAccount = integralDetailMapper.selectByOne(account);
+
+		Double totalConsumption = queryAccount.getTotalConsumption();//总消耗
+		Double accumulateIntegral = queryAccount.getAccumulateIntegral();//累计积分
+		Double totalIntegral = queryAccount.getTotalIntegral();//当前余额
+		synchronized (Lock){
+			IntegralAccountEntity integralAccountEntity = IntegralAccountEntity
+					.builder()
+					.userId(integralDetailEntity.getUserId())
+					.totalConsumption(totalConsumption - integralWater)
+					.accumulateIntegral(accumulateIntegral + integralWater)
+					.totalIntegral(totalIntegral + integralWater)
+					.build();
+			integralDetailMapper.insertAndUpdateAccount(integralAccountEntity);
+			integralDetailMapper.delete(id);
+		}
+		return BasicResult.success();
+	}
+
+
+	/**
+	 * 安全积分列表
+	 */
+	@Override
+	public BasicResult selectSafeIntegralPageList(Map map){
+		SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo();
+		String companyId = sysUserInfo.getCompanyId();
+		int pageNum = (int) map.get("pageNum");
+		int pageSize = (int) map.get("pageSize");
+		PageHelper.startPage(pageNum,pageSize);
+		map.put("companyId",companyId);
+		List<IntegralAccountEntity> integralAccountEntities = integralDetailMapper.selectSafeIntegralPageList(map);
+		return BasicResult.success(new PageInfo<>(integralAccountEntities));
+	}
+
+	/**
+	 * 安全积分明细
+	 * @param map
+	 * @return
+	 */
+	@Override
+	public BasicResult selectSafeIntegralInfo(Map map){
+		SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo();
+		String companyId = sysUserInfo.getCompanyId();
+		IntegralAccountEntity integralAccountEntity = integralDetailMapper.selectByOne(map);
+		map.put("integral",integralAccountEntity.getTotalIntegral());
+		int pageNum = (int) map.get("pageNum");
+		int pageSize = (int) map.get("pageSize");
+		PageHelper.startPage(pageNum,pageSize);
+		map.put("companyId",companyId);
+		List<IntegralDetailDto> integralDetailEntities = integralDetailMapper.selectSafeIntegralInfo(map);
+		map.put("data",new PageInfo<>(integralDetailEntities));
+		return BasicResult.success(map);
+	}
+
+	@Override
+	public void exportList(Map map, HttpServletResponse rsp) {
+		SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo();
+		String companyId = sysUserInfo.getCompanyId();
+		map.put("companyId",companyId);
+		List<IntegralDetailEntity> integralDetailEntities = integralDetailMapper.selectPageList(map);
+
+		integralDetailEntities.forEach(obj->{
+			if(obj.getUserType() ==1){
+				obj.setUserTypeName("管服人员");
+			}
+			if(obj.getUserType() ==2){
+				obj.setUserTypeName("劳务人员");
+			}
+		});
+		ExcelUtils.downExcel(integralDetailEntities,IntegralDetailEntity.class,rsp,"班组列表");
+	}
+
+	@Override
+	public void exportSafeIntegralInfo(Map map, HttpServletResponse rsp) {
+		SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo();
+		String companyId = sysUserInfo.getCompanyId();
+
+		IntegralAccountEntity integralAccountEntity = integralDetailMapper.selectByOne(map);
+		map.put("integral",integralAccountEntity.getTotalIntegral());
+		map.put("companyId",companyId);
+		List<IntegralDetailDto> integralDetailEntities = integralDetailMapper.selectSafeIntegralInfo(map);
+		integralDetailEntities.forEach(obj->{
+			if(obj.getUserType() ==1){
+				obj.setUserTypeName("管服人员");
+			}
+			if(obj.getUserType() ==2){
+				obj.setUserTypeName("劳务人员");
+			}
+			if(obj.getType() == 1){
+				obj.setTypeName("获取");
+			}
+			if(obj.getType() == 2){
+				obj.setTypeName("消耗");
+			}
+		});
+		ExcelUtils.downExcel(integralDetailEntities,IntegralDetailDto.class,rsp,"班组列表");
+	}
+
+}

--
Gitblit v1.9.3