Przeglądaj źródła

Merge remote-tracking branch 'origin/ScrmStores' into ScrmStores

yjwang 3 dni temu
rodzic
commit
fdae3f860e

+ 54 - 4
fs-admin/src/main/java/com/fs/web/controller/system/SysDeptController.java

@@ -7,9 +7,12 @@ import java.util.List;
 
 import com.fs.common.core.domain.R;
 import com.fs.common.core.domain.model.LoginUser;
+import com.fs.common.core.page.TableDataInfo;
 import com.fs.common.utils.ServletUtils;
 import com.fs.framework.web.service.TokenService;
+import com.fs.system.domain.SysDeptConfigLog;
 import com.fs.system.service.ISysConfigService;
+import com.fs.system.service.ISysDeptConfigLogService;
 import com.fs.system.service.ISysDeptConfigService;
 import org.apache.commons.lang3.ArrayUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -46,6 +49,8 @@ public class SysDeptController extends BaseController
     @Autowired
     private ISysDeptConfigService sysDeptConfigService;
     @Autowired
+    private ISysDeptConfigLogService sysDeptConfigLogService;
+    @Autowired
     private TokenService tokenService;
 
     /**
@@ -185,16 +190,61 @@ public class SysDeptController extends BaseController
     }
     @Log(title = "部门红包金额充值", businessType = BusinessType.UPDATE)
     @GetMapping("/addRedMoney")
-    public R addRedMoney(Long deptId, BigDecimal money){
+    public R addRedMoney(Long deptId, BigDecimal money, String remark){
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        sysDeptConfigService.addRedMoney(deptId, money, loginUser, remark);
+        return R.ok();
+    }
+
+    @Log(title = "部门红包金额扣减", businessType = BusinessType.UPDATE)
+    @GetMapping("/deductRedMoney")
+    public R deductRedMoney(Long deptId, BigDecimal money, String remark){
         LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
-        sysDeptConfigService.addRedMoney(deptId, money, loginUser);
+        sysDeptConfigService.deductRedMoney(deptId, money, loginUser, remark);
         return R.ok();
     }
+
     @Log(title = "部门流量充值", businessType = BusinessType.UPDATE)
     @GetMapping("/addFlowNum")
-    public R addFlowNum(Long deptId, BigDecimal money){
+    public R addFlowNum(Long deptId, BigDecimal money, String remark){
         LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
-        sysDeptConfigService.addFlowNum(deptId, money, loginUser);
+        sysDeptConfigService.addFlowNum(deptId, money, loginUser, remark);
         return R.ok();
     }
+
+    @Log(title = "部门流量扣减", businessType = BusinessType.UPDATE)
+    @GetMapping("/deductFlowNum")
+    public R deductFlowNum(Long deptId, BigDecimal money, String remark){
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        sysDeptConfigService.deductFlowNum(deptId, money, loginUser, remark);
+        return R.ok();
+    }
+
+        /**
+     * 查询部门流量明细(充值和扣减记录)
+     */
+    @Log(title = "部门流量明细查询", businessType = BusinessType.OTHER)
+    @GetMapping("/flowDetailList")
+    public TableDataInfo flowDetailList(Long deptId){
+        startPage();
+        SysDeptConfigLog query = new SysDeptConfigLog();
+        query.setDeptId(deptId);
+        query.setLogType(1); // 1表示流量类型
+        List<SysDeptConfigLog> list = sysDeptConfigLogService.selectSysDeptConfigLogList(query);
+        return getDataTable(list);
+    }
+
+    /**
+     * 查询部门红包明细(充值和扣减记录)
+     */
+    @Log(title = "部门红包明细查询", businessType = BusinessType.OTHER)
+    @GetMapping("/redMoneyDetailList")
+    public TableDataInfo redMoneyDetailList(Long deptId){
+        startPage();
+        SysDeptConfigLog query = new SysDeptConfigLog();
+        query.setDeptId(deptId);
+        query.setLogType(0); // 0表示红包类型
+        List<SysDeptConfigLog> list = sysDeptConfigLogService.selectSysDeptConfigLogList(query);
+        return getDataTable(list);
+    }
 }

+ 1 - 1
fs-service/src/main/java/com/fs/company/service/impl/CompanyTrafficRecordServiceImpl.java

