瀏覽代碼

改动过的

huanglizhi 1 年之前
父節點
當前提交
6fd695059f
共有 48 個文件被更改,包括 1733 次插入113 次删除
  1. 51 0
      module-erp/src/main/java/com/hys/app/controller/erp/use/AppVersionController.java
  2. 43 0
      module-erp/src/main/java/com/hys/app/controller/erp/use/MsgCompanyController.java
  3. 54 0
      module-erp/src/main/java/com/hys/app/controller/erp/use/MsgConfigController.java
  4. 1 1
      module-erp/src/main/java/com/hys/app/controller/erp/use/PayController.java
  5. 82 0
      module-erp/src/main/java/com/hys/app/controller/erp/use/SmsMailController.java
  6. 1 1
      module-erp/src/main/java/com/hys/app/controller/system/AdminUserManagerController.java
  7. 24 0
      module-erp/src/main/java/com/hys/app/converter/erp/MailSmsCompanyConverter.java
  8. 24 0
      module-erp/src/main/java/com/hys/app/converter/erp/MsgConfigConverter.java
  9. 0 4
      module-erp/src/main/java/com/hys/app/converter/erp/ProcurementContractProductConverter.java
  10. 0 1
      module-erp/src/main/java/com/hys/app/converter/erp/ProductConverter.java
  11. 25 0
      module-erp/src/main/java/com/hys/app/converter/erp/SmsMailConverter.java
  12. 17 0
      module-erp/src/main/java/com/hys/app/mapper/erp/AppVersionMapper.java
  13. 21 0
      module-erp/src/main/java/com/hys/app/mapper/erp/MailSmsCountMapper.java
  14. 16 0
      module-erp/src/main/java/com/hys/app/mapper/erp/MsgCompanyMapper.java
  15. 16 0
      module-erp/src/main/java/com/hys/app/mapper/erp/MsgConfigMapper.java
  16. 19 0
      module-erp/src/main/java/com/hys/app/mapper/erp/SmsMailMapper.java
  17. 0 7
      module-erp/src/main/java/com/hys/app/mapper/goods/ProductMapper.java
  18. 56 0
      module-erp/src/main/java/com/hys/app/model/erp/dos/MailSmsCountDO.java
  19. 49 0
      module-erp/src/main/java/com/hys/app/model/erp/dos/MsgCompanyConfig.java
  20. 53 0
      module-erp/src/main/java/com/hys/app/model/erp/dos/MsgConfig.java
  21. 17 0
      module-erp/src/main/java/com/hys/app/model/erp/dto/IdsDto.java
  22. 54 0
      module-erp/src/main/java/com/hys/app/model/erp/dto/MsgConfigDTO.java
  23. 20 0
      module-erp/src/main/java/com/hys/app/model/erp/entity/MailSmsCountQuery.java
  24. 35 0
      module-erp/src/main/java/com/hys/app/model/erp/enums/MsgTypeEnum.java
  25. 21 0
      module-erp/src/main/java/com/hys/app/model/erp/vo/MailSmsCountVO.java
  26. 34 0
      module-erp/src/main/java/com/hys/app/model/erp/vo/MsgCompanyConfigVO.java
  27. 22 0
      module-erp/src/main/java/com/hys/app/model/erp/vo/MsgConfigVO.java
  28. 48 0
      module-erp/src/main/java/com/hys/app/model/system/dos/AppVersion.java
  29. 88 0
      module-erp/src/main/java/com/hys/app/model/system/dos/SmsMailTemplate.java
  30. 61 0
      module-erp/src/main/java/com/hys/app/model/system/dto/SmsMailTemplateDTO.java
  31. 42 0
      module-erp/src/main/java/com/hys/app/model/system/vo/SmsMailTemplateQuery.java
  32. 76 0
      module-erp/src/main/java/com/hys/app/model/system/vo/SmsMailTemplateVO.java
  33. 22 0
      module-erp/src/main/java/com/hys/app/service/erp/AppVersionManager.java
  34. 37 0
      module-erp/src/main/java/com/hys/app/service/erp/MailSmsCountManager.java
  35. 28 0
      module-erp/src/main/java/com/hys/app/service/erp/MsgCompanyManager.java
  36. 45 0
      module-erp/src/main/java/com/hys/app/service/erp/MsgConfigManager.java
  37. 50 0
      module-erp/src/main/java/com/hys/app/service/erp/SmsMailManager.java
  38. 63 0
      module-erp/src/main/java/com/hys/app/service/erp/impl/AppVersionManagerImpl.java
  39. 74 0
      module-erp/src/main/java/com/hys/app/service/erp/impl/MailSmsCountManagerImpl.java
  40. 43 0
      module-erp/src/main/java/com/hys/app/service/erp/impl/MsgCompanyManagerImpl.java
  41. 92 0
      module-erp/src/main/java/com/hys/app/service/erp/impl/MsgConfigManagerImpl.java
  42. 133 0
      module-erp/src/main/java/com/hys/app/service/erp/impl/SmsMailManagerImpl.java
  43. 0 2
      module-erp/src/main/java/com/hys/app/service/erp/impl/StockStatisticsManagerImpl.java
  44. 0 26
      module-erp/src/main/java/com/hys/app/service/erp/impl/WarehouseEntryManagerImpl.java
  45. 24 8
      module-erp/src/main/java/com/hys/app/service/system/impl/AdminUserManagerImpl.java
  46. 0 51
      module-erp/src/main/java/com/hys/app/util/AliEmailUtil.java
  47. 48 10
      module-erp/src/main/java/com/hys/app/util/AliSmsUtil.java
  48. 4 2
      module-erp/src/main/java/com/hys/app/util/MailSmtpUtil.java

+ 51 - 0
module-erp/src/main/java/com/hys/app/controller/erp/use/AppVersionController.java

@@ -0,0 +1,51 @@
+package com.hys.app.controller.erp.use;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.hys.app.model.support.LogClient;
+import com.hys.app.model.support.validator.annotation.Log;
+import com.hys.app.model.system.dos.AppVersion;
+import com.hys.app.model.system.vo.SmsMailTemplateQuery;
+import com.hys.app.service.erp.AppVersionManager;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+
+@Api(tags = "消息配置")
+@RestController
+@RequestMapping("/admin/erp/appVersion")
+@AllArgsConstructor
+public class AppVersionController {
+
+    private AppVersionManager appVersionManager;
+
+    @PostMapping("add")
+    @ApiOperation(value = "新增版本")
+    @Log(client = LogClient.admin, detail = "新增版本号为[${appVersion.version}]的消息")
+    public Long addVersion(@Valid @RequestBody AppVersion  appVersion) {
+        return appVersionManager.addVersion(appVersion);
+    }
+
+
+    @GetMapping("list")
+    @ApiOperation(value = "模板分页")
+    public IPage<AppVersion> queryTemplate(SmsMailTemplateQuery query) {
+        return appVersionManager.page(new Page<>(query.getPageNo(), query.getPageSize()));
+    }
+
+
+    @GetMapping("checkVersion")
+    @ApiOperation(value = "校验版本信息,如果不是最新的版本会返回最新的版本,否则返回null")
+    public AppVersion  checkVersion(String version) {
+        AppVersion one = appVersionManager.getOne(new LambdaQueryWrapper<AppVersion>().eq(AppVersion::getVersion, version).eq(AppVersion::getStatus, true));
+        if (ObjectUtil.isNull(one)){
+           return appVersionManager.getOne(new LambdaQueryWrapper<AppVersion>().eq(AppVersion::getStatus, true));
+        }
+        return null;
+    }
+}

+ 43 - 0
module-erp/src/main/java/com/hys/app/controller/erp/use/MsgCompanyController.java

@@ -0,0 +1,43 @@
+package com.hys.app.controller.erp.use;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.hys.app.framework.context.user.AdminUserContext;
+import com.hys.app.framework.exception.ServiceException;
+import com.hys.app.model.erp.dos.MsgCompanyConfig;
+import com.hys.app.model.erp.dto.IdsDto;
+import com.hys.app.model.erp.dto.MsgConfigDTO;
+import com.hys.app.model.erp.entity.Company;
+import com.hys.app.model.support.LogClient;
+import com.hys.app.model.support.validator.annotation.Log;
+import com.hys.app.service.erp.CompanyManager;
+import com.hys.app.service.erp.MsgCompanyManager;
+import com.hys.app.service.erp.MsgConfigManager;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.List;
+
+@Api(tags = "消息配置")
+@RestController
+@RequestMapping("/admin/erp/msgConfig")
+@AllArgsConstructor
+public class MsgCompanyController {
+
+    private MsgCompanyManager msgCompanyManager;
+
+    @PostMapping("bandMsg")
+    @ApiOperation(value = "公司绑定模板")
+    @Log(client = LogClient.admin, detail = "[${msgConfigDTO.title}]的消息")
+    public void bandMsg(@Valid @RequestBody IdsDto idsDto) {
+        msgCompanyManager.bandMsg(idsDto);
+    }
+
+    @GetMapping("getBandAllMsg")
+    @ApiOperation(value = "获取公司绑定的所有模板")
+    public List<MsgCompanyConfig> getAllMsg() {
+        return msgCompanyManager.list(new LambdaQueryWrapper<MsgCompanyConfig>().eq(MsgCompanyConfig::getCompanyId, AdminUserContext.getCompanyId()));
+    }
+}

+ 54 - 0
module-erp/src/main/java/com/hys/app/controller/erp/use/MsgConfigController.java

@@ -0,0 +1,54 @@
+package com.hys.app.controller.erp.use;
+
+import com.hys.app.framework.context.user.AdminUserContext;
+import com.hys.app.framework.exception.ServiceException;
+import com.hys.app.model.erp.dto.MsgConfigDTO;
+import com.hys.app.model.support.LogClient;
+import com.hys.app.model.support.validator.annotation.Log;
+import com.hys.app.service.erp.MsgConfigManager;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+
+@Api(tags = "消息配置")
+@RestController
+@RequestMapping("/admin/erp/msgConfig")
+@AllArgsConstructor
+public class MsgConfigController {
+
+    private MsgConfigManager msgConfigManager;
+
+    @PostMapping("add")
+    @ApiOperation(value = "新增消息")
+    @Log(client = LogClient.admin, detail = "新增名称为[${msgConfigDTO.title}]的消息")
+    public Long addMsg(@Valid @RequestBody MsgConfigDTO msgConfigDTO) {
+        return msgConfigManager.addMsg(msgConfigDTO);
+    }
+
+    @PostMapping("changeTemplate/{id}/{templateCode}")
+    @ApiOperation(value = "更换消息模板")
+    @Log(client = LogClient.admin, detail = "创建名称为[${companyDO.name}]的公司信息")
+    public void changeTemplate(@PathVariable String id, @PathVariable String templateCode) {
+        msgConfigManager.changeTemplate(id, templateCode);
+    }
+
+    @PostMapping("deleteMsg/{id}")
+    @ApiOperation(value = "更换消息模板")
+    @Log(client = LogClient.admin, detail = "删除id为[${id}]的消息")
+    public void deleteMsg(@PathVariable String id) {
+        if (!AdminUserContext.hasFound()) {
+            throw new ServiceException("只有平台管理员才能做此操作");
+        }
+        msgConfigManager.deleteMsg(id);
+    }
+
+
+    @GetMapping("getAllMsg")
+    @ApiOperation(value = "获取所有消息不分组树状图")
+    public void getAllMsg() {
+        msgConfigManager.getAllMsg();
+    }
+}

+ 1 - 1
module-erp/src/main/java/com/hys/app/controller/erp/use/PayController.java

@@ -120,7 +120,7 @@ public class PayController {
     }
     @PostMapping("/sendmail")
     public void sendmail(@RequestBody  Map<String,Object> map )  {
-        MailSmtpUtil.sendEmail(map.get("toMail").toString(),map.get("subject").toString(),map.get("content"));
+        MailSmtpUtil.sendEmail(map.get("toMail").toString(),map.get("subject").toString(),map.get("content").toString());
     }
 
     @PostMapping("/senSms")

+ 82 - 0
module-erp/src/main/java/com/hys/app/controller/erp/use/SmsMailController.java

@@ -0,0 +1,82 @@
+package com.hys.app.controller.erp.use;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.hys.app.converter.erp.SmsMailConverter;
+import com.hys.app.framework.context.user.AdminUserContext;
+import com.hys.app.model.erp.dos.MailSmsCountDO;
+import com.hys.app.model.erp.entity.*;
+import com.hys.app.model.erp.vo.MailSmsCountVO;
+import com.hys.app.model.support.LogClient;
+import com.hys.app.model.support.validator.annotation.Log;
+import com.hys.app.model.system.dos.SmsMailTemplate;
+import com.hys.app.model.system.dto.SmsMailTemplateDTO;
+import com.hys.app.model.system.vo.SmsMailTemplateQuery;
+import com.hys.app.model.system.vo.SmsMailTemplateVO;
+import com.hys.app.service.erp.CompanyManager;
+import com.hys.app.service.erp.MailSmsCountManager;
+import com.hys.app.service.erp.SmsMailManager;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.math.BigDecimal;
+import java.util.List;
+
+@Api(tags = "公司")
+@RestController
+@RequestMapping("/admin/erp/SmsMailTemplate")
+@AllArgsConstructor
+public class SmsMailController {
+
+    private SmsMailManager smsMailManager;
+    private MailSmsCountManager mailSmsCountManager;
+
+    @PostMapping("createTemplate")
+    @ApiOperation(value = "创建模板")
+    @Log(client = LogClient.admin, detail = "创建名称为[${smsMailTemplateDTO.name}]的模板")
+    public Long createTemplate(@Valid @RequestBody SmsMailTemplateDTO smsMailTemplateDTO) {
+        return smsMailManager.createTemplate(smsMailTemplateDTO);
+    }
+
+    @PostMapping("updateTemplate/{id}")
+    @ApiOperation(value = "修改模板")
+    @Log(client = LogClient.admin, detail = "修改名称为[${companyDO.name}]的公司信息")
+    public Long updateTemplate(@Valid @RequestBody SmsMailTemplateDTO smsMailTemplateDTO, @PathVariable Long id) {
+        return smsMailManager.updateTemplate(smsMailTemplateDTO, id);
+    }
+
+    @GetMapping("getById/{id}")
+    @ApiOperation(value = "获取模板信息")
+    public SmsMailTemplateVO renewCompanyDifference(@PathVariable Long id) {
+        return SmsMailConverter.INSTANCE.convert(smsMailManager.getById(id));
+    }
+
+    @GetMapping()
+    @ApiOperation(value = "模板分页")
+    public IPage<SmsMailTemplateVO> queryTemplate(SmsMailTemplateQuery query) {
+        return smsMailManager.queryTemplate(query);
+    }
+
+    @PostMapping("delete/{id}")
+    @ApiOperation(value = "删除模板")
+    public void delete(@PathVariable Long id) {
+        smsMailManager.delete(id);
+    }
+
+    @PostMapping("alterStatus/{id}")
+    @ApiOperation(value = "修改模板状态")
+    public void alterStatus(@PathVariable Long id) {
+        SmsMailTemplate byId = smsMailManager.getById(id);
+        byId.setEnableStatus(!byId.getEnableStatus());
+        smsMailManager.updateById(byId);
+    }
+    @GetMapping("getSendNumByCompany")
+    @ApiOperation(value = "获取各公司")
+    public IPage<MailSmsCountVO> getSendNumByCompany(MailSmsCountQuery query) {
+        return mailSmsCountManager.getPage(query);
+    }
+}

+ 1 - 1
module-erp/src/main/java/com/hys/app/controller/system/AdminUserManagerController.java

@@ -51,7 +51,7 @@ public class AdminUserManagerController {
             @ApiImplicitParam(name = "username", value = "用户名", required = true, dataType = "String", paramType = "query"),
             @ApiImplicitParam(name = "password", value = "密码", required = true, dataType = "String", paramType = "query")
     })
-    public AdminLoginVO login(@NotEmpty(message = "用户名不能为空") String username, @NotEmpty(message = "密码不能为空") String password, @NotEmpty(message = "公司不能为空") String companyName) {
+    public AdminLoginVO login(@NotEmpty(message = "用户名不能为空") String username, @NotEmpty(message = "密码不能为空") String password,String companyName) {
         //验证登录参数是否正确
         this.validatorManager.validate();
 

+ 24 - 0
module-erp/src/main/java/com/hys/app/converter/erp/MailSmsCompanyConverter.java

@@ -0,0 +1,24 @@
+package com.hys.app.converter.erp;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.hys.app.model.erp.dos.MailSmsCountDO;
+import com.hys.app.model.erp.entity.Company;
+import com.hys.app.model.erp.entity.CompanyDO;
+import com.hys.app.model.erp.entity.CompanyUpdateDO;
+import com.hys.app.model.erp.entity.CompanyVO;
+import com.hys.app.model.erp.vo.MailSmsCountVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.MappingConstants;
+import org.mapstruct.MappingTarget;
+import org.mapstruct.factory.Mappers;
+
+@Mapper(componentModel = MappingConstants.ComponentModel.SPRING)
+public interface MailSmsCompanyConverter {
+    MailSmsCompanyConverter INSTANCE = Mappers.getMapper(MailSmsCompanyConverter.class);
+
+    MailSmsCountVO convert(MailSmsCountDO bean);
+
+
+    Page<MailSmsCountVO> convert(Page<MailSmsCountDO> page);
+
+}

+ 24 - 0
module-erp/src/main/java/com/hys/app/converter/erp/MsgConfigConverter.java

@@ -0,0 +1,24 @@
+package com.hys.app.converter.erp;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.hys.app.model.erp.dos.MsgConfig;
+import com.hys.app.model.erp.dto.MsgConfigDTO;
+import com.hys.app.model.erp.entity.Company;
+import com.hys.app.model.erp.entity.CompanyDO;
+import com.hys.app.model.erp.entity.CompanyUpdateDO;
+import com.hys.app.model.erp.entity.CompanyVO;
+import com.hys.app.model.erp.vo.MsgConfigVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.MappingConstants;
+import org.mapstruct.MappingTarget;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+@Mapper(componentModel = MappingConstants.ComponentModel.SPRING)
+public interface MsgConfigConverter {
+    MsgConfigConverter INSTANCE = Mappers.getMapper(MsgConfigConverter.class);
+    MsgConfig convert(MsgConfigDTO bean);
+    List<MsgConfigVO> convert(List<MsgConfig> bean);
+
+}

+ 0 - 4
module-erp/src/main/java/com/hys/app/converter/erp/ProcurementContractProductConverter.java

@@ -21,10 +21,6 @@ public interface ProcurementContractProductConverter {
     default ProcurementContractProduct convert(ProductDO productDO, Map<Long, CategoryDO> categoryMap, Map<String, WarehouseEntryProductDTO> warehouseEntryProductDTOMap){
         ProcurementContractProduct procurementContractProduct = new ProcurementContractProduct();
         procurementContractProduct.setProductId(productDO.getId());
-        procurementContractProduct.setProductSn(productDO.getSn());
-        procurementContractProduct.setProductName(productDO.getName());
-        procurementContractProduct.setCategoryName(categoryMap.get(productDO.getCategoryId()).getName());
-        procurementContractProduct.setCategoryId(productDO.getCategoryId());
         procurementContractProduct.setGoodsId(productDO.getGoodsId());
         procurementContractProduct.setUnit(productDO.getUnit());
         WarehouseEntryProductDTO warehouseEntryProductDTO = warehouseEntryProductDTOMap.get(productDO.getId());

+ 0 - 1
module-erp/src/main/java/com/hys/app/converter/erp/ProductConverter.java

@@ -43,7 +43,6 @@ public interface ProductConverter {
 
         // 填充分类名称
         for (ProductVO productVO : page.getData()) {
-            productVO.setCategoryName(categoryNameMap.get(productVO.getCategoryId()));
             productVO.setStockNum(stockNumMap.get(productVO.getId()));
         }
 

+ 25 - 0
module-erp/src/main/java/com/hys/app/converter/erp/SmsMailConverter.java

@@ -0,0 +1,25 @@
+package com.hys.app.converter.erp;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.hys.app.model.erp.entity.Company;
+import com.hys.app.model.erp.entity.CompanyDO;
+import com.hys.app.model.erp.entity.CompanyUpdateDO;
+import com.hys.app.model.erp.entity.CompanyVO;
+import com.hys.app.model.system.dos.SmsMailTemplate;
+import com.hys.app.model.system.dto.SmsMailTemplateDTO;
+import com.hys.app.model.system.vo.SmsMailTemplateVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.MappingConstants;
+import org.mapstruct.MappingTarget;
+import org.mapstruct.factory.Mappers;
+
+@Mapper(componentModel = MappingConstants.ComponentModel.SPRING)
+public interface SmsMailConverter {
+    SmsMailConverter INSTANCE = Mappers.getMapper(SmsMailConverter.class);
+
+    SmsMailTemplate convert(SmsMailTemplateDTO dto);
+
+    SmsMailTemplateVO convert(SmsMailTemplate dto);
+   Page<SmsMailTemplateVO> convert(Page<SmsMailTemplate> dto);
+
+}

+ 17 - 0
module-erp/src/main/java/com/hys/app/mapper/erp/AppVersionMapper.java

@@ -0,0 +1,17 @@
+package com.hys.app.mapper.erp;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.hys.app.framework.cache.MybatisRedisCache;
+import com.hys.app.model.erp.dos.StockInventoryProduct;
+import com.hys.app.model.system.dos.AppVersion;
+import org.apache.ibatis.annotations.CacheNamespace;
+
+/**
+ * 库存报损单产品Mapper
+ *
+ * @author dmy
+ * 2023-12-05
+ */
+@CacheNamespace(implementation= MybatisRedisCache.class,eviction=MybatisRedisCache.class)
+public interface AppVersionMapper extends BaseMapper<AppVersion> {
+}

+ 21 - 0
module-erp/src/main/java/com/hys/app/mapper/erp/MailSmsCountMapper.java

@@ -0,0 +1,21 @@
+package com.hys.app.mapper.erp;
+
+import com.hys.app.framework.context.user.AdminUserContext;
+import com.hys.app.framework.database.WebPage;
+import com.hys.app.framework.database.mybatisplus.base.BaseMapperX;
+import com.hys.app.framework.util.StringUtil;
+import com.hys.app.model.erp.dos.MailSmsCountDO;
+import com.hys.app.model.erp.dos.OrderDO;
+import com.hys.app.model.erp.dto.OrderQueryParams;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 订单 Mapper
+ *
+ * @author 张崧
+ * 2024-01-24 15:58:31
+ */
+@Mapper
+public interface MailSmsCountMapper extends BaseMapperX<MailSmsCountDO> {
+}
+

+ 16 - 0
module-erp/src/main/java/com/hys/app/mapper/erp/MsgCompanyMapper.java

@@ -0,0 +1,16 @@
+package com.hys.app.mapper.erp;
+
+import com.hys.app.framework.database.mybatisplus.base.BaseMapperX;
+import com.hys.app.model.erp.dos.MsgCompanyConfig;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 订单 Mapper
+ *
+ * @author 张崧
+ * 2024-01-24 15:58:31
+ */
+@Mapper
+public interface MsgCompanyMapper extends BaseMapperX<MsgCompanyConfig> {
+}
+

+ 16 - 0
module-erp/src/main/java/com/hys/app/mapper/erp/MsgConfigMapper.java

@@ -0,0 +1,16 @@
+package com.hys.app.mapper.erp;
+
+import com.hys.app.framework.database.mybatisplus.base.BaseMapperX;
+import com.hys.app.model.erp.dos.MsgConfig;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 订单 Mapper
+ *
+ * @author 张崧
+ * 2024-01-24 15:58:31
+ */
+@Mapper
+public interface MsgConfigMapper extends BaseMapperX<MsgConfig> {
+}
+

+ 19 - 0
module-erp/src/main/java/com/hys/app/mapper/erp/SmsMailMapper.java

@@ -0,0 +1,19 @@
+package com.hys.app.mapper.erp;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.hys.app.framework.cache.MybatisRedisCache;
+import com.hys.app.model.erp.entity.Company;
+import com.hys.app.model.system.dos.SmsMailTemplate;
+import org.apache.ibatis.annotations.CacheNamespace;
+
+
+/**
+ * 品牌BrandDO的Mapper
+ * @author fk
+ * @version 1.0
+ * @since 7.1.0
+ * 2020/7/21
+ */
+@CacheNamespace(implementation= MybatisRedisCache.class,eviction=MybatisRedisCache.class)
+public interface SmsMailMapper extends BaseMapper<SmsMailTemplate> {
+}

+ 0 - 7
module-erp/src/main/java/com/hys/app/mapper/goods/ProductMapper.java

@@ -17,16 +17,9 @@ public interface ProductMapper extends BaseMapperX<ProductDO> {
 
     default WebPage<ProductDO> selectPage(ProductQueryParams params) {
         return lambdaQuery()
-                .andX(StringUtil.notEmpty(params.getKeyword()),
-                        w -> w.like(ProductDO::getName, params.getKeyword()).or().like(ProductDO::getSn, params.getKeyword()))
-                .likeIfPresent(ProductDO::getSn, params.getSn())
                 .likeIfPresent(ProductDO::getSku, params.getSku())
-                .likeIfPresent(ProductDO::getName, params.getName())
-                .eqIfPresent(ProductDO::getCategoryId, params.getCategoryId())
                 .eqIfPresent(ProductDO::getHireOrSail, params.getHireOrSail())
                 .likeIfPresent(ProductDO::getUnit, params.getUnit())
-                .eqIfPresent(ProductDO::getMarketEnable, params.getMarketEnable())
-                .eqIfPresent(ProductDO::getCategoryId, AdminUserContext.getCompanyId())
                 .orderByAsc(ProductDO::getSort)
                 .page(params);
     }

+ 56 - 0
module-erp/src/main/java/com/hys/app/model/erp/dos/MailSmsCountDO.java

@@ -0,0 +1,56 @@
+package com.hys.app.model.erp.dos;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
+import com.hys.app.framework.database.mybatisplus.base.BaseDO;
+import com.hys.app.model.erp.enums.OrderTypeEnum;
+import com.hys.app.model.erp.enums.SaleOrderSendStatusEnum;
+import com.hys.app.model.erp.vo.OrderSendItemVO;
+import com.hys.app.service.kuaidiniao.entity.KdGood;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 订单 DO
+ *
+ * @author 张崧
+ * 2024-01-24 15:58:30
+ */
+@TableName(value = "erp_mail_sms_count", autoResultMap = true)
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class MailSmsCountDO extends BaseDO {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(type = IdType.ASSIGN_ID)
+    private Long id;
+
+    /**
+     * 公司id
+     */
+    private Long companyId;
+
+    /**
+     * 公司id
+     */
+    private Long companyName;
+
+    /**
+     * 邮件次数
+     */
+    private Integer mailNum = 0;
+
+    /**
+     * 短信次数
+     */
+    private Integer smsNum = 0;
+}

+ 49 - 0
module-erp/src/main/java/com/hys/app/model/erp/dos/MsgCompanyConfig.java

@@ -0,0 +1,49 @@
+package com.hys.app.model.erp.dos;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.hys.app.framework.database.mybatisplus.base.BaseDO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+/**
+ * 公司配置消息类
+ *
+ * @author 张崧
+ * 2024-01-24 15:58:30
+ */
+@TableName(value = "es_msg_config", autoResultMap = true)
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class MsgCompanyConfig extends BaseDO {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(type = IdType.ASSIGN_ID)
+    private Long id;
+
+    /**
+     * 公司id
+     */
+    private Long companyId;
+
+    /**
+     * 消息id
+     */
+    private Long msgId;
+
+
+    /**
+     * 消息id
+     */
+    private String msgCode;
+
+    public MsgCompanyConfig(Long companyId, Long msgId, String msgCode) {
+        this.companyId = companyId;
+        this.msgId = msgId;
+        this.msgCode = msgCode;
+    }
+}

+ 53 - 0
module-erp/src/main/java/com/hys/app/model/erp/dos/MsgConfig.java

@@ -0,0 +1,53 @@
+package com.hys.app.model.erp.dos;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.hys.app.framework.database.mybatisplus.base.BaseDO;
+import com.hys.app.model.erp.enums.MsgTypeEnum;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+/**
+ * 订单 DO
+ *
+ * @author 张崧
+ * 2024-01-24 15:58:30
+ */
+@TableName(value = "es_msg_config", autoResultMap = true)
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class MsgConfig extends BaseDO {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(type = IdType.ASSIGN_ID)
+    private Long id;
+
+    /**
+     * 上级路径
+     */
+    private Long parentId;
+    /**
+     * 标签
+     */
+    private String title;
+    /**
+     * 类型
+     */
+    private MsgTypeEnum type;
+    /**
+     * 自定义模板code
+     */
+    private String templateCode;
+    /**
+     * 自定义唯一标识
+     */
+    private String code;
+
+    @TableLogic
+    private Boolean  deleted;
+}

+ 17 - 0
module-erp/src/main/java/com/hys/app/model/erp/dto/IdsDto.java

@@ -0,0 +1,17 @@
+package com.hys.app.model.erp.dto;
+
+import com.hys.app.model.erp.dos.MsgConfig;
+import lombok.Data;
+
+import javax.validation.constraints.Max;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+@Data
+public class IdsDto {
+
+    @NotEmpty
+    @Max(1000)
+    List<MsgConfig> msgConfigs;
+}

+ 54 - 0
module-erp/src/main/java/com/hys/app/model/erp/dto/MsgConfigDTO.java

@@ -0,0 +1,54 @@
+package com.hys.app.model.erp.dto;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.hys.app.framework.database.mybatisplus.base.BaseDO;
+import com.hys.app.model.erp.enums.MsgTypeEnum;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * 订单 DO
+ *
+ * @author 张崧
+ * 2024-01-24 15:58:30
+ */
+
+@Data
+public class MsgConfigDTO {
+
+    /**
+     * 上级路径
+     */
+    private Long parentId;
+    /**
+     * 标签
+     */
+    @ApiModelProperty("名称")
+    @NotNull(message = "名称不能为空")
+    private String title;
+    /**
+     * 类型
+     */
+    @ApiModelProperty("类型")
+    @NotNull(message = "类型不能为空")
+    private MsgTypeEnum type;
+    /**
+     * 申请的模板标签
+     */
+    @ApiModelProperty("模板code")
+    @NotBlank(message = "模板code不能为空")
+    private String templateCode;
+    /**
+     * 自定义标识
+     */
+    @ApiModelProperty("自定义标识")
+    @NotBlank(message = "自定义标识不能为空")
+    private String code;
+}

+ 20 - 0
module-erp/src/main/java/com/hys/app/model/erp/entity/MailSmsCountQuery.java

@@ -0,0 +1,20 @@
+package com.hys.app.model.erp.entity;
+
+import com.hys.app.framework.database.BaseQueryParam;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 部门表
+ */
+@Getter
+@Setter
+public class MailSmsCountQuery extends BaseQueryParam {
+
+    /**
+     * 名称
+     */
+    @ApiModelProperty("公司id")
+    private String companyId;
+}

+ 35 - 0
module-erp/src/main/java/com/hys/app/model/erp/enums/MsgTypeEnum.java

@@ -0,0 +1,35 @@
+package com.hys.app.model.erp.enums;
+
+import lombok.Getter;
+
+/**
+ * 订单状态枚举
+ *
+ * @author 张崧
+ * @since 2024-01-25
+ */
+@Getter
+public enum MsgTypeEnum {
+
+    SMS("SMS", "短信"),
+    MAIL("MAIL", "邮件");
+
+    MsgTypeEnum(String value, String label) {
+        this.value = value;
+        this.label = label;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+    public String getLabel() {
+        return label;
+    }
+
+    private final String value;
+
+    private final String label;
+
+
+}

+ 21 - 0
module-erp/src/main/java/com/hys/app/model/erp/vo/MailSmsCountVO.java

@@ -0,0 +1,21 @@
+package com.hys.app.model.erp.vo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.hys.app.framework.database.mybatisplus.base.BaseDO;
+import com.hys.app.model.erp.dos.MailSmsCountDO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+/**
+ * 订单 DO
+ *
+ * @author 张崧
+ * 2024-01-24 15:58:30
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class MailSmsCountVO extends MailSmsCountDO {
+}

+ 34 - 0
module-erp/src/main/java/com/hys/app/model/erp/vo/MsgCompanyConfigVO.java

@@ -0,0 +1,34 @@
+package com.hys.app.model.erp.vo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.hys.app.framework.database.mybatisplus.base.BaseDO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+/**
+ * 公司配置消息类
+ *
+ * @author 张崧
+ * 2024-01-24 15:58:30
+ */
+@Data
+public class MsgCompanyConfigVO extends BaseDO {
+
+    private Long id;
+
+    /**
+     * 公司id
+     */
+    private Long companyId;
+
+    /**
+     * 消息id
+     */
+    private Long msgId;
+
+
+
+}

+ 22 - 0
module-erp/src/main/java/com/hys/app/model/erp/vo/MsgConfigVO.java

@@ -0,0 +1,22 @@
+package com.hys.app.model.erp.vo;
+
+import com.hys.app.model.erp.dos.MsgConfig;
+import com.hys.app.model.erp.enums.MsgTypeEnum;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+/**
+ * 订单 DO
+ *
+ * @author 张崧
+ * 2024-01-24 15:58:30
+ */
+
+@Data
+public class MsgConfigVO extends MsgConfig {
+    List<MsgConfig> childMsg;
+}

+ 48 - 0
module-erp/src/main/java/com/hys/app/model/system/dos/AppVersion.java

@@ -0,0 +1,48 @@
+package com.hys.app.model.system.dos;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.hys.app.framework.database.mybatisplus.base.BaseDO;
+import com.hys.app.framework.database.mybatisplus.type.LongListTypeHandler;
+import com.hys.app.framework.database.mybatisplus.type.StringListTypeHandler;
+import com.hys.app.model.system.enums.DeptTypeEnum;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.List;
+
+/**
+ * 部门表
+ */
+@TableName(value = "erp_app_version", autoResultMap = true)
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class AppVersion extends BaseDO {
+
+    public static final Long ROOT_ID = 0L;
+
+    /**
+     * 部门ID
+     */
+    @TableId
+    private Long id;
+    /**
+     * 版本号
+     */
+    private String version;
+    /**
+     * 下载地址
+     */
+    private String downloadAddress;
+    /**
+     * 更新内容
+     */
+    private Long updateContent;
+
+    /**
+     * 是否默认版本
+     */
+    private Boolean status;
+
+}

+ 88 - 0
module-erp/src/main/java/com/hys/app/model/system/dos/SmsMailTemplate.java

@@ -0,0 +1,88 @@
+package com.hys.app.model.system.dos;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.hys.app.framework.database.mybatisplus.base.BaseDO;
+import com.hys.app.model.erp.enums.MsgTypeEnum;
+import com.hys.app.model.system.enums.AuditStatusEnum;
+import com.hys.app.model.system.enums.MessageCodeEnum;
+import com.hys.app.model.system.enums.SmsTemplateServiceTypeEnum;
+import com.hys.app.model.system.enums.SmsTemplateTypeEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+import java.io.Serializable;
+
+
+/**
+ * 短信模板实体
+ *
+ * @author zhangsong
+ * @version v1.0
+ * @since v7.3.0
+ * 2021-01-26 16:04:22
+ */
+@TableName("es_sms_mail_template")
+@ApiModel
+@Data
+public class SmsMailTemplate extends BaseDO implements Serializable {
+
+    private static final long serialVersionUID = 6526154401398092L;
+
+    /**
+     * 主键
+     */
+    @TableId(type = IdType.ASSIGN_ID)
+    private Long id;
+    /**
+     * 模板类型短信还是邮件
+     */
+    @ApiModelProperty("模板类型短信还是邮件")
+    private MsgTypeEnum type;
+    /**
+     * 自定义模板code
+     */
+    @ApiModelProperty("自定义模板code")
+    private String code;
+    /**
+     * 短信类型,0为验证码,1为短信通知,2为推广短信
+     */
+    @ApiModelProperty("短信类型,0为验证码,1为短信通知,2为推广短信")
+    private Integer templateType;
+    /**
+     * 模板名称
+     */
+    @ApiModelProperty("模板名称")
+    private String name;
+    /**
+     * 模板内容
+     */
+    @ApiModelProperty("模板内容")
+    private String content;
+    /**
+     * 模板申请说明
+     */
+    @ApiModelProperty("模板申请说明")
+    private String remark;
+    /**
+     * 短信模板code
+     */
+    @ApiModelProperty("短信模板code")
+    private String templateCode;
+    /**
+     * 第三方审核状态
+     */
+    @ApiModelProperty("第三方审核状态")
+    private Boolean auditStatus;
+    /**
+     * 是否启用
+     */
+    @ApiModelProperty("是否启用")
+    private Boolean enableStatus;
+    /**
+     * 审核未通过原因
+     */
+    @ApiModelProperty("审核未通过原因")
+    private String failReason;
+}

+ 61 - 0
module-erp/src/main/java/com/hys/app/model/system/dto/SmsMailTemplateDTO.java

@@ -0,0 +1,61 @@
+package com.hys.app.model.system.dto;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.hys.app.framework.database.mybatisplus.base.BaseDO;
+import com.hys.app.model.erp.enums.MsgTypeEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+
+/**
+ * 短信模板实体
+ *
+ * @author zhangsong
+ * @version v1.0
+ * @since v7.3.0
+ * 2021-01-26 16:04:22
+ */
+@Data
+public class SmsMailTemplateDTO {
+
+    /**
+     * 模板类型短信还是邮件
+     */
+    @ApiModelProperty("模板类型短信还是邮件")
+    private MsgTypeEnum type;
+    /**
+     * 自定义模板code
+     */
+    @ApiModelProperty("自定义模板code")
+    private String code;
+    /**
+     * 短信类型,0为验证码,1为短信通知,2为推广短信
+     */
+    @ApiModelProperty("短信类型,0为验证码,1为短信通知,2为推广短信")
+    private Integer templateType;
+    /**
+     * 模板名称
+     */
+    @ApiModelProperty("模板名称")
+    private String name;
+    /**
+     * 模板内容
+     */
+    @ApiModelProperty("模板内容")
+    private String content;
+    /**
+     * 模板申请说明
+     */
+    @ApiModelProperty("模板申请说明")
+    private String remark;
+    /**
+     * 是否启用
+     */
+    @ApiModelProperty("是否启用")
+    private Boolean enableStatus;
+}

+ 42 - 0
module-erp/src/main/java/com/hys/app/model/system/vo/SmsMailTemplateQuery.java

@@ -0,0 +1,42 @@
+package com.hys.app.model.system.vo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.hys.app.framework.database.BaseQueryParam;
+import com.hys.app.model.erp.enums.MsgTypeEnum;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+/**
+ * 短信模板实体
+ *
+ * @author zhangsong
+ * @version v1.0
+ * @since v7.3.0
+ * 2021-01-26 16:04:22
+ */
+@Data
+public class SmsMailTemplateQuery extends BaseQueryParam {
+
+    /**
+     * 模板类型短信还是邮件
+     */
+    @ApiModelProperty("模板类型短信还是邮件")
+    private MsgTypeEnum type;
+    /**
+     * 自定义模板code
+     */
+    @ApiModelProperty("自定义模板code")
+    private String code;
+    /**
+     * 模板名称
+     */
+    @ApiModelProperty("模板名称")
+    private String name;
+    /**
+     * 是否启用
+     */
+    @ApiModelProperty("是否启用")
+    private Boolean enableStatus;
+}

+ 76 - 0
module-erp/src/main/java/com/hys/app/model/system/vo/SmsMailTemplateVO.java

@@ -0,0 +1,76 @@
+package com.hys.app.model.system.vo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.hys.app.model.erp.enums.MsgTypeEnum;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+/**
+ * 短信模板实体
+ *
+ * @author zhangsong
+ * @version v1.0
+ * @since v7.3.0
+ * 2021-01-26 16:04:22
+ */
+@Data
+public class SmsMailTemplateVO {
+
+    /**
+     * 主键
+     */
+    @TableId(type = IdType.ASSIGN_ID)
+    private Long id;
+    /**
+     * 模板类型短信还是邮件
+     */
+    @ApiModelProperty("模板类型短信还是邮件")
+    private MsgTypeEnum type;
+    /**
+     * 自定义模板code
+     */
+    @ApiModelProperty("自定义模板code")
+    private String code;
+    /**
+     * 短信类型,0为验证码,1为短信通知,2为推广短信
+     */
+    @ApiModelProperty("短信类型,0为验证码,1为短信通知,2为推广短信")
+    private Integer templateType;
+    /**
+     * 模板名称
+     */
+    @ApiModelProperty("模板名称")
+    private String name;
+    /**
+     * 模板内容
+     */
+    @ApiModelProperty("模板内容")
+    private String content;
+    /**
+     * 模板申请说明
+     */
+    @ApiModelProperty("模板申请说明")
+    private String remark;
+    /**
+     * 短信模板code
+     */
+    @ApiModelProperty("短信模板code")
+    private String templateCode;
+    /**
+     * 第三方审核状态
+     */
+    @ApiModelProperty("第三方审核状态")
+    private Boolean auditStatus;
+    /**
+     * 是否启用
+     */
+    @ApiModelProperty("是否启用")
+    private Boolean enableStatus;
+    /**
+     * 审核未通过原因
+     */
+    @ApiModelProperty("审核未通过原因")
+    private String failReason;
+}

+ 22 - 0
module-erp/src/main/java/com/hys/app/service/erp/AppVersionManager.java

@@ -0,0 +1,22 @@
+package com.hys.app.service.erp;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.hys.app.framework.database.mybatisplus.base.BaseService;
+import com.hys.app.model.erp.entity.*;
+import com.hys.app.model.system.dos.AppVersion;
+
+import java.math.BigDecimal;
+
+/**
+ * 部门 Service 接口
+ */
+public interface AppVersionManager extends BaseService<AppVersion> {
+
+    /**
+     * 新增版本
+     *
+     * @param appVersion
+     * @return
+     */
+    Long addVersion(AppVersion appVersion);
+}

+ 37 - 0
module-erp/src/main/java/com/hys/app/service/erp/MailSmsCountManager.java

@@ -0,0 +1,37 @@
+package com.hys.app.service.erp;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.hys.app.framework.database.BaseQueryParam;
+import com.hys.app.framework.database.WebPage;
+import com.hys.app.framework.database.mybatisplus.base.BaseService;
+import com.hys.app.model.erp.dos.MailSmsCountDO;
+import com.hys.app.model.erp.dos.OrderDO;
+import com.hys.app.model.erp.dos.OrderSendDO;
+import com.hys.app.model.erp.dto.OrderDTO;
+import com.hys.app.model.erp.dto.OrderQueryParams;
+import com.hys.app.model.erp.dto.WarehouseOutShipDTO;
+import com.hys.app.model.erp.entity.CompanyQuery;
+import com.hys.app.model.erp.entity.CompanyVO;
+import com.hys.app.model.erp.entity.MailSmsCountQuery;
+import com.hys.app.model.erp.vo.MailSmsCountVO;
+import com.hys.app.model.erp.vo.OrderVO;
+import com.hys.app.service.kuaidiniao.entity.PreOrderModelDTO;
+import com.hys.app.service.kuaidiniao.entity.resReturnBackBase;
+
+import java.util.Map;
+
+/**
+ * 订单业务层接口
+ *
+ * @author 张崧
+ * 2024-01-24 15:58:31
+ */
+public interface MailSmsCountManager extends BaseService<MailSmsCountDO> {
+
+    IPage<MailSmsCountVO> getPage(MailSmsCountQuery query);
+
+    void sendSms(String rePhone, String templateCode, Map<String, String> map);
+
+    void sendEmail(String toMail, String subject, String content);
+}
+

+ 28 - 0
module-erp/src/main/java/com/hys/app/service/erp/MsgCompanyManager.java

@@ -0,0 +1,28 @@
+package com.hys.app.service.erp;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.hys.app.framework.database.mybatisplus.base.BaseService;
+import com.hys.app.model.erp.dos.MailSmsCountDO;
+import com.hys.app.model.erp.dos.MsgCompanyConfig;
+import com.hys.app.model.erp.dto.IdsDto;
+import com.hys.app.model.erp.entity.MailSmsCountQuery;
+import com.hys.app.model.erp.vo.MailSmsCountVO;
+
+import java.util.Map;
+
+/**
+ * 订单业务层接口
+ *
+ * @author 张崧
+ * 2024-01-24 15:58:31
+ */
+public interface MsgCompanyManager extends BaseService<MsgCompanyConfig> {
+
+    /**
+     * 公司绑定模板
+     * @param idsDto
+     * @return
+     */
+    void bandMsg(IdsDto idsDto);
+}
+

+ 45 - 0
module-erp/src/main/java/com/hys/app/service/erp/MsgConfigManager.java

@@ -0,0 +1,45 @@
+package com.hys.app.service.erp;
+
+import com.hys.app.framework.database.mybatisplus.base.BaseService;
+import com.hys.app.model.erp.dos.MsgCompanyConfig;
+import com.hys.app.model.erp.dos.MsgConfig;
+import com.hys.app.model.erp.dto.MsgConfigDTO;
+
+/**
+ * 订单业务层接口
+ *
+ * @author 张崧
+ * 2024-01-24 15:58:31
+ */
+public interface MsgConfigManager extends BaseService<MsgConfig> {
+
+    /**
+     * 新增消息
+     *
+     * @param msgConfigDTO
+     * @return
+     */
+    Long addMsg(MsgConfigDTO msgConfigDTO);
+
+    /**
+     * 更换消息的消息模板
+     *
+     * @param id
+     * @param templateCode
+     * @return
+     */
+    void changeTemplate(String id, String templateCode);
+
+    /**
+     * 获取所有消息树状图返回
+     */
+    void getAllMsg();
+
+    /**
+     * 删除消息
+     *
+     * @param id
+     */
+    void deleteMsg(String id);
+}
+

+ 50 - 0
module-erp/src/main/java/com/hys/app/service/erp/SmsMailManager.java

@@ -0,0 +1,50 @@
+package com.hys.app.service.erp;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.hys.app.framework.database.mybatisplus.base.BaseService;
+import com.hys.app.model.erp.entity.*;
+import com.hys.app.model.system.dos.SmsMailTemplate;
+import com.hys.app.model.system.dto.SmsMailTemplateDTO;
+import com.hys.app.model.system.vo.SmsMailTemplateQuery;
+import com.hys.app.model.system.vo.SmsMailTemplateVO;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * 部门 Service 接口
+ */
+public interface SmsMailManager extends BaseService<SmsMailTemplate> {
+    /**
+     * 新增模板
+     *
+     * @param smsMailTemplateDTO
+     * @return
+     */
+    Long createTemplate(SmsMailTemplateDTO smsMailTemplateDTO);
+
+    /**
+     * 修改模板
+     *
+     * @param smsMailTemplateDTO
+     * @param id
+     * @return
+     */
+    Long updateTemplate(SmsMailTemplateDTO smsMailTemplateDTO, Long id);
+
+    /**
+     * 模板分页
+     *
+     * @param query
+     * @return
+     */
+    IPage<SmsMailTemplateVO> queryTemplate(SmsMailTemplateQuery query);
+
+    /**
+     * 删除模板
+     *
+     * @param id
+     * @return
+     */
+    void delete(Long id);
+}

+ 63 - 0
module-erp/src/main/java/com/hys/app/service/erp/impl/AppVersionManagerImpl.java

@@ -0,0 +1,63 @@
+package com.hys.app.service.erp.impl;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.io.IoUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.poi.excel.ExcelUtil;
+import cn.hutool.poi.excel.ExcelWriter;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.hys.app.framework.database.WebPage;
+import com.hys.app.framework.exception.ServiceException;
+import com.hys.app.framework.util.PageConvert;
+import com.hys.app.framework.util.StringUtil;
+import com.hys.app.mapper.erp.AppVersionMapper;
+import com.hys.app.mapper.erp.StockStatisticsMapper;
+import com.hys.app.model.erp.dos.ProductDO;
+import com.hys.app.model.erp.dos.StockStatistics;
+import com.hys.app.model.erp.dto.StockStatisticsQueryParam;
+import com.hys.app.model.system.dos.AppVersion;
+import com.hys.app.service.erp.AppVersionManager;
+import com.hys.app.service.erp.ProductManager;
+import com.hys.app.service.erp.StockStatisticsManager;
+import com.hys.app.util.ValidateUtil;
+import org.apache.poi.ss.formula.functions.T;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import static com.hys.app.framework.util.CollectionUtils.convertList;
+
+/**
+ * 库存统计业务接口实现
+ *
+ * @author dmy
+ * 2023-12-05
+ */
+@Service
+public class AppVersionManagerImpl extends ServiceImpl<AppVersionMapper, AppVersion> implements AppVersionManager {
+    @Override
+    public Long addVersion(AppVersion appVersion) {
+        AppVersion one = getOne(new LambdaQueryWrapper<AppVersion>().eq(AppVersion::getVersion, appVersion.getVersion()));
+        if (ObjectUtil.isNotNull(one)) {
+            throw new ServiceException("版本号重复");
+        }
+        List<AppVersion> list = list();
+        list.forEach(item ->item.setStatus(false));
+        one.setStatus(true);
+        list.add(one);
+        saveOrUpdateBatch(list);
+        return one.getId();
+    }
+}

+ 74 - 0
module-erp/src/main/java/com/hys/app/service/erp/impl/MailSmsCountManagerImpl.java

@@ -0,0 +1,74 @@
+package com.hys.app.service.erp.impl;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.hys.app.converter.erp.MailSmsCompanyConverter;
+import com.hys.app.framework.context.user.AdminUserContext;
+import com.hys.app.framework.database.mybatisplus.base.BaseServiceImpl;
+import com.hys.app.mapper.erp.MailSmsCountMapper;
+import com.hys.app.model.erp.dos.MailSmsCountDO;
+import com.hys.app.model.erp.entity.MailSmsCountQuery;
+import com.hys.app.model.erp.vo.MailSmsCountVO;
+import com.hys.app.service.erp.MailSmsCountManager;
+import com.hys.app.util.AliSmsUtil;
+import com.hys.app.util.MailSmtpUtil;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.Map;
+
+/**
+ * 订单业务层实现
+ *
+ * @author 张崧
+ * 2024-01-24 15:58:31
+ */
+@Service
+@AllArgsConstructor
+public class MailSmsCountManagerImpl extends BaseServiceImpl<MailSmsCountMapper, MailSmsCountDO> implements MailSmsCountManager {
+
+    @Override
+    public IPage<MailSmsCountVO> getPage(MailSmsCountQuery query) {
+        Page<MailSmsCountDO> page = page(new Page<>(query.getPageNo(), query.getPageSize()),
+                new LambdaQueryWrapper<MailSmsCountDO>()
+                        .eq(ObjectUtil.isNotNull(query.getCompanyId()), MailSmsCountDO::getCompanyId, query.getCompanyId()));
+        return MailSmsCompanyConverter.INSTANCE.convert(page);
+    }
+
+    @Override
+    public void sendSms(String rePhone, String templateCode, Map<String, String> map) {
+        try {
+            if (AliSmsUtil.sendSms(rePhone, templateCode, map)) {
+                addNum("mail");
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @Override
+    public void sendEmail(String toMail, String subject, String content) {
+        if (MailSmtpUtil.sendEmail(toMail, subject, content)) {
+            addNum("sms");
+        }
+    }
+
+    private void addNum(String type) {
+        Long companyId = AdminUserContext.getCompanyId();
+        MailSmsCountDO mailSmsCountDO = getOne(new LambdaQueryWrapper<MailSmsCountDO>().eq(MailSmsCountDO::getCompanyId, companyId));
+        if (ObjectUtil.isNull(mailSmsCountDO)) {
+            mailSmsCountDO = new MailSmsCountDO();
+            mailSmsCountDO.setCompanyId(companyId);
+        }
+        if ("sms".equals(type)) {
+            mailSmsCountDO.setSmsNum(mailSmsCountDO.getSmsNum() + 1);
+        } else if ("mail".equals(type)) {
+            mailSmsCountDO.setMailNum(mailSmsCountDO.getMailNum() + 1);
+        }
+        saveOrUpdate(mailSmsCountDO);
+    }
+
+}
+

+ 43 - 0
module-erp/src/main/java/com/hys/app/service/erp/impl/MsgCompanyManagerImpl.java

@@ -0,0 +1,43 @@
+package com.hys.app.service.erp.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.hys.app.framework.context.user.AdminUserContext;
+import com.hys.app.framework.database.mybatisplus.base.BaseServiceImpl;
+import com.hys.app.framework.exception.ServiceException;
+import com.hys.app.mapper.erp.MsgCompanyMapper;
+import com.hys.app.mapper.system.AdminUserMapper;
+import com.hys.app.model.erp.dos.MsgCompanyConfig;
+import com.hys.app.model.erp.dto.IdsDto;
+import com.hys.app.model.system.dos.AdminUser;
+import com.hys.app.service.erp.MsgCompanyManager;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 订单业务层实现
+ *
+ * @author 张崧
+ * 2024-01-24 15:58:31
+ */
+@Service
+@AllArgsConstructor
+public class MsgCompanyManagerImpl extends BaseServiceImpl<MsgCompanyMapper, MsgCompanyConfig> implements MsgCompanyManager {
+
+    private AdminUserMapper adminUserMapper;
+
+    @Override
+    public void bandMsg(IdsDto idsDto) {
+        AdminUser user = adminUserMapper.selectById(AdminUserContext.getAdminUserId());
+        if (!user.getUsername().equals("admin")){
+            throw new ServiceException("只有管理员账号才能进行此操作");
+        }
+        //删除之前绑定的
+        remove(new LambdaQueryWrapper<MsgCompanyConfig>().eq(MsgCompanyConfig::getCompanyId,user.getCompanyId()));
+        List<MsgCompanyConfig> collect = idsDto.getMsgConfigs().stream().map(item -> new MsgCompanyConfig(user.getCompanyId(), item.getId(),item.getCode())).collect(Collectors.toList());
+        saveBatch(collect);
+    }
+}
+

+ 92 - 0
module-erp/src/main/java/com/hys/app/service/erp/impl/MsgConfigManagerImpl.java

@@ -0,0 +1,92 @@
+package com.hys.app.service.erp.impl;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.hys.app.converter.erp.MsgConfigConverter;
+import com.hys.app.framework.database.mybatisplus.base.BaseServiceImpl;
+import com.hys.app.framework.exception.ServiceException;
+import com.hys.app.mapper.erp.MsgConfigMapper;
+import com.hys.app.model.erp.dos.MsgConfig;
+import com.hys.app.model.erp.dto.MsgConfigDTO;
+import com.hys.app.model.erp.enums.MsgTypeEnum;
+import com.hys.app.model.erp.vo.MsgConfigVO;
+import com.hys.app.model.system.dos.SmsMailTemplate;
+import com.hys.app.service.erp.MsgConfigManager;
+import com.hys.app.service.erp.SmsMailManager;
+import com.hys.app.util.ValidateUtil;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 订单业务层实现
+ *
+ * @author 张崧
+ * 2024-01-24 15:58:31
+ */
+@Service
+@AllArgsConstructor
+public class MsgConfigManagerImpl extends BaseServiceImpl<MsgConfigMapper, MsgConfig> implements MsgConfigManager {
+
+    private SmsMailManager smsMailManager;
+
+    @Override
+    public Long addMsg(MsgConfigDTO msgConfigDTO) {
+        checkSmsStatus(msgConfigDTO.getTemplateCode());
+        MsgConfig msgConfig = MsgConfigConverter.INSTANCE.convert(msgConfigDTO);
+        checkParams(msgConfig);
+        save(msgConfig);
+        return msgConfig.getId();
+    }
+
+    @Override
+    public void changeTemplate(String id, String templateCode) {
+        checkSmsStatus(templateCode);
+        MsgConfig msgConfig = getById(id);
+        msgConfig.setTemplateCode(templateCode);
+        updateById(msgConfig);
+    }
+
+    @Override
+    public void getAllMsg() {
+        List<MsgConfig> list = list();
+        List<MsgConfigVO> convert = MsgConfigConverter.INSTANCE.convert(list);
+        for (MsgConfigVO msgConfig : convert) {
+            msgConfig.setChildMsg(list.stream().filter(item -> item.getParentId().equals(msgConfig.getId())).collect(Collectors.toList()));
+        }
+    }
+
+    @Override
+    public void deleteMsg(String id) {
+        removeById(id);
+    }
+
+    private void checkParams(MsgConfig msgConfig) {
+        if (ValidateUtil.checkRepeat(baseMapper, MsgConfig::getTitle, msgConfig.getTitle(), MsgConfig::getId, null)) {
+            throw new ServiceException("模板名称不能重复");
+        }
+        if (ValidateUtil.checkRepeat(baseMapper, MsgConfig::getCode, msgConfig.getCode(), MsgConfig::getId, null)) {
+            throw new ServiceException("模板标识不能重复");
+        }
+    }
+
+    /**
+     * 校验短信模板启用了没有有没有审核通过
+     *
+     * @param code
+     */
+    private void checkSmsStatus(String code) {
+        SmsMailTemplate one = smsMailManager.getOne(new LambdaQueryWrapper<SmsMailTemplate>()
+                .eq(SmsMailTemplate::getCode, code)
+                .eq(SmsMailTemplate::getEnableStatus, true));
+        if (ObjectUtil.isNull(one)) {
+            throw new ServiceException("未找到模板信息");
+        }
+        if (one.getType().equals(MsgTypeEnum.SMS) && !one.getAuditStatus()) {
+            throw new ServiceException("该短信模板暂未审核通过,不能使用");
+        }
+    }
+}
+

+ 133 - 0
module-erp/src/main/java/com/hys/app/service/erp/impl/SmsMailManagerImpl.java

@@ -0,0 +1,133 @@
+package com.hys.app.service.erp.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.aliyun.dysmsapi20170525.Client;
+import com.aliyuncs.IAcsClient;
+import com.aliyuncs.dysmsapi.model.v20170525.QuerySmsTemplateRequest;
+import com.aliyuncs.dysmsapi.model.v20170525.QuerySmsTemplateResponse;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.hys.app.converter.erp.SmsMailConverter;
+import com.hys.app.framework.exception.ServiceException;
+import com.hys.app.mapper.erp.SmsMailMapper;
+import com.hys.app.model.erp.enums.MsgTypeEnum;
+import com.hys.app.model.system.dos.SmsMailTemplate;
+import com.hys.app.model.system.dto.SmsMailTemplateDTO;
+import com.hys.app.model.system.vo.SmsMailTemplateQuery;
+import com.hys.app.model.system.vo.SmsMailTemplateVO;
+import com.hys.app.service.erp.SmsMailManager;
+import com.hys.app.util.AliSmsUtil;
+import com.hys.app.util.ValidateUtil;
+import lombok.AllArgsConstructor;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.regex.Pattern;
+
+/**
+ * 平台管理员业务类
+ *
+ * @author zh
+ * @version v7.0
+ * @since v7.0.0
+ * 2018-06-20 20:38:26
+ */
+@Service
+@AllArgsConstructor
+public class SmsMailManagerImpl extends ServiceImpl<SmsMailMapper, SmsMailTemplate> implements SmsMailManager {
+
+    @Override
+    public Long createTemplate(SmsMailTemplateDTO smsMailTemplateDTO) {
+        SmsMailTemplate convert = SmsMailConverter.INSTANCE.convert(smsMailTemplateDTO);
+        checkParam(convert);
+        //如果是短信模板向短信平台提交申请
+        String smsTemplateCode = AliSmsUtil.createSmsTemplate(smsMailTemplateDTO.getTemplateType(), smsMailTemplateDTO.getName(), smsMailTemplateDTO.getContent(), smsMailTemplateDTO.getRemark());
+        convert.setTemplateCode(smsTemplateCode);
+        save(convert);
+        return convert.getId();
+    }
+
+    @Override
+    public Long updateTemplate(SmsMailTemplateDTO smsMailTemplateDTO, Long id) {
+        SmsMailTemplate template = ValidateUtil.getOne(baseMapper, SmsMailTemplate::getId, id, "模板");
+        if (template.getType().equals(MsgTypeEnum.SMS) && template.getAuditStatus()) {
+            throw new ServiceException("已审核通过的模板不允许修改,如有需求变动另建模板");
+        }
+        BeanUtil.copyProperties(smsMailTemplateDTO, template);
+        if (template.getType().equals(MsgTypeEnum.SMS)) {
+            //如果是短信模板向短信平台提交申请
+            String smsTemplateCode = AliSmsUtil.createSmsTemplate(smsMailTemplateDTO.getTemplateType(), smsMailTemplateDTO.getName(), smsMailTemplateDTO.getContent(), smsMailTemplateDTO.getRemark());
+            template.setTemplateCode(smsTemplateCode);
+            updateById(template);
+            return template.getId();
+        }
+        return null;
+    }
+    @Override
+    public IPage<SmsMailTemplateVO> queryTemplate(SmsMailTemplateQuery query) {
+        Page<SmsMailTemplate> page = page(new Page<>(query.getPageNo(), query.getPageSize()), new LambdaQueryWrapper<SmsMailTemplate>()
+                .eq(ObjectUtil.isNotNull(query.getType()), SmsMailTemplate::getType, query.getType())
+                .eq(ObjectUtil.isNotNull(query.getEnableStatus()), SmsMailTemplate::getEnableStatus, query.getEnableStatus())
+                .like(StrUtil.isNotBlank(query.getCode()), SmsMailTemplate::getCode, query.getCode())
+                .like(StrUtil.isNotBlank(query.getName()), SmsMailTemplate::getName, query.getName()));
+        return SmsMailConverter.INSTANCE.convert(page);
+    }
+
+    @Override
+    public void delete(Long id) {
+        SmsMailTemplate template = ValidateUtil.getOne(baseMapper, SmsMailTemplate::getId, id, "模板");
+        if (template.getType().equals(MsgTypeEnum.SMS) && template.getAuditStatus()) {
+            throw new ServiceException("已审核通过的模板不允许修改和删除");
+        }
+        removeById(id);
+    }
+
+    private void checkParam(SmsMailTemplate smsMailTemplate) {
+        if (Pattern.matches(".*[\\u4e00-\\u9fa5\\p{P}].*", smsMailTemplate.getCode())) {
+            throw new ServiceException("自定义编码不能包含中文和特殊符号");
+        }
+        if (ValidateUtil.checkRepeat(baseMapper, SmsMailTemplate::getCode, smsMailTemplate.getCode(), SmsMailTemplate::getId, smsMailTemplate.getId())) {
+            throw new ServiceException("编码已存在");
+        }
+        if (ValidateUtil.checkRepeat(baseMapper, SmsMailTemplate::getName, smsMailTemplate.getName(), SmsMailTemplate::getId, smsMailTemplate.getId())) {
+            throw new ServiceException("模板名称重复");
+        }
+        if (smsMailTemplate.getType().equals(MsgTypeEnum.MAIL)) {
+            smsMailTemplate.setAuditStatus(true);
+        }
+    }
+
+
+    @Scheduled(cron = "0 0 1 * * ?")  // 每天凌晨1点执行查看哪些没有审核通过的模板的查询
+    public void updateTemplateStatus() throws Exception {
+        List<SmsMailTemplate> list = list(new LambdaQueryWrapper<SmsMailTemplate>()
+                .eq(SmsMailTemplate::getType, MsgTypeEnum.SMS).eq(SmsMailTemplate::getAuditStatus, false)
+                .eq(SmsMailTemplate::getEnableStatus, true));
+        for (SmsMailTemplate template : list) {
+            // 初始化客户端
+            IAcsClient client = AliSmsUtil.getIAcsClient();
+            // 创建查询请求并设置参数
+            QuerySmsTemplateRequest request = new QuerySmsTemplateRequest();
+            request.setTemplateCode(template.getTemplateCode());
+            // 发起请求并处理响应
+            QuerySmsTemplateResponse response = client.getAcsResponse(request);
+            if ("OK".equals(response.getCode())) {
+                System.out.println("查询成功");
+                if (response.getTemplateStatus() == 1) {
+                    template.setAuditStatus(true);
+                    template.setFailReason("");
+                }
+                if (response.getTemplateStatus() == 2) {
+                    template.setAuditStatus(false);
+                    template.setFailReason(response.getReason());
+                }
+            }
+        }
+        updateBatchById(list);
+    }
+}

+ 0 - 2
module-erp/src/main/java/com/hys/app/service/erp/impl/StockStatisticsManagerImpl.java

@@ -215,9 +215,7 @@ public class StockStatisticsManagerImpl extends ServiceImpl<StockStatisticsMappe
         // 查询预警库存
         List<Long> productIds = convertList(list, StockStatistics::getProductId);
         List<ProductDO> productList = productManager.listByIds(productIds);
-        Map<Long, Integer> productWarningValueMap = convertMap(productList, ProductDO::getId, ProductDO::getWarningValue);
         for (StockStatistics stockStatistics : list) {
-            stockStatistics.setWarningNum(productWarningValueMap.getOrDefault(stockStatistics.getProductId(), 0));
         }
     }
 }

+ 0 - 26
module-erp/src/main/java/com/hys/app/service/erp/impl/WarehouseEntryManagerImpl.java

@@ -569,32 +569,6 @@ public class WarehouseEntryManagerImpl extends BaseServiceImpl<WarehouseEntryMap
         }
     }
 
-    /**
-     * 组装不在合同范围内商品数据
-     *
-     * @param contractProductMap       组装后的商品数据
-     * @param noContractProductIds     不在合同内的商品id集合
-     * @param warehouseEntryProductMap
-     */
-    private Map<String, ProcurementContractProduct> convertNoContractProduct(Map<String, ProcurementContractProduct> contractProductMap, List<String> noContractProductIds, Map<String, WarehouseEntryProductDTO> warehouseEntryProductMap) {
-        //查询不在合同内的商品基本信息
-        QueryWrapper<ProductDO> productWrapper = new QueryWrapper();
-        productWrapper.in("id", noContractProductIds);
-        List<ProductDO> noContractProducts = productManager.list(productWrapper);
-        Map<Long, ProductDO> noContractProductMap = convertMap(noContractProducts, ProductDO::getId, Function.identity());
-        //查询分类信息
-        List<Long> categoryIds = noContractProducts.stream().map(ProductDO::getCategoryId).collect(Collectors.toList());
-        List<CategoryDO> categories = categoryManager.list(new QueryWrapper<CategoryDO>().in("category_id", categoryIds));
-        Map<Long, CategoryDO> categoryMap = convertMap(categories, CategoryDO::getCategoryId, Function.identity());
-        //组装数据
-        noContractProductIds.forEach(id -> {
-            ProductDO productDO = noContractProductMap.get(id);
-            ProcurementContractProduct procurementContractProduct = procurementContractProductConverter.convert(productDO, categoryMap, warehouseEntryProductMap);
-            contractProductMap.put(id, procurementContractProduct);
-        });
-        return contractProductMap;
-    }
-
     private Double getPriceRatio() {
         String s = settingManager.get(SettingGroup.SITE);
         SiteSetting siteSetting = JsonUtil.jsonToObject(s, SiteSetting.class);

+ 24 - 8
module-erp/src/main/java/com/hys/app/service/system/impl/AdminUserManagerImpl.java

@@ -146,6 +146,12 @@ public class AdminUserManagerImpl implements AdminUserManager {
         if (adminUser == null) {
             throw new ResourceNotFoundException("当前管理员不存在");
         }
+        if (!Objects.equals(AdminUserContext.getAdminUserId(), id)){
+            throw new ServiceException("你无权修改此账号");
+        }
+        if ("admin".equals(adminUser.getUsername()) && !"admin".equals(adminUserVO.getUsername())){
+            throw new ServiceException("admin 登录名称不允许修改");
+        }
         //如果修改的是从超级管理员到普通管理员 需要校验此管理员是否是最后一个超级管理员
         if (adminUser.getFounder().equals(1) && !adminUserVO.getFounder().equals(1)) {
 
@@ -248,21 +254,31 @@ public class AdminUserManagerImpl implements AdminUserManager {
      */
     @Override
     public AdminLoginVO login(String name, String password,String companyName) {
-        Company company = companyManager.getOne(new LambdaQueryWrapper<Company>().eq(Company::getName,companyName));
-        if (ObjectUtil.isNull(company)){
-            throw new ServiceException("该公司未注册");
-        }
-        if (LocalDateTime.now().isAfter(company.getEndUseTime())){
-            throw new ServiceException("该公司使用已到期,请续费");
-        }
         //查询管理员信息
         QueryWrapper<AdminUser> wrapper = new QueryWrapper<>();
-        wrapper.eq("username", name).eq("password", StringUtil.md5(password + name.toLowerCase())).eq("user_state", 0).eq("company_id",company.getId());
+        wrapper.eq("username", name).eq("password", StringUtil.md5(password + name.toLowerCase())).eq("user_state", 0);
         AdminUser adminUser = adminUserMapper.selectOne(wrapper);
         //管理员信息不存在
         if (adminUser == null || !StringUtil.equals(adminUser.getUsername(), name)) {
             throw new ServiceException(SystemErrorCode.E918.code(), "管理员账号密码错误");
         }
+        Company company=null;
+        if (adminUser.getFounder() != 1){
+            if (ObjectUtil.isNull(companyName)){
+                throw new ServiceException("非平台工作人员公司必填");
+            }
+            company = companyManager.getOne(new LambdaQueryWrapper<Company>().eq(Company::getName,companyName));
+            if (ObjectUtil.isNull(company)){
+                throw new ServiceException("该公司未注册");
+            }
+            if (adminUser.getCompanyId() != company.getCompanyId()){
+                throw new ServiceException("此账号不属于该公司");
+            }
+            if (LocalDateTime.now().isAfter(company.getEndUseTime())){
+                throw new ServiceException("该公司使用已到期,请续费");
+            }
+        }
+
         //返回管理员信息
         AdminLoginVO adminLoginVO = new AdminLoginVO();
         adminLoginVO.setUid(adminUser.getId());

+ 0 - 51
module-erp/src/main/java/com/hys/app/util/AliEmailUtil.java

@@ -1,51 +0,0 @@
-package com.hys.app.util;
-
-import com.aliyun.auth.credentials.Credential;
-import com.aliyun.auth.credentials.provider.StaticCredentialProvider;
-import com.aliyun.sdk.service.dm20151123.AsyncClient;
-import com.aliyun.sdk.service.dm20151123.models.SingleSendMailRequest;
-import com.aliyun.sdk.service.dm20151123.models.SingleSendMailResponse;
-import com.google.gson.Gson;
-import darabonba.core.client.ClientOverrideConfiguration;
-
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.ExecutionException;
-
-public class AliEmailUtil {
-    private static String  accountName ="136560217@qq.com";
-
-    public static void sendEmail() {
-        try {
-            StaticCredentialProvider provider = StaticCredentialProvider.create(Credential.builder()
-                    .accessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
-                    .accessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"))
-                    .build());
-
-            AsyncClient client = AsyncClient.builder()
-                    .region("cn-hangzhou")
-                    .credentialsProvider(provider)
-                    .overrideConfiguration(ClientOverrideConfiguration.create().setEndpointOverride("dm.aliyuncs.com"))
-                    .build();
-            SingleSendMailRequest singleSendMailRequest = SingleSendMailRequest
-                    .builder()
-                    .accountName(accountName)
-                    .tagName("test")
-                    .replyToAddress(false)
-                    .toAddress("136560217@qq.com")
-                    .subject("测试邮件")
-                    .htmlBody("测试邮件")
-                    .addressType(1)
-                    .addressType(1)
-                    .build();
-
-            CompletableFuture<SingleSendMailResponse> response = client.singleSendMail(singleSendMailRequest);
-            SingleSendMailResponse resp = response.get();
-            System.out.println(new Gson().toJson(resp));
-            client.close();
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-}
-
-

+ 48 - 10
module-erp/src/main/java/com/hys/app/util/AliSmsUtil.java

@@ -2,7 +2,15 @@ package com.hys.app.util;
 
 
 import cn.hutool.json.JSONUtil;
+import com.aliyun.dysmsapi20170525.models.SendSmsResponse;
 import com.aliyun.tea.TeaException;
+import com.aliyun.teautil.models.RuntimeOptions;
+import com.aliyuncs.DefaultAcsClient;
+import com.aliyuncs.IAcsClient;
+import com.aliyuncs.dysmsapi.model.v20170525.AddSmsTemplateRequest;
+import com.aliyuncs.dysmsapi.model.v20170525.AddSmsTemplateResponse;
+import com.aliyuncs.profile.DefaultProfile;
+import com.hys.app.framework.exception.ServiceException;
 
 import java.util.Map;
 
@@ -15,8 +23,8 @@ public class AliSmsUtil {
     /**
      * <b>description</b> :
      * <p>使用AK&amp;SK初始化账号Client</p>
-     * @return Client
      *
+     * @return Client
      * @throws Exception
      */
     public static com.aliyun.dysmsapi20170525.Client createClient() throws Exception {
@@ -32,7 +40,20 @@ public class AliSmsUtil {
         return new com.aliyun.dysmsapi20170525.Client(config);
     }
 
-    public static void sendSms(String rePhone, String templateCode, Map<String ,String> map) throws Exception {
+    /**
+     * 获取用于查询短信状态的客户端
+     *
+     * @return
+     * @throws Exception
+     */
+    public static IAcsClient getIAcsClient() throws Exception {
+        // 创建DefaultProfile实例,用于初始化客户端配置
+        DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", access_id, access_secret);
+        // 创建IAcsClient实例
+        return new DefaultAcsClient(profile);
+    }
+
+    public static Boolean sendSms(String rePhone, String templateCode, Map<String, String> map) throws Exception {
         com.aliyun.dysmsapi20170525.Client client = AliSmsUtil.createClient();
         com.aliyun.dysmsapi20170525.models.SendSmsRequest sendSmsRequest = new com.aliyun.dysmsapi20170525.models.SendSmsRequest()
                 .setPhoneNumbers(rePhone)
@@ -41,14 +62,8 @@ public class AliSmsUtil {
                 .setSignName(signName);
         try {
             // 复制代码运行请自行打印 API 的返回值
-            client.sendSmsWithOptions(sendSmsRequest, new com.aliyun.teautil.models.RuntimeOptions());
-        } catch (TeaException error) {
-            // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
-            // 错误 message
-            System.out.println(error.getMessage());
-            // 诊断地址
-            System.out.println(error.getData().get("Recommend"));
-            com.aliyun.teautil.Common.assertAsString(error.message);
+            client.sendSmsWithOptions(sendSmsRequest, new RuntimeOptions());
+            return true;
         } catch (Exception _error) {
             TeaException error = new TeaException(_error.getMessage(), _error);
             // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
@@ -57,6 +72,29 @@ public class AliSmsUtil {
             // 诊断地址
             System.out.println(error.getData().get("Recommend"));
             com.aliyun.teautil.Common.assertAsString(error.message);
+            return false;
+        }
+    }
+
+    public static String createSmsTemplate(Integer templateType, String templateName, String templateContent, String remark) {
+        try {
+            // 设置鉴权参数,初始化客户端
+            DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", access_id, access_secret);
+            IAcsClient client = new DefaultAcsClient(profile);
+            // 创建API请求并设置参数
+            AddSmsTemplateRequest request = new AddSmsTemplateRequest();
+            request.setTemplateType(templateType); // 短信类型,0为验证码,1为短信通知,2为推广短信
+            request.setTemplateName(templateName);
+            request.setTemplateContent(templateContent);
+            request.setRemark(remark); // 模板申请的备注信息,如用途、使用场景等
+            // 发起请求并处理响应
+            AddSmsTemplateResponse response = client.getAcsResponse(request);
+            if (!"OK".equals(response.getCode())) {
+                throw new ServiceException("申请提交失败, 错误信息: " + response.getMessage());
+            }
+            return response.getTemplateCode();
+        } catch (Exception e) {
+            throw new ServiceException("短信模板创建失败");
         }
     }
 }

+ 4 - 2
module-erp/src/main/java/com/hys/app/util/MailSmtpUtil.java

@@ -20,7 +20,7 @@ public class MailSmtpUtil {
      * @param content
      */
 
-    public static void sendEmail(String toMail,String subject,Object content) {
+    public static Boolean sendEmail(String toMail,String subject,String content) {
         // 配置发送邮件的环境属性
         final Properties props = new Properties();
 
@@ -74,13 +74,15 @@ public class MailSmtpUtil {
             message.setSentDate(new Date()); //设置时间
             //设置邮件标题
             message.setSubject(subject);
-            message.setContent("测试<br> 内容", "text/html;charset=UTF-8");//html超文本;// "text/plain;charset=UTF-8" //纯文本。
+            message.setContent(content, "text/html;charset=UTF-8");//html超文本;// "text/plain;charset=UTF-8" //纯文本。
             // 发送邮件
             Transport.send(message);
+            return true;
         } catch (Exception e) {
             String err = e.getMessage();
             // 在这里处理message内容, 格式是固定的
             System.out.println(err);
+            return false;
         }
     }
     protected static String genMessageID(String mailFrom) {