From 298b406dfb44ead4031d4adba7cddb8ac3a1e319 Mon Sep 17 00:00:00 2001 From: Yen Date: Fri, 21 Apr 2023 08:49:00 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A8=E5=8D=95=E6=8E=A8=E9=80=81=EF=BC=8C?= =?UTF-8?q?=E4=BE=9B=E5=BA=94=E5=95=86=E8=81=94=E7=B3=BB=E4=BA=BA=E7=AD=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../exception/UnifiedExceptionHandler.java | 12 +- .../filter/SecurityRequestFilter.java | 9 +- .../serve/common/util/AuthContextUtils.java | 16 --- .../impl/BazVisitInstanceServiceImpl.java | 3 + .../biz/controller/api/BizVisitApi.java | 1 + .../qs/serve/modules/biz/entity/BizVisit.java | 4 + .../controller/BmsCostCenterController.java | 31 +++- .../bms/controller/BmsSubjectController.java | 2 +- .../BmsSupplierAddressController.java | 2 +- .../BmsSupplierContactsController.java | 136 ++++++++++++++++++ .../bms/controller/BmsSupplierController.java | 41 +++--- .../modules/bms/entity/BmsCostCenter.java | 1 + .../bms/entity/BmsSupplierContacts.java | 115 +++++++++++++++ .../bms/entity/bo/BmsChannelPointBo.java | 14 ++ .../bms/entity/bo/BmsSupplierContactsBo.java | 50 +++++++ .../bms/entity/bo/BmsSupplierParentBo.java | 2 +- .../bms/entity/so/BmsSupplierContactsSo.java | 45 ++++++ .../bms/mapper/BmsSupplierContactsMapper.java | 14 ++ .../service/BmsSupplierContactsService.java | 14 ++ .../impl/BmsSupplierContactsServiceImpl.java | 22 +++ .../service/impl/BmsSupplierServiceImpl.java | 1 + .../controller/api/QmsDraftApiController.java | 2 +- .../modules/qms/entity/so/QmsGroupSo.java | 2 + .../qms/service/impl/QmsDraftServiceImpl.java | 2 +- .../third/PortalFormPushController.java | 94 ++++++++++++ .../serve/modules/third/ThirdTokenUtil.java | 24 ++++ .../qs/serve/modules/wx/api/WxSvcUserApi.java | 1 + .../wx/controller/WxFormPushController.java | 120 ++++++++++++++++ .../wx/controller/WxUserController.java | 5 + .../serve/modules/wx/entity/WxFormPush.java | 96 +++++++++++++ .../modules/wx/entity/WxFormPushUser.java | 102 +++++++++++++ .../qs/serve/modules/wx/entity/WxUser.java | 1 + .../modules/wx/entity/bo/WxFormPushBo.java | 48 +++++++ .../modules/wx/entity/vo/WxPushResultVo.java | 19 +++ .../modules/wx/mapper/WxFormPushMapper.java | 14 ++ .../wx/mapper/WxFormPushUserMapper.java | 14 ++ .../modules/wx/service/WxFormPushService.java | 14 ++ .../wx/service/WxFormPushUserService.java | 14 ++ .../service/impl/WxFormPushServiceImpl.java | 22 +++ .../impl/WxFormPushUserServiceImpl.java | 22 +++ .../mapper/bms/BmsSupplierAddressMapper.xml | 2 +- .../mapper/qms/QmsGroupScopeMapper.xml | 4 +- 42 files changed, 1098 insertions(+), 59 deletions(-) create mode 100644 src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierContactsController.java create mode 100644 src/main/java/com/qs/serve/modules/bms/entity/BmsSupplierContacts.java create mode 100644 src/main/java/com/qs/serve/modules/bms/entity/bo/BmsSupplierContactsBo.java create mode 100644 src/main/java/com/qs/serve/modules/bms/entity/so/BmsSupplierContactsSo.java create mode 100644 src/main/java/com/qs/serve/modules/bms/mapper/BmsSupplierContactsMapper.java create mode 100644 src/main/java/com/qs/serve/modules/bms/service/BmsSupplierContactsService.java create mode 100644 src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierContactsServiceImpl.java create mode 100644 src/main/java/com/qs/serve/modules/third/PortalFormPushController.java create mode 100644 src/main/java/com/qs/serve/modules/wx/controller/WxFormPushController.java create mode 100644 src/main/java/com/qs/serve/modules/wx/entity/WxFormPush.java create mode 100644 src/main/java/com/qs/serve/modules/wx/entity/WxFormPushUser.java create mode 100644 src/main/java/com/qs/serve/modules/wx/entity/bo/WxFormPushBo.java create mode 100644 src/main/java/com/qs/serve/modules/wx/entity/vo/WxPushResultVo.java create mode 100644 src/main/java/com/qs/serve/modules/wx/mapper/WxFormPushMapper.java create mode 100644 src/main/java/com/qs/serve/modules/wx/mapper/WxFormPushUserMapper.java create mode 100644 src/main/java/com/qs/serve/modules/wx/service/WxFormPushService.java create mode 100644 src/main/java/com/qs/serve/modules/wx/service/WxFormPushUserService.java create mode 100644 src/main/java/com/qs/serve/modules/wx/service/impl/WxFormPushServiceImpl.java create mode 100644 src/main/java/com/qs/serve/modules/wx/service/impl/WxFormPushUserServiceImpl.java diff --git a/src/main/java/com/qs/serve/common/framework/exception/UnifiedExceptionHandler.java b/src/main/java/com/qs/serve/common/framework/exception/UnifiedExceptionHandler.java index 722c5d12..67b5a9f4 100644 --- a/src/main/java/com/qs/serve/common/framework/exception/UnifiedExceptionHandler.java +++ b/src/main/java/com/qs/serve/common/framework/exception/UnifiedExceptionHandler.java @@ -11,6 +11,7 @@ import org.springframework.security.access.AccessDeniedException; import org.springframework.security.authentication.BadCredentialsException; import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.stereotype.Component; +import org.springframework.validation.BeanPropertyBindingResult; import org.springframework.validation.BindException; import org.springframework.web.HttpRequestMethodNotSupportedException; import org.springframework.web.bind.MethodArgumentNotValidException; @@ -78,19 +79,26 @@ public class UnifiedExceptionHandler { @ExceptionHandler({ BindException.class, - MethodArgumentNotValidException.class, HttpRequestMethodNotSupportedException.class }) @ResponseBody public R handleDevPrintMsgException(Exception e,HttpServletRequest request) { log.warn("参数校验异常:{}",e.getMessage()); if(DevEnvironmentConfig.isDev()){ - log.warn("参数校验异常【{}】,请求地址:{}",e.getMessage(),request.getRequestURI()); return R.error(e.getMessage()); } return R.error(); } + @ExceptionHandler({ + MethodArgumentNotValidException.class, + }) + @ResponseBody + public R handleMethodArgumentNotValidException(MethodArgumentNotValidException e,HttpServletRequest request) { + log.warn("参数校验异常【{}】,请求地址:{}",e.getMessage(),request.getRequestURI()); + return R.error(e.getBindingResult().getAllErrors().get(0).getDefaultMessage()); + } + @ExceptionHandler(value = DuplicateKeyException.class) @ResponseBody diff --git a/src/main/java/com/qs/serve/common/framework/security/filter/SecurityRequestFilter.java b/src/main/java/com/qs/serve/common/framework/security/filter/SecurityRequestFilter.java index 1775371c..9a453d42 100644 --- a/src/main/java/com/qs/serve/common/framework/security/filter/SecurityRequestFilter.java +++ b/src/main/java/com/qs/serve/common/framework/security/filter/SecurityRequestFilter.java @@ -115,16 +115,9 @@ public class SecurityRequestFilter extends OncePerRequestFilter { String token = request.getHeader(GySysConst.AUTHORIZATION_PROP); if(tenant!=null&&token!=null&&JwtUtils.verify(token)){ String userId = JwtUtils.getUserId(token); - String userType = JwtUtils.getUserType(token); - AuthContextUtils.setTenant(tenant); if(SecurityContextHolder.getContext().getAuthentication()==null){ - UserDetails userDetails = null; - if(userType.equals(LoginUserType.SYS_USER.getCode()) - ||userType.equals(LoginUserType.SYS_SUP_USER.getCode())){ - //后台管理员登录 - userDetails = sysUserService.getLoginUserById(userId); - } + UserDetails userDetails = sysUserService.getLoginUserById(userId); if(userDetails!=null){ UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities()); authentication.setDetails(new WebAuthenticationDetailsSource().buildDetails(request)); diff --git a/src/main/java/com/qs/serve/common/util/AuthContextUtils.java b/src/main/java/com/qs/serve/common/util/AuthContextUtils.java index 477dd42d..a92bcc5d 100644 --- a/src/main/java/com/qs/serve/common/util/AuthContextUtils.java +++ b/src/main/java/com/qs/serve/common/util/AuthContextUtils.java @@ -47,28 +47,12 @@ public class AuthContextUtils { return getLoginUser(true); } - /** - * 获取微信用户ID - * @return - */ - public static String getWxUserId(){ - LoginUser loginUser = getLoginUser(); - if(loginUser.getTypeFlag().equals(LoginUserType.APP_USER)){ - return loginUser.getUserId(); - } - return null; - } - /** * 系统用户ID * @return */ public static String getSysUserId(){ LoginUser loginUser = getLoginUser(); -// if(loginUser.getTypeFlag().equals(LoginUserType.SYS_SUP_USER) -// ||loginUser.getTypeFlag().equals(LoginUserType.SYS_USER)){ -// return loginUser.getUserId(); -// } return loginUser.getUserId(); } diff --git a/src/main/java/com/qs/serve/modules/baz/service/impl/BazVisitInstanceServiceImpl.java b/src/main/java/com/qs/serve/modules/baz/service/impl/BazVisitInstanceServiceImpl.java index 27c76e65..c939b18b 100644 --- a/src/main/java/com/qs/serve/modules/baz/service/impl/BazVisitInstanceServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/baz/service/impl/BazVisitInstanceServiceImpl.java @@ -29,6 +29,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import com.qs.serve.modules.baz.service.BazVisitInstanceService; import com.qs.serve.modules.baz.mapper.BazVisitInstanceMapper; +import org.springframework.transaction.annotation.Transactional; import java.time.LocalDate; import java.time.LocalDateTime; @@ -55,6 +56,7 @@ public class BazVisitInstanceServiceImpl extends ServiceImpl1){ + checkRepeat(parent,dbCostCenter.getId()); + } + costCenter.setLevel(parent.getLevel()+1); + } + } + bmsCostCenterService.saveOrUpdate(costCenter); + } + + private void checkRepeat(BmsCostCenter parent,Long id){ + if(parent.getId().equals(id)){ + Assert.throwEx("数据出现循环递归,保存失败"); + } + if(parent.getLevel()>1){ + BmsCostCenter netParent = bmsCostCenterService.getById(parent.getPid()); + checkRepeat(netParent, id); } - bmsCostCenterService.saveOrUpdate(costCenter); } /** diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsSubjectController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsSubjectController.java index 9aa6dd08..f20325ad 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/BmsSubjectController.java +++ b/src/main/java/com/qs/serve/modules/bms/controller/BmsSubjectController.java @@ -65,7 +65,7 @@ public class BmsSubjectController { return treeNode; }).collect(Collectors.toList()); treeVoList = TreeUtil.buildByRecursive(treeVoList,TreeUtil.DEFAULT_PID_STRING); - if(StringUtils.hasText(supplierId)){ + if(StringUtils.hasText(supplierId)&&!supplierId.equals("0")){ BmsSupplier bmsSupplier = bmsSupplierService.getById(supplierId); LambdaQueryWrapper subjectLqw = new LambdaQueryWrapper<>(); subjectLqw.eq(BmsSubject::getBizRegionFlag,0).or().eq(BmsSubject::getSaleRegionFlag,0); diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierAddressController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierAddressController.java index 7d2a6a13..531d92c8 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierAddressController.java +++ b/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierAddressController.java @@ -136,7 +136,7 @@ public class BmsSupplierAddressController { @DeleteMapping("/deleteById/{id}") @SysLog(module = SystemModule.BASE, title = "供应商地址", biz = BizType.DELETE) @PreAuthorize("hasRole('bms:supplierAddress:delete')") - public R deleteById(@PathVariable("id") String id){ + public R deleteById(@PathVariable("id") Long id){ boolean result = bmsSupplierAddressService.removeById(id); return R.isTrue(result); } diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierContactsController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierContactsController.java new file mode 100644 index 00000000..0031991e --- /dev/null +++ b/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierContactsController.java @@ -0,0 +1,136 @@ +package com.qs.serve.modules.bms.controller; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.qs.serve.common.model.annotation.SysLog; +import com.qs.serve.common.model.dto.PageVo; +import com.qs.serve.common.model.dto.R; +import com.qs.serve.common.model.enums.BizType; +import com.qs.serve.common.model.enums.SystemModule; +import com.qs.serve.common.util.Assert; +import com.qs.serve.common.util.PageUtil; +import com.qs.serve.common.util.CopierUtil; +import com.qs.serve.common.util.StringUtils; +import com.qs.serve.modules.bms.entity.BmsSupplier; +import com.qs.serve.modules.bms.service.BmsSupplierService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import com.qs.serve.modules.bms.entity.so.BmsSupplierContactsSo; +import com.qs.serve.modules.bms.entity.bo.BmsSupplierContactsBo; +import com.qs.serve.modules.bms.entity.BmsSupplierContacts; +import com.qs.serve.modules.bms.service.BmsSupplierContactsService; + +import javax.validation.Valid; +import java.util.List; + +/** + * 基础档案 供应商联系人 + * @author YenHex + * @since 2023-04-19 + */ +@Slf4j +@AllArgsConstructor +@RestController +@RequestMapping("bms/supplierContacts") +public class BmsSupplierContactsController { + + private BmsSupplierContactsService bmsSupplierContactsService; + private BmsSupplierService bmsSupplierService; + + /** + * 列表 + * @param param + * @return + */ + @GetMapping("/list") + public R> getList(BmsSupplierContactsSo param){ + BmsSupplierContacts entity = CopierUtil.copy(param,new BmsSupplierContacts()); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(entity); + PageUtil.startPage(); + List list = bmsSupplierContactsService.list(lqw); + return R.ok(list); + } + + /** + * 翻页 + * @param param + * @return + */ + @GetMapping("/page") + public R> getPage(BmsSupplierContactsSo param){ + BmsSupplierContacts entity = CopierUtil.copy(param,new BmsSupplierContacts()); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(entity); + PageUtil.startPage(); + List list = bmsSupplierContactsService.list(lqw); + return R.byPageHelperList(list); + } + + /** + * ID查询 + * @param id + * @return + */ + @GetMapping("/getById/{id}") + public R getById(@PathVariable("id") String id){ + BmsSupplierContacts bmsSupplierContacts = bmsSupplierContactsService.getById(id); + return R.ok(bmsSupplierContacts); + } + + + + /** + * 更新 + * @param param + * @return + */ + @PostMapping("/updateById") + @SysLog(module = SystemModule.BASE, title = "供应商联系人", biz = BizType.UPDATE) + public R updateById(@RequestBody @Valid BmsSupplierContactsBo param){ + BmsSupplierContacts entity = CopierUtil.copy(param,new BmsSupplierContacts()); + if(StrUtil.isEmpty(param.getContactsName())&&StrUtil.isEmpty(param.getContactsPost())){ + Assert.throwEx("姓名和职务至少填一个"); + } + BmsSupplier supplier = bmsSupplierService.getById(param.getSupplierId()); + entity.setSupplierCode(supplier.getCode()); + entity.setSupplierName(supplier.getName()); + boolean result = bmsSupplierContactsService.updateById(entity); + return R.isTrue(result); + } + + /** + * 新增 + * @param param + * @return + */ + @PostMapping("/save") + @SysLog(module = SystemModule.BASE, title = "供应商联系人", biz = BizType.INSERT) + public R save(@RequestBody @Valid BmsSupplierContactsBo param){ + BmsSupplierContacts entity = CopierUtil.copy(param,new BmsSupplierContacts()); + if(StrUtil.isEmpty(param.getContactsName())&&StrUtil.isEmpty(param.getContactsPost())){ + Assert.throwEx("姓名和职务至少填一个"); + } + BmsSupplier supplier = bmsSupplierService.getById(param.getSupplierId()); + entity.setSupplierCode(supplier.getCode()); + entity.setSupplierName(supplier.getName()); + bmsSupplierContactsService.save(entity); + return R.ok(entity); + } + + /** + * 删除 + * @param ids + * @return + */ + @DeleteMapping("/deleteById/{ids}") + @SysLog(module = SystemModule.BASE, title = "供应商联系人", biz = BizType.DELETE) + public R deleteById(@PathVariable("ids") String ids){ + List idsLong = StringUtils.splitIdLong(ids); + boolean result = bmsSupplierContactsService.removeByIds(idsLong); + return R.isTrue(result); + } + +} + diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierController.java index 9b375893..9e6513cd 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierController.java +++ b/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierController.java @@ -427,27 +427,29 @@ public class BmsSupplierController { @PreAuthorize("hasRole('bms:supplier:update')") public R updateParent(@RequestBody BmsSupplierParentBo param){ BmsSupplier supplier = new BmsSupplier(); - supplier.setId(param.getId()); - if(param.getPid()==null||param.getPid().equals(0L)){ - supplier.setPid("0"); - supplier.setParentCode("0"); - }else { - BmsSupplier supplierdb = null; - List childList = null; - if(param.getId()!=null){ - supplierdb = bmsSupplierService.getById(param.getId()); - childList = bmsSupplierService.listChildByPathIds(supplierdb.getPathIds()); - } - BmsSupplier parentNode = bmsSupplierService.getById(param.getPid()); - supplier.setPid(param.getPid()+""); - String[] pids = parentNode.getPathIds().split("_"); - for (String pid : pids) { - if(pid.equals(supplier.getId())){ - return R.error("数据出现循环递归,保存失败"); + BmsSupplier supplierdb = null; + if(param.getId()!=null){ + supplier.setId(param.getId()); + supplierdb = bmsSupplierService.getById(param.getId()); + } + if(supplierdb!=null && !supplierdb.getPid().equals(param.getPid())){ + List childList = bmsSupplierService.listChildByPathIds(supplierdb.getPathIds()); + if(param.getPid()==null||param.getPid().equals("0")){ + supplier.setPid("0"); + supplier.setParentCode("0"); + supplier.setPathIds("0_"+supplier.getId()); + }else { + BmsSupplier parentNode = bmsSupplierService.getById(param.getPid()); + supplier.setPid(param.getPid()); + String[] pids = parentNode.getPathIds().split("_"); + for (String pid : pids) { + if(pid.equals(supplier.getId())){ + return R.error("数据出现循环递归,保存失败"); + } } + supplier.setPathIds(parentNode.getPathIds()+"_"+supplier.getId()); + supplier.setParentCode(parentNode.getCode()); } - supplier.setPathIds(parentNode.getPathIds()+"_"+supplier.getId()); - supplier.setParentCode(parentNode.getCode()); for (BmsSupplier bmsSupplier : childList) { BmsSupplier bmsSupplier2 = new BmsSupplier(); bmsSupplier2.setPathIds(bmsSupplier.getPathIds().replace(supplierdb.getPathIds(),supplier.getPathIds())); @@ -455,6 +457,7 @@ public class BmsSupplierController { bmsSupplierService.updateById(bmsSupplier2); } } + bmsSupplierService.updateById(supplier); redisService.remove(RedisCacheKeys.SUPPLIER_RELATE_TREE); return R.ok(); diff --git a/src/main/java/com/qs/serve/modules/bms/entity/BmsCostCenter.java b/src/main/java/com/qs/serve/modules/bms/entity/BmsCostCenter.java index fbe198b2..bb76780e 100644 --- a/src/main/java/com/qs/serve/modules/bms/entity/BmsCostCenter.java +++ b/src/main/java/com/qs/serve/modules/bms/entity/BmsCostCenter.java @@ -50,6 +50,7 @@ public class BmsCostCenter implements Serializable { @NotNull(message = "父级节点不能为空") private Long pid; + /** 备注 */ @Length(max = 255,message = "备注长度不能超过255字") private String remark; diff --git a/src/main/java/com/qs/serve/modules/bms/entity/BmsSupplierContacts.java b/src/main/java/com/qs/serve/modules/bms/entity/BmsSupplierContacts.java new file mode 100644 index 00000000..54239663 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/bms/entity/BmsSupplierContacts.java @@ -0,0 +1,115 @@ +package com.qs.serve.modules.bms.entity; + +import java.time.LocalDate; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import org.hibernate.validator.constraints.Length; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.NotBlank; + +/** + * 供应商联系人 实体类 + * @author YenHex + * @since 2023-04-19 + */ +@Data +@TableName("bms_supplier_contacts") +public class BmsSupplierContacts implements Serializable { + + private static final long serialVersionUID = 1L; + + /** id */ + @TableId(type = IdType.AUTO) + private Long id; + + /** 经销商id */ + private Long supplierId; + + /** 经销商名称 */ + @Length(max = 255,message = "经销商名称长度不能超过255字") + @TableField(condition = SqlCondition.LIKE) + private String supplierName; + + /** 经销商编码 */ + @Length(max = 255,message = "经销商编码长度不能超过255字") + @TableField(condition = SqlCondition.LIKE) + private String supplierCode; + + /** 联系号码 */ + @Length(max = 255,message = "联系号码长度不能超过255字") + @TableField(condition = SqlCondition.LIKE) + private String contactsNumber; + + /** 联系名称 */ + @Length(max = 255,message = "联系名称长度不能超过255字") + @TableField(condition = SqlCondition.LIKE) + private String contactsName; + + /** 联系岗位 */ + @Length(max = 255,message = "联系岗位长度不能超过255字") + @TableField(condition = SqlCondition.LIKE) + private String contactsPost; + + /** 备注 */ + private String remark; + + /** 创建时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; + + /** 创建人 */ + @TableField(fill = FieldFill.INSERT) + private String createBy; + + /** 更新时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @TableField(fill = FieldFill.UPDATE) + private LocalDateTime updateTime; + + /** 更新人 */ + @TableField(fill = FieldFill.UPDATE) + private String updateBy; + + /** 租户id */ + @JsonIgnore + @JsonProperty + private String tenantId; + + /** 删除标识 */ + @JsonIgnore + @JsonProperty + private Boolean delFlag; + + + public static BmsSupplierContacts toNewObject(BmsSupplierContacts source){ + BmsSupplierContacts supplierContacts = new BmsSupplierContacts(); + supplierContacts.setId(source.getId()); + supplierContacts.setSupplierId(source.getSupplierId()); + supplierContacts.setSupplierName(source.getSupplierName()); + supplierContacts.setSupplierCode(source.getSupplierCode()); + supplierContacts.setContactsNumber(source.getContactsNumber()); + supplierContacts.setContactsName(source.getContactsName()); + supplierContacts.setContactsPost(source.getContactsPost()); + supplierContacts.setCreateTime(source.getCreateTime()); + supplierContacts.setCreateBy(source.getCreateBy()); + supplierContacts.setUpdateTime(source.getUpdateTime()); + supplierContacts.setUpdateBy(source.getUpdateBy()); + supplierContacts.setTenantId(source.getTenantId()); + supplierContacts.setDelFlag(source.getDelFlag()); + return supplierContacts; + } + +} + diff --git a/src/main/java/com/qs/serve/modules/bms/entity/bo/BmsChannelPointBo.java b/src/main/java/com/qs/serve/modules/bms/entity/bo/BmsChannelPointBo.java index d1c7d84e..395f24f1 100644 --- a/src/main/java/com/qs/serve/modules/bms/entity/bo/BmsChannelPointBo.java +++ b/src/main/java/com/qs/serve/modules/bms/entity/bo/BmsChannelPointBo.java @@ -1,8 +1,11 @@ package com.qs.serve.modules.bms.entity.bo; import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; +import com.qs.serve.common.framework.mybatis.handler.meta.SplitStringTypeHandler; import lombok.Data; +import org.apache.ibatis.type.JdbcType; import org.hibernate.validator.constraints.Length; import javax.validation.constraints.NotBlank; @@ -80,4 +83,15 @@ public class BmsChannelPointBo { @Length(max = 255,message = "地图地址长度不能超过255字") private String mapAddress; + /** 行政区域 */ + @NotBlank(message = "行政区域不能为空") + @Length(max = 255,message = "行政区域长度不能超过255字") + private String bizRegionPath; + + private String bizRegionPathIds; + + + /** 图片多张用句号隔开 */ + @TableField(typeHandler = SplitStringTypeHandler.class,jdbcType= JdbcType.VARCHAR) + private String[] photos; } diff --git a/src/main/java/com/qs/serve/modules/bms/entity/bo/BmsSupplierContactsBo.java b/src/main/java/com/qs/serve/modules/bms/entity/bo/BmsSupplierContactsBo.java new file mode 100644 index 00000000..3230ba1e --- /dev/null +++ b/src/main/java/com/qs/serve/modules/bms/entity/bo/BmsSupplierContactsBo.java @@ -0,0 +1,50 @@ +package com.qs.serve.modules.bms.entity.bo; + +import java.time.LocalDate; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import org.hibernate.validator.constraints.Length; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.NotBlank; + +/** + * 供应商联系人 Bo + * @author YenHex + * @since 2023-04-19 + */ +@Data +public class BmsSupplierContactsBo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** id */ + private Long id; + + /** 经销商id */ + private Long supplierId; + + /** 联系号码 */ + @Length(max = 255,message = "联系号码长度不能超过255字") + private String contactsNumber; + + /** 联系名称 */ + @Length(max = 255,message = "联系名称长度不能超过255字") + private String contactsName; + + /** 联系岗位 */ + @Length(max = 255,message = "联系岗位长度不能超过255字") + private String contactsPost; + + /** 备注 */ + private String remark; + +} + diff --git a/src/main/java/com/qs/serve/modules/bms/entity/bo/BmsSupplierParentBo.java b/src/main/java/com/qs/serve/modules/bms/entity/bo/BmsSupplierParentBo.java index d7298f31..02c6b764 100644 --- a/src/main/java/com/qs/serve/modules/bms/entity/bo/BmsSupplierParentBo.java +++ b/src/main/java/com/qs/serve/modules/bms/entity/bo/BmsSupplierParentBo.java @@ -18,6 +18,6 @@ public class BmsSupplierParentBo { private String id; /** 父级id,0表总公司无上级 */ - private Long pid; + private String pid; } diff --git a/src/main/java/com/qs/serve/modules/bms/entity/so/BmsSupplierContactsSo.java b/src/main/java/com/qs/serve/modules/bms/entity/so/BmsSupplierContactsSo.java new file mode 100644 index 00000000..e99a6cac --- /dev/null +++ b/src/main/java/com/qs/serve/modules/bms/entity/so/BmsSupplierContactsSo.java @@ -0,0 +1,45 @@ +package com.qs.serve.modules.bms.entity.so; + +import java.time.LocalDate; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import org.hibernate.validator.constraints.Length; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.NotBlank; + +/** + * 供应商联系人 查询参数 + * @author YenHex + * @since 2023-04-19 + */ +@Data +public class BmsSupplierContactsSo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** 经销商名称 */ + private String supplierName; + + /** 经销商编码 */ + private String supplierCode; + + /** 联系号码 */ + private String contactsNumber; + + /** 联系名称 */ + private String contactsName; + + /** 联系岗位 */ + private String contactsPost; + + +} + diff --git a/src/main/java/com/qs/serve/modules/bms/mapper/BmsSupplierContactsMapper.java b/src/main/java/com/qs/serve/modules/bms/mapper/BmsSupplierContactsMapper.java new file mode 100644 index 00000000..f273e6f7 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/bms/mapper/BmsSupplierContactsMapper.java @@ -0,0 +1,14 @@ +package com.qs.serve.modules.bms.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.qs.serve.modules.bms.entity.BmsSupplierContacts; + +/** + * 供应商联系人 Mapper + * @author YenHex + * @date 2023-04-19 + */ +public interface BmsSupplierContactsMapper extends BaseMapper { + +} + diff --git a/src/main/java/com/qs/serve/modules/bms/service/BmsSupplierContactsService.java b/src/main/java/com/qs/serve/modules/bms/service/BmsSupplierContactsService.java new file mode 100644 index 00000000..806739cb --- /dev/null +++ b/src/main/java/com/qs/serve/modules/bms/service/BmsSupplierContactsService.java @@ -0,0 +1,14 @@ +package com.qs.serve.modules.bms.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.qs.serve.modules.bms.entity.BmsSupplierContacts; + +/** + * 供应商联系人 服务接口 + * @author YenHex + * @date 2023-04-19 + */ +public interface BmsSupplierContactsService extends IService { + +} + diff --git a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierContactsServiceImpl.java b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierContactsServiceImpl.java new file mode 100644 index 00000000..d0f11aa0 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierContactsServiceImpl.java @@ -0,0 +1,22 @@ +package com.qs.serve.modules.bms.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import com.qs.serve.modules.bms.entity.BmsSupplierContacts; +import com.qs.serve.modules.bms.service.BmsSupplierContactsService; +import com.qs.serve.modules.bms.mapper.BmsSupplierContactsMapper; + +/** + * 供应商联系人 服务实现类 + * @author YenHex + * @since 2023-04-19 + */ +@Slf4j +@Service +@AllArgsConstructor +public class BmsSupplierContactsServiceImpl extends ServiceImpl implements BmsSupplierContactsService { + +} + diff --git a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java index d7290db7..316c5d9c 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java @@ -83,6 +83,7 @@ public class BmsSupplierServiceImpl extends ServiceImpl im @Override public QmsDraft getUserFormDraft(Long groupId) { LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); - lqw.eq(QmsDraft::getCreateBy, AuthContextUtils.getWxUserId()); + lqw.eq(QmsDraft::getCreateBy, AuthContextUtils.getSysUserId()); lqw.eq(QmsDraft::getGroupId,groupId); lqw.eq(QmsDraft::getPubFlag,0); return this.getOne(lqw,false); diff --git a/src/main/java/com/qs/serve/modules/third/PortalFormPushController.java b/src/main/java/com/qs/serve/modules/third/PortalFormPushController.java new file mode 100644 index 00000000..90b6d087 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/third/PortalFormPushController.java @@ -0,0 +1,94 @@ +package com.qs.serve.modules.third; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.qs.serve.common.model.annotation.SysLog; +import com.qs.serve.common.model.dto.PageVo; +import com.qs.serve.common.model.dto.R; +import com.qs.serve.common.model.enums.BizType; +import com.qs.serve.common.model.enums.SystemModule; +import com.qs.serve.common.util.PageUtil; +import com.qs.serve.common.util.CopierUtil; +import com.qs.serve.common.util.StringUtils; +import com.qs.serve.modules.wx.entity.WxFormPushUser; +import com.qs.serve.modules.wx.entity.WxUser; +import com.qs.serve.modules.wx.entity.bo.WxFormPushBo; +import com.qs.serve.modules.wx.entity.dto.sms.WxSmsNewForm; +import com.qs.serve.modules.wx.entity.vo.WxPushResultVo; +import com.qs.serve.modules.wx.service.WxFormPushUserService; +import com.qs.serve.modules.wx.service.WxPushService; +import com.qs.serve.modules.wx.service.WxUserService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import com.qs.serve.modules.wx.entity.WxFormPush; +import com.qs.serve.modules.wx.service.WxFormPushService; + +import javax.servlet.http.HttpServletRequest; +import javax.validation.Valid; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 【第三方接口】 表单推送 + * @author YenHex + * @since 2023-04-19 + */ +@Slf4j +@AllArgsConstructor +@RestController +@RequestMapping("thirty/formPush") +public class PortalFormPushController { + + private WxFormPushService wxFormPushService; + private WxFormPushUserService wxFormPushUserService; + private WxUserService wxUserService; + private WxPushService wxPushService; + + /** + * 新增 + * @param param + * @return + */ + @PostMapping("/publish") + public R save(@RequestBody @Valid WxFormPushBo param, HttpServletRequest request){ + ThirdTokenUtil.checkToken(request); + WxFormPush entity = CopierUtil.copy(param,new WxFormPush()); + wxFormPushService.save(entity); + List userCodes = param.getUserCodes().stream().distinct().collect(Collectors.toList()); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(WxUser::getAppId,param.getAppId()); + lqw.in(WxUser::getSysUserCode,userCodes); + List wxUserList = wxUserService.list(lqw); + List userCodes2 = wxUserList.stream().map(WxUser::getSysUserCode).distinct().collect(Collectors.toList()); + List pushUserList = new ArrayList<>(); + for (WxUser wxUser : wxUserList) { + if(wxUser.getOpenId().equals("0")){ + continue; + } + WxSmsNewForm wxSmsNewForm = new WxSmsNewForm(); + wxSmsNewForm.setTitle(param.getTitle()); + wxSmsNewForm.setUserName(wxUser.getEmpName()); + wxSmsNewForm.setBizType(param.getBusinessType()==null?"通知":param.getBusinessType()); + wxSmsNewForm.setBitTime(LocalDateTime.now().toString().replace("T"," ")); + wxSmsNewForm.setRemark(param.getRemark()); + wxPushService.sendWxMsg(wxUser,"表单通知",wxSmsNewForm,true,entity.getId()); + WxFormPushUser pushUser = new WxFormPushUser(); + pushUser.setFormPushId(entity.getId()); + pushUser.setUserId(wxUser.getSysUserId()); + pushUser.setUserCode(wxUser.getSysUserCode()); + pushUser.setUserName(wxUser.getEmpName()); + pushUserList.add(pushUser); + } + wxFormPushUserService.saveBatch(pushUserList); + List userCodes3 = userCodes.stream().filter(a->!userCodes2.contains(a)).collect(Collectors.toList()); + WxPushResultVo resultVo = new WxPushResultVo(); + resultVo.setNotBindUserCodeList(userCodes3); + return R.ok(resultVo); + } + +} + diff --git a/src/main/java/com/qs/serve/modules/third/ThirdTokenUtil.java b/src/main/java/com/qs/serve/modules/third/ThirdTokenUtil.java index eca3ea25..37b07799 100644 --- a/src/main/java/com/qs/serve/modules/third/ThirdTokenUtil.java +++ b/src/main/java/com/qs/serve/modules/third/ThirdTokenUtil.java @@ -22,6 +22,7 @@ public class ThirdTokenUtil { String token = request.getHeader(ThirtyConst.TOKEN_API_PARAM); if(token==null||!token.equalsIgnoreCase(match)){ if(DevEnvironmentConfig.isDev()){ + log.debug("HttpServletRequest v-token==>{}",token); log.error("v-token==>"+match); Assert.throwEx("请求头 v-token 为空。或token无效"); } @@ -29,4 +30,27 @@ public class ThirdTokenUtil { } } + public static String makeToken() { + String time = LocalDate.now().toString(); + String token = SecureUtil.md5("jslApi-" + time); + return token; + } + + public static void main(String[] args) { + String token = makeToken(); + System.out.println(token); + + String time = LocalDate.now().toString(); + String match = SecureUtil.md5(ThirtyConst.PREFIX_MD5_VALUE + time); + + if(token==null||!token.equalsIgnoreCase(match)){ + if(DevEnvironmentConfig.isDev()){ + log.error("v-token==>"+match); + Assert.throwEx("请求头 v-token 为空。或token无效"); + } + Assert.throwEx("err"); + } + + } + } diff --git a/src/main/java/com/qs/serve/modules/wx/api/WxSvcUserApi.java b/src/main/java/com/qs/serve/modules/wx/api/WxSvcUserApi.java index 96173a23..3677dffb 100644 --- a/src/main/java/com/qs/serve/modules/wx/api/WxSvcUserApi.java +++ b/src/main/java/com/qs/serve/modules/wx/api/WxSvcUserApi.java @@ -93,6 +93,7 @@ public class WxSvcUserApi { wxUser.setPhone(param.getPhone()); wxUser.setEmpName(sysUser.getName()); wxUser.setSysUserId(sysUser.getId()); + wxUser.setSysUserCode(sysUser.getCode()); wxUserService.updateById(wxUser); return R.ok(); diff --git a/src/main/java/com/qs/serve/modules/wx/controller/WxFormPushController.java b/src/main/java/com/qs/serve/modules/wx/controller/WxFormPushController.java new file mode 100644 index 00000000..4ad52b06 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/wx/controller/WxFormPushController.java @@ -0,0 +1,120 @@ +package com.qs.serve.modules.wx.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.qs.serve.common.model.annotation.SysLog; +import com.qs.serve.common.model.dto.PageVo; +import com.qs.serve.common.model.dto.R; +import com.qs.serve.common.model.enums.BizType; +import com.qs.serve.common.model.enums.SystemModule; +import com.qs.serve.common.util.PageUtil; +import com.qs.serve.common.util.CopierUtil; +import com.qs.serve.common.util.StringUtils; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import com.qs.serve.modules.wx.entity.bo.WxFormPushBo; +import com.qs.serve.modules.wx.entity.WxFormPush; +import com.qs.serve.modules.wx.service.WxFormPushService; + +import javax.validation.Valid; +import java.util.List; + +/** + * 微信 表单推送 + * @author YenHex + * @since 2023-04-19 + */ +@Slf4j +@AllArgsConstructor +@RestController +@RequestMapping("wx/formPush") +public class WxFormPushController { + + private WxFormPushService wxFormPushService; + + /** + * 列表 + * @param param + * @return + */ + //@GetMapping("/list") + @PreAuthorize("hasRole('wx:formPush:query')") + public R> getList(WxFormPush param){ + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(param); + PageUtil.startPage(); + List list = wxFormPushService.list(lqw); + return R.ok(list); + } + + /** + * 翻页 + * @param param + * @return + */ + @GetMapping("/page") + public R> getPage(WxFormPush param){ + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(param); + PageUtil.startPage(); + List list = wxFormPushService.list(lqw); + return R.byPageHelperList(list); + } + + /** + * ID查询 + * @param id + * @return + */ + @GetMapping("/getById/{id}") + @SysLog(module = SystemModule.Verification, title = "表单推送", biz = BizType.QUERY) + public R getById(@PathVariable("id") String id){ + WxFormPush wxFormPush = wxFormPushService.getById(id); + return R.ok(wxFormPush); + } + + + + /** + * 更新 + * @param param + * @return + */ + //@PostMapping("/updateById") + @SysLog(module = SystemModule.Verification, title = "表单推送", biz = BizType.UPDATE) + @PreAuthorize("hasRole('wx:formPush:update')") + public R updateById(@RequestBody @Valid WxFormPushBo param){ + WxFormPush entity = CopierUtil.copy(param,new WxFormPush()); + boolean result = wxFormPushService.updateById(entity); + return R.isTrue(result); + } + + /** + * 新增 + * @param param + * @return + */ + //@PostMapping("/save") + @SysLog(module = SystemModule.Verification, title = "表单推送", biz = BizType.INSERT) + @PreAuthorize("hasRole('wx:formPush:insert')") + public R save(@RequestBody @Valid WxFormPushBo param){ + WxFormPush entity = CopierUtil.copy(param,new WxFormPush()); + boolean result = wxFormPushService.save(entity); + return R.isTrue(result); + } + + /** + * 删除 + * @param ids + * @return + */ + @DeleteMapping("/deleteById/{ids}") + @SysLog(module = SystemModule.Verification, title = "表单推送", biz = BizType.DELETE) + public R deleteById(@PathVariable("ids") String ids){ + List idsLong = StringUtils.splitIdLong(ids); + boolean result = wxFormPushService.removeByIds(idsLong); + return R.isTrue(result); + } + +} + diff --git a/src/main/java/com/qs/serve/modules/wx/controller/WxUserController.java b/src/main/java/com/qs/serve/modules/wx/controller/WxUserController.java index 25eed2b8..9f997ab2 100644 --- a/src/main/java/com/qs/serve/modules/wx/controller/WxUserController.java +++ b/src/main/java/com/qs/serve/modules/wx/controller/WxUserController.java @@ -87,6 +87,7 @@ public class WxUserController { WxUser updVo = new WxUser(); updVo.setId(wxUser.getId()); updVo.setSysUserId(sysUser.getId()); + updVo.setSysUserCode(sysUser.getCode()); updVo.setEmpName(sysUser.getName()); updVo.setPhone(sysUser.getMobile()); wxUserService.updateById(updVo); @@ -95,6 +96,7 @@ public class WxUserController { lqw.eq(WxUser::getUnionId,wxUser.getUnionId()); WxUser updVo = new WxUser(); updVo.setSysUserId(sysUser.getId()); + updVo.setSysUserCode(sysUser.getCode()); updVo.setEmpName(sysUser.getName()); updVo.setPhone(sysUser.getMobile()); wxUserService.update(updVo,lqw); @@ -117,6 +119,7 @@ public class WxUserController { wxUserId = wxUser.getId(); if(!StringUtils.hasText(wxUser.getUnionId())){ wxUser.setSysUserId("0"); + wxUser.setSysUserCode(""); wxUser.setEmpName(wxUser.getNickName()); wxUser.setPhone(""); wxUserService.updateById(wxUser); @@ -125,6 +128,7 @@ public class WxUserController { lqw.eq(WxUser::getUnionId,wxUser.getUnionId()); WxUser updVo = new WxUser(); updVo.setSysUserId("0"); + wxUser.setSysUserCode(""); updVo.setEmpName(wxUser.getNickName()); updVo.setPhone(""); wxUserService.update(updVo,lqw); @@ -135,6 +139,7 @@ public class WxUserController { List wxUserList = wxUserService.getBySysUserId(sysUser.getId()); for (WxUser wxUser : wxUserList) { wxUser.setSysUserId("0"); + wxUser.setSysUserCode(""); wxUser.setEmpName(wxUser.getNickName()); wxUser.setPhone(""); wxUserService.updateById(wxUser); diff --git a/src/main/java/com/qs/serve/modules/wx/entity/WxFormPush.java b/src/main/java/com/qs/serve/modules/wx/entity/WxFormPush.java new file mode 100644 index 00000000..9c45c048 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/wx/entity/WxFormPush.java @@ -0,0 +1,96 @@ +package com.qs.serve.modules.wx.entity; + +import java.time.LocalDate; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import org.hibernate.validator.constraints.Length; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.NotBlank; + +/** + * 表单推送 实体类 + * @author YenHex + * @since 2023-04-19 + */ +@Data +@TableName("wx_form_push") +public class WxFormPush implements Serializable { + + private static final long serialVersionUID = 1L; + + /** id */ + @TableId(type = IdType.ASSIGN_UUID) + private String id; + + /** 标题 */ + @Length(max = 255,message = "标题长度不能超过255字") + private String title; + + /** 表单内容 */ + private String formContext; + + /** 表单值 */ + private String formContextValue; + + /** 备注 */ + @Length(max = 600,message = "备注长度不能超过600字") + private String remark; + + /** 创建时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; + + /** 最后更新时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @TableField(fill = FieldFill.UPDATE) + private LocalDateTime updateTime; + + /** 所属租户 */ + @JsonIgnore + @JsonProperty + private String tenantId; + + /** 创建人 */ + @TableField(fill = FieldFill.INSERT) + private String createBy; + + /** 更新人 */ + @TableField(fill = FieldFill.UPDATE) + private String updateBy; + + /** 逻辑删除标记(0:显示;1:隐藏) */ + @JsonIgnore + @JsonProperty + private String delFlag; + + + public static WxFormPush toNewObject(WxFormPush source){ + WxFormPush formPush = new WxFormPush(); + formPush.setId(source.getId()); + formPush.setTitle(source.getTitle()); + formPush.setFormContext(source.getFormContext()); + formPush.setFormContextValue(source.getFormContextValue()); + formPush.setRemark(source.getRemark()); + formPush.setCreateTime(source.getCreateTime()); + formPush.setUpdateTime(source.getUpdateTime()); + formPush.setTenantId(source.getTenantId()); + formPush.setCreateBy(source.getCreateBy()); + formPush.setUpdateBy(source.getUpdateBy()); + formPush.setDelFlag(source.getDelFlag()); + return formPush; + } + +} + diff --git a/src/main/java/com/qs/serve/modules/wx/entity/WxFormPushUser.java b/src/main/java/com/qs/serve/modules/wx/entity/WxFormPushUser.java new file mode 100644 index 00000000..8e18e156 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/wx/entity/WxFormPushUser.java @@ -0,0 +1,102 @@ +package com.qs.serve.modules.wx.entity; + +import java.time.LocalDate; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import org.hibernate.validator.constraints.Length; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.NotBlank; + +/** + * 表单推送用户 实体类 + * @author YenHex + * @since 2023-04-19 + */ +@Data +@TableName("wx_form_push_user") +public class WxFormPushUser implements Serializable { + + private static final long serialVersionUID = 1L; + + /** id */ + @TableId(type = IdType.AUTO) + private Long id; + + /** */ + private String formPushId; + + /** */ + @Length(max = 64,message = "长度不能超过64字") + private String userId; + + /** */ + @Length(max = 255,message = "长度不能超过255字") + private String userCode; + + /** */ + @Length(max = 255,message = "长度不能超过255字") + private String userName; + + /** 备注 */ + @Length(max = 600,message = "备注长度不能超过600字") + private String remark; + + /** 创建时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; + + /** 最后更新时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @TableField(fill = FieldFill.UPDATE) + private LocalDateTime updateTime; + + /** 所属租户 */ + @JsonIgnore + @JsonProperty + private String tenantId; + + /** 创建人 */ + @TableField(fill = FieldFill.INSERT) + private String createBy; + + /** 更新人 */ + @TableField(fill = FieldFill.UPDATE) + private String updateBy; + + /** 逻辑删除标记(0:显示;1:隐藏) */ + @JsonIgnore + @JsonProperty + private String delFlag; + + + public static WxFormPushUser toNewObject(WxFormPushUser source){ + WxFormPushUser formPushUser = new WxFormPushUser(); + formPushUser.setId(source.getId()); + formPushUser.setFormPushId(source.getFormPushId()); + formPushUser.setUserId(source.getUserId()); + formPushUser.setUserCode(source.getUserCode()); + formPushUser.setUserName(source.getUserName()); + formPushUser.setRemark(source.getRemark()); + formPushUser.setCreateTime(source.getCreateTime()); + formPushUser.setUpdateTime(source.getUpdateTime()); + formPushUser.setTenantId(source.getTenantId()); + formPushUser.setCreateBy(source.getCreateBy()); + formPushUser.setUpdateBy(source.getUpdateBy()); + formPushUser.setDelFlag(source.getDelFlag()); + return formPushUser; + } + +} + diff --git a/src/main/java/com/qs/serve/modules/wx/entity/WxUser.java b/src/main/java/com/qs/serve/modules/wx/entity/WxUser.java index a7fb625d..18dc775a 100644 --- a/src/main/java/com/qs/serve/modules/wx/entity/WxUser.java +++ b/src/main/java/com/qs/serve/modules/wx/entity/WxUser.java @@ -31,6 +31,7 @@ public class WxUser implements Serializable { private String appId; private String sysUserId; + private String sysUserCode; /** 应用类型【1->小程序;2->公众号】 */ private Integer appType; diff --git a/src/main/java/com/qs/serve/modules/wx/entity/bo/WxFormPushBo.java b/src/main/java/com/qs/serve/modules/wx/entity/bo/WxFormPushBo.java new file mode 100644 index 00000000..e9ebc49d --- /dev/null +++ b/src/main/java/com/qs/serve/modules/wx/entity/bo/WxFormPushBo.java @@ -0,0 +1,48 @@ +package com.qs.serve.modules.wx.entity.bo; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import org.hibernate.validator.constraints.Length; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.List; +/** + * 表单推送 实体类 + * @author YenHex + * @since 2023-04-19 + */ +@Data +public class WxFormPushBo implements Serializable { + + /** APPID */ + @NotNull(message = "appId不能为空") + private String appId; + + /** 标题 */ + @NotNull(message = "标题不能为空") + private String title; + + /** 表单内容 */ + @NotNull(message = "表单内容不能为空") + private String formContext; + + /** 业务类型,默认:通知 */ + private String businessType; + + /** 表单值 */ + private String formContextValue; + + /** 备注 */ + private String remark; + + /** 工号列表 */ + @NotNull(message = "工号列表不能为空") + private List userCodes; + +} + diff --git a/src/main/java/com/qs/serve/modules/wx/entity/vo/WxPushResultVo.java b/src/main/java/com/qs/serve/modules/wx/entity/vo/WxPushResultVo.java new file mode 100644 index 00000000..defec295 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/wx/entity/vo/WxPushResultVo.java @@ -0,0 +1,19 @@ +package com.qs.serve.modules.wx.entity.vo; + +import lombok.Data; + +import java.util.List; + +/** + * @author YenHex + * @since 2023/4/19 + */ +@Data +public class WxPushResultVo { + + /** + * 未绑定的用户列表 + */ + List notBindUserCodeList; + +} diff --git a/src/main/java/com/qs/serve/modules/wx/mapper/WxFormPushMapper.java b/src/main/java/com/qs/serve/modules/wx/mapper/WxFormPushMapper.java new file mode 100644 index 00000000..401a8581 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/wx/mapper/WxFormPushMapper.java @@ -0,0 +1,14 @@ +package com.qs.serve.modules.wx.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.qs.serve.modules.wx.entity.WxFormPush; + +/** + * 表单推送 Mapper + * @author YenHex + * @date 2023-04-19 + */ +public interface WxFormPushMapper extends BaseMapper { + +} + diff --git a/src/main/java/com/qs/serve/modules/wx/mapper/WxFormPushUserMapper.java b/src/main/java/com/qs/serve/modules/wx/mapper/WxFormPushUserMapper.java new file mode 100644 index 00000000..8dc81a65 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/wx/mapper/WxFormPushUserMapper.java @@ -0,0 +1,14 @@ +package com.qs.serve.modules.wx.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.qs.serve.modules.wx.entity.WxFormPushUser; + +/** + * 表单推送用户 Mapper + * @author YenHex + * @date 2023-04-19 + */ +public interface WxFormPushUserMapper extends BaseMapper { + +} + diff --git a/src/main/java/com/qs/serve/modules/wx/service/WxFormPushService.java b/src/main/java/com/qs/serve/modules/wx/service/WxFormPushService.java new file mode 100644 index 00000000..58445c0c --- /dev/null +++ b/src/main/java/com/qs/serve/modules/wx/service/WxFormPushService.java @@ -0,0 +1,14 @@ +package com.qs.serve.modules.wx.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.qs.serve.modules.wx.entity.WxFormPush; + +/** + * 表单推送 服务接口 + * @author YenHex + * @date 2023-04-19 + */ +public interface WxFormPushService extends IService { + +} + diff --git a/src/main/java/com/qs/serve/modules/wx/service/WxFormPushUserService.java b/src/main/java/com/qs/serve/modules/wx/service/WxFormPushUserService.java new file mode 100644 index 00000000..246aafd5 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/wx/service/WxFormPushUserService.java @@ -0,0 +1,14 @@ +package com.qs.serve.modules.wx.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.qs.serve.modules.wx.entity.WxFormPushUser; + +/** + * 表单推送用户 服务接口 + * @author YenHex + * @date 2023-04-19 + */ +public interface WxFormPushUserService extends IService { + +} + diff --git a/src/main/java/com/qs/serve/modules/wx/service/impl/WxFormPushServiceImpl.java b/src/main/java/com/qs/serve/modules/wx/service/impl/WxFormPushServiceImpl.java new file mode 100644 index 00000000..2d000fdf --- /dev/null +++ b/src/main/java/com/qs/serve/modules/wx/service/impl/WxFormPushServiceImpl.java @@ -0,0 +1,22 @@ +package com.qs.serve.modules.wx.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import com.qs.serve.modules.wx.entity.WxFormPush; +import com.qs.serve.modules.wx.service.WxFormPushService; +import com.qs.serve.modules.wx.mapper.WxFormPushMapper; + +/** + * 表单推送 服务实现类 + * @author YenHex + * @since 2023-04-19 + */ +@Slf4j +@Service +@AllArgsConstructor +public class WxFormPushServiceImpl extends ServiceImpl implements WxFormPushService { + +} + diff --git a/src/main/java/com/qs/serve/modules/wx/service/impl/WxFormPushUserServiceImpl.java b/src/main/java/com/qs/serve/modules/wx/service/impl/WxFormPushUserServiceImpl.java new file mode 100644 index 00000000..6080e4fc --- /dev/null +++ b/src/main/java/com/qs/serve/modules/wx/service/impl/WxFormPushUserServiceImpl.java @@ -0,0 +1,22 @@ +package com.qs.serve.modules.wx.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import com.qs.serve.modules.wx.entity.WxFormPushUser; +import com.qs.serve.modules.wx.service.WxFormPushUserService; +import com.qs.serve.modules.wx.mapper.WxFormPushUserMapper; + +/** + * 表单推送用户 服务实现类 + * @author YenHex + * @since 2023-04-19 + */ +@Slf4j +@Service +@AllArgsConstructor +public class WxFormPushUserServiceImpl extends ServiceImpl implements WxFormPushUserService { + +} + diff --git a/src/main/resources/mapper/bms/BmsSupplierAddressMapper.xml b/src/main/resources/mapper/bms/BmsSupplierAddressMapper.xml index 34253ed7..a84d8a55 100644 --- a/src/main/resources/mapper/bms/BmsSupplierAddressMapper.xml +++ b/src/main/resources/mapper/bms/BmsSupplierAddressMapper.xml @@ -57,6 +57,7 @@ FROM `bms_supplier_address` `bms_supplier_address` left join `bms_supplier` `bms_supplier` on `bms_supplier`.id = `bms_supplier_address`.`supplier_id` + and `bms_supplier_address`.`del_flag` = 0 and `bms_supplier_address`.`id` = #{query.id} and `bms_supplier_address`.`supplier_id` = #{query.supplierId} and `bms_supplier_address`.`default_flag` = #{query.defaultFlag} @@ -73,7 +74,6 @@ and `bms_supplier_address`.`create_time` = #{query.createTime} and `bms_supplier_address`.`update_time` = #{query.updateTime} and `bms_supplier_address`.`tenant_id` = #{query.tenantId} - and `bms_supplier_address`.`del_flag` = #{query.delFlag} and `bms_supplier_address`.`create_by` = #{query.createBy} and `bms_supplier_address`.`update_by` = #{query.updateBy} and `bms_supplier`.`name` like concat('%',#{query.supplierName},'%') diff --git a/src/main/resources/mapper/qms/QmsGroupScopeMapper.xml b/src/main/resources/mapper/qms/QmsGroupScopeMapper.xml index ce11f801..9e550917 100644 --- a/src/main/resources/mapper/qms/QmsGroupScopeMapper.xml +++ b/src/main/resources/mapper/qms/QmsGroupScopeMapper.xml @@ -70,7 +70,9 @@ and qms_group_scope.`create_time` <= #{query.queryEndDate} - + + and qms_group.`name` like concat('%',#{query.title},'%') + order by `qms_group_scope`.`create_time` desc