@@ -194,7 +194,7 @@ public class CompanyTrafficRecordServiceImpl extends ServiceImpl<CompanyTrafficR
                 deptConfig.setFlowNum(surplus);
                 deptConfig.setUpdateBy(record.getUserName());
                 deptConfig.setUpdateTime(new Date());
-                sysDeptConfigLogService.addLog(deptConfig.getDeptId(), 2, 1, trafficAmount.toString(), flowNum.toString(), surplus + "", record.getUserName(), "充值公司流量");
+                sysDeptConfigLogService.addLog(deptConfig.getDeptId(), 1, 1, trafficAmount.toString(), flowNum.toString(), surplus + "", record.getUserName(), "充值公司流量");
                 sysDeptConfigService.updateById(deptConfig);
             }
             record.setChangeTraffic(trafficAmount);//用于处理日志

+ 3 - 0
fs-service/src/main/java/com/fs/system/domain/SysDeptConfigLog.java

@@ -45,5 +45,8 @@ public class SysDeptConfigLog extends BaseEntity{
     @Excel(name = "操作完成后数量")
     private String lastNum;
 
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remark;
 
 }

+ 6 - 2
fs-service/src/main/java/com/fs/system/service/ISysDeptConfigService.java

@@ -64,9 +64,13 @@ public interface ISysDeptConfigService extends IService<SysDeptConfig>{
 
     void updatePadNum(Long deptId, Integer num, LoginUser loginUser, LocalDate endTime);
 
-    void addRedMoney(Long deptId, BigDecimal num, LoginUser loginUser);
+    void addRedMoney(Long deptId, BigDecimal num, LoginUser loginUser, String remark);
 
-    void addFlowNum(Long deptId, BigDecimal money, LoginUser loginUser);
+    void deductRedMoney(Long deptId, BigDecimal num, LoginUser loginUser, String remark);
+
+    void addFlowNum(Long deptId, BigDecimal money, LoginUser loginUser, String remark);
+
+    void deductFlowNum(Long deptId, BigDecimal money, LoginUser loginUser, String remark);
 
     SysDeptConfig getDeptConfig(Long deptId, LoginUser loginUser);
     SysDeptConfig getDeptConfig(Long deptId);

+ 44 - 10
fs-service/src/main/java/com/fs/system/service/impl/SysDeptConfigServiceImpl.java

@@ -11,11 +11,9 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.fs.common.core.domain.model.LoginUser;
 import com.fs.common.utils.DateUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.fs.company.service.ICompanyTrafficRecordService;
 import com.fs.system.domain.SysConfig;
 import com.fs.system.mapper.SysConfigMapper;
 import com.fs.system.service.ISysDeptConfigLogService;
-import lombok.AllArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.fs.system.mapper.SysDeptConfigMapper;
@@ -29,12 +27,12 @@ import com.fs.system.service.ISysDeptConfigService;
  * @date 2025-09-22
  */
 @Service
-@AllArgsConstructor
 public class SysDeptConfigServiceImpl extends ServiceImpl<SysDeptConfigMapper, SysDeptConfig> implements ISysDeptConfigService {
 
-
-    private final ISysDeptConfigLogService sysDeptConfigLogService;
-    private final SysConfigMapper sysConfigMapper;
+    @Autowired
+    private ISysDeptConfigLogService sysDeptConfigLogService;
+    @Autowired
+    private SysConfigMapper sysConfigMapper;
 
     /**
      * 查询部门配置
@@ -123,29 +121,65 @@ public class SysDeptConfigServiceImpl extends ServiceImpl<SysDeptConfigMapper, S
     }
 
     @Override
-    public void addRedMoney(Long deptId, BigDecimal num, LoginUser loginUser) {
+    public void addRedMoney(Long deptId, BigDecimal num, LoginUser loginUser, String remark) {
         SysDeptConfig deptConfig = getDeptConfig(deptId, loginUser);
         deptConfig.setUpdateBy(loginUser.getUsername());
         deptConfig.setUpdateTime(new Date());
         BigDecimal red = deptConfig.getRedPackage() == null ? BigDecimal.ZERO : deptConfig.getRedPackage();
         deptConfig.setRedPackage(red.add(num));
-        sysDeptConfigLogService.addLog(deptId, 0, 0, num.setScale(2, RoundingMode.UP).toString(), red.setScale(2, RoundingMode.UP).toString(), deptConfig.getRedPackage().setScale(2, RoundingMode.UP).toString(), loginUser.getUsername(), "");
+        // 如果remark为空,使用默认值
+        String finalRemark = (remark != null && !remark.isEmpty()) ? remark : "手动充值";
+        sysDeptConfigLogService.addLog(deptId, 0, 0, num.setScale(2, RoundingMode.UP).toString(), red.setScale(2, RoundingMode.UP).toString(), deptConfig.getRedPackage().setScale(2, RoundingMode.UP).toString(), loginUser.getUsername(), finalRemark);
         updateById(deptConfig);
+    }
+
+    @Override
+    public void deductRedMoney(Long deptId, BigDecimal num, LoginUser loginUser, String remark) {
+        SysDeptConfig deptConfig = getDeptConfig(deptId, loginUser);
+        deptConfig.setUpdateBy(loginUser.getUsername());
+        deptConfig.setUpdateTime(new Date());
+        BigDecimal red = deptConfig.getRedPackage() == null ? BigDecimal.ZERO : deptConfig.getRedPackage();
+
+        if (red.compareTo(num) < 0) {
+            throw new RuntimeException("部门红包金额不足,当前余额: " + red + ", 需要扣减: " + num);
+        }
 
+        String finalRemark = (remark != null && !remark.isEmpty()) ? remark : "手动扣减";
+        sysDeptConfigLogService.addLog(deptId, 0, 1, num.setScale(2, RoundingMode.UP).toString(), red.setScale(2, RoundingMode.UP).toString(), deptConfig.getRedPackage().setScale(2, RoundingMode.UP).toString(), loginUser.getUsername(), finalRemark);
+        updateById(deptConfig);
     }
 
     @Override
-    public void addFlowNum(Long deptId, BigDecimal money, LoginUser loginUser) {
+    public void addFlowNum(Long deptId, BigDecimal money, LoginUser loginUser, String remark) {
         SysDeptConfig deptConfig = getDeptConfig(deptId, loginUser);
         deptConfig.setUpdateBy(loginUser.getUsername());
         deptConfig.setUpdateTime(new Date());
         Long l = trafficConversion(money.longValue());
         long flowNum = deptConfig.getFlowNum() == null ? 0 : deptConfig.getFlowNum();
         deptConfig.setFlowNum(flowNum + l);
-        sysDeptConfigLogService.addLog(deptId, 1, 0, l.toString(), flowNum + "", deptConfig.getFlowNum().toString(), loginUser.getUsername(), "");
+        String finalRemark = (remark != null && !remark.isEmpty()) ? remark : "手动充值";
+        sysDeptConfigLogService.addLog(deptId, 1, 0, l.toString(), flowNum + "", deptConfig.getFlowNum().toString(), loginUser.getUsername(), finalRemark);
         updateById(deptConfig);
+    }
 
+    @Override
+    public void deductFlowNum(Long deptId, BigDecimal money, LoginUser loginUser, String remark) {
+        SysDeptConfig deptConfig = getDeptConfig(deptId, loginUser);
+        deptConfig.setUpdateBy(loginUser.getUsername());
+        deptConfig.setUpdateTime(new Date());
+        Long l = trafficConversion(money.longValue());
+        long flowNum = deptConfig.getFlowNum() == null ? 0 : deptConfig.getFlowNum();
+
+        if (flowNum < l) {
+            throw new RuntimeException("部门流量余额不足,当前余额: " + flowNum + ", 需要扣减: " + l);
+        }
+
+        deptConfig.setFlowNum(flowNum - l);
+        String finalRemark = (remark != null && !remark.isEmpty()) ? remark : "手动扣减";
+        sysDeptConfigLogService.addLog(deptId, 1, 1, l.toString(), flowNum + "", deptConfig.getFlowNum().toString(), loginUser.getUsername(), finalRemark);
+        updateById(deptConfig);
     }
+
     public Long trafficConversion(Long amount) {
         SysConfig config = sysConfigMapper.selectConfigByConfigKey("statis.config");
         JSONObject jsonObject = JSONObject.parseObject(config.getConfigValue());

+ 1 - 0
fs-service/src/main/resources/mapper/deptConfigLog/SysDeptConfigLogMapper.xml

@@ -33,6 +33,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="firstNum != null "> and first_num = #{firstNum}</if>
             <if test="lastNum != null "> and last_num = #{lastNum}</if>
         </where>
+        order by create_time desc, id desc
     </select>
     
     <select id="selectSysDeptConfigLogById" parameterType="Long" resultMap="SysDeptConfigLogResult">