@ -11,10 +11,13 @@ import com.qs.serve.common.util.PageUtil;
import com.qs.serve.common.util.CopierUtil ;
import com.qs.serve.common.util.CopierUtil ;
import com.qs.serve.common.util.StringUtils ;
import com.qs.serve.common.util.StringUtils ;
import com.qs.serve.modules.sys.entity.SysAttach ;
import com.qs.serve.modules.sys.entity.SysAttach ;
import com.qs.serve.modules.sys.entity.SysUser ;
import com.qs.serve.modules.sys.service.SysAttachService ;
import com.qs.serve.modules.sys.service.SysAttachService ;
import com.qs.serve.modules.sys.service.SysUserService ;
import com.qs.serve.modules.wx.entity.* ;
import com.qs.serve.modules.wx.entity.* ;
import com.qs.serve.modules.wx.entity.dto.sms.WxSmsNewForm ;
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.entity.vo.WxPushResultVo ;
import com.qs.serve.modules.wx.mapper.WxFormPushMapper ;
import com.qs.serve.modules.wx.service.* ;
import com.qs.serve.modules.wx.service.* ;
import lombok.AllArgsConstructor ;
import lombok.AllArgsConstructor ;
import lombok.extern.slf4j.Slf4j ;
import lombok.extern.slf4j.Slf4j ;
@ -40,6 +43,7 @@ import java.util.stream.Collectors;
@RequestMapping ( "wx/formPush" )
@RequestMapping ( "wx/formPush" )
public class WxFormPushController {
public class WxFormPushController {
private WxFormPushMapper wxFormPushMapper ;
private WxFormPushService wxFormPushService ;
private WxFormPushService wxFormPushService ;
private WxFormPushUserService wxFormPushUserService ;
private WxFormPushUserService wxFormPushUserService ;
private WxFormPushTypeService wxFormPushTypeService ;
private WxFormPushTypeService wxFormPushTypeService ;
@ -47,22 +51,9 @@ public class WxFormPushController {
private WxPushService wxPushService ;
private WxPushService wxPushService ;
private WxAppService wxAppService ;
private WxAppService wxAppService ;
private SysAttachService attachService ;
private SysAttachService attachService ;
private SysUserService sysUserService ;
/ * *
* 列表
* @param param
* @return
* /
//@GetMapping("/list")
// @PreAuthorize("hasRole('wx:formPush:query')")
public R < List < WxFormPush > > getList ( WxFormPush param ) {
LambdaQueryWrapper < WxFormPush > lqw = new LambdaQueryWrapper < > ( param ) ;
PageUtil . startPage ( ) ;
List < WxFormPush > list = wxFormPushService . list ( lqw ) ;
return R . ok ( list ) ;
}
/ * *
/ * *
* 翻页
* 翻页
* @param param
* @param param
@ -89,6 +80,13 @@ public class WxFormPushController {
LambdaQueryWrapper < WxFormPushUser > userlqw = new LambdaQueryWrapper < > ( ) ;
LambdaQueryWrapper < WxFormPushUser > userlqw = new LambdaQueryWrapper < > ( ) ;
userlqw . eq ( WxFormPushUser : : getFormPushId , wxFormPush . getId ( ) ) ;
userlqw . eq ( WxFormPushUser : : getFormPushId , wxFormPush . getId ( ) ) ;
List < WxFormPushUser > list = wxFormPushUserService . list ( userlqw ) ;
List < WxFormPushUser > list = wxFormPushUserService . list ( userlqw ) ;
wxFormPush . setShowCompensateButton ( 0 ) ;
for ( WxFormPushUser pushUser : list ) {
if ( pushUser . getPushStatus ( ) . equals ( 0 ) ) {
wxFormPush . setShowCompensateButton ( 1 ) ;
break ;
}
}
wxFormPush . setWxFormPushUserList ( list ) ;
wxFormPush . setWxFormPushUserList ( list ) ;
if ( CollectionUtil . isNotEmpty ( wxFormPush . getAttachIds ( ) ) ) {
if ( CollectionUtil . isNotEmpty ( wxFormPush . getAttachIds ( ) ) ) {
List < String > attachIds = Arrays . asList ( wxFormPush . getAttachIds ( ) ) ;
List < String > attachIds = Arrays . asList ( wxFormPush . getAttachIds ( ) ) ;
@ -100,20 +98,6 @@ public class WxFormPushController {
/ * *
* 更新
* @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
* @param param
@ -121,7 +105,6 @@ public class WxFormPushController {
* /
* /
@PostMapping ( "/publishById" )
@PostMapping ( "/publishById" )
@SysLog ( module = SystemModule . Verification , title = "表单推送发布" , biz = BizType . UPDATE )
@SysLog ( module = SystemModule . Verification , title = "表单推送发布" , biz = BizType . UPDATE )
// @PreAuthorize("hasRole('wx:formPush:update')")
public R < ? > publishById ( @RequestBody WxFormPushBo param ) {
public R < ? > publishById ( @RequestBody WxFormPushBo param ) {
String id = param . getId ( ) ;
String id = param . getId ( ) ;
WxFormPush entity = wxFormPushService . getById ( id ) ;
WxFormPush entity = wxFormPushService . getById ( id ) ;
@ -130,11 +113,10 @@ public class WxFormPushController {
}
}
entity . setStatus ( "1" ) ;
entity . setStatus ( "1" ) ;
boolean result = wxFormPushService . updateById ( entity ) ;
boolean result = wxFormPushService . updateById ( entity ) ;
LambdaQueryWrapper < WxFormPushUser > userlqw = new LambdaQueryWrapper < > ( ) ;
LambdaQueryWrapper < WxFormPushUser > userlqw = new LambdaQueryWrapper < > ( ) ;
userlqw . eq ( WxFormPushUser : : getFormPushId , entity . getId ( ) ) ;
userlqw . eq ( WxFormPushUser : : getFormPushId , entity . getId ( ) ) ;
userlqw . eq ( WxFormPushUser : : getPushStatus , 0 ) ;
List < WxFormPushUser > list = wxFormPushUserService . list ( userlqw ) ;
List < WxFormPushUser > list = wxFormPushUserService . list ( userlqw ) ;
List < String > userCodes = list . stream ( ) . map ( WxFormPushUser : : getUserCode ) . collect ( Collectors . toList ( ) ) ;
List < String > userCodes = list . stream ( ) . map ( WxFormPushUser : : getUserCode ) . collect ( Collectors . toList ( ) ) ;
if ( userCodes . size ( ) < 1 ) {
if ( userCodes . size ( ) < 1 ) {
return R . ok ( ) ;
return R . ok ( ) ;
@ -162,11 +144,75 @@ public class WxFormPushController {
wxSmsNewForm . setBitTime ( LocalDateTime . now ( ) . toString ( ) . replace ( "T" , " " ) ) ;
wxSmsNewForm . setBitTime ( LocalDateTime . now ( ) . toString ( ) . replace ( "T" , " " ) ) ;
wxSmsNewForm . setRemark ( entity . getRemark ( ) ) ;
wxSmsNewForm . setRemark ( entity . getRemark ( ) ) ;
wxPushService . sendWxMsg ( wxUser , "表单通知" , wxSmsNewForm , true , entity . getId ( ) ) ;
wxPushService . sendWxMsg ( wxUser , "表单通知" , wxSmsNewForm , true , entity . getId ( ) ) ;
}
}
return R . isTrue ( result ) ;
return R . isTrue ( result ) ;
}
}
/ * *
* 补偿通知
* @param param
* @return
* /
@PostMapping ( "/compensate" )
@SysLog ( module = SystemModule . Verification , title = "表单推送发布" , biz = BizType . UPDATE )
public R < ? > compensate ( @RequestBody WxFormPushBo param ) {
String id = param . getId ( ) ;
List < String > userIds = param . getUserIds ( ) ;
WxFormPush entity = wxFormPushService . getById ( id ) ;
if ( entity . getId ( ) . equals ( "0" ) ) {
return R . error ( "未发布" ) ;
}
LambdaQueryWrapper < WxFormPushUser > userlqw = new LambdaQueryWrapper < > ( ) ;
if ( StringUtils . hasText ( id ) ) {
userlqw . eq ( WxFormPushUser : : getFormPushId , entity . getId ( ) ) ;
} else {
userlqw . in ( WxFormPushUser : : getUserId , userIds ) ;
}
userlqw . eq ( WxFormPushUser : : getPushStatus , 0 ) ;
List < WxFormPushUser > list = wxFormPushUserService . list ( userlqw ) ;
userIds = list . stream ( ) . map ( WxFormPushUser : : getUserId ) . collect ( Collectors . toList ( ) ) ;
if ( userIds . size ( ) < 1 ) {
return R . ok ( ) ;
}
WxApp app = wxAppService . getOne ( new LambdaQueryWrapper < > ( ) , false ) ;
LambdaQueryWrapper < WxUser > lqw = new LambdaQueryWrapper < > ( ) ;
lqw . eq ( WxUser : : getAppId , app . getId ( ) ) ;
lqw . in ( WxUser : : getSysUserId , userIds ) ;
List < WxUser > wxUserList = wxUserService . list ( lqw ) ;
Set < String > wxUserIdSet = new HashSet < > ( ) ;
int successCount = 0 ;
for ( WxFormPushUser pushUser : list ) {
boolean pushOk = false ;
for ( WxUser wxUser : wxUserList ) {
if ( wxUser . getOpenId ( ) . equals ( "0" ) ) {
continue ;
}
boolean exist = wxUserIdSet . stream ( ) . anyMatch ( a - > a . equals ( wxUser . getOpenId ( ) ) ) ;
if ( exist ) {
continue ;
} else {
wxUserIdSet . add ( wxUser . getOpenId ( ) ) ;
}
pushOk = true ;
WxSmsNewForm wxSmsNewForm = new WxSmsNewForm ( ) ;
wxSmsNewForm . setTitle ( entity . getTitle ( ) ) ;
wxSmsNewForm . setUserName ( wxUser . getEmpName ( ) ) ;
wxSmsNewForm . setBizType ( entity . getBusinessType ( ) = = null ? "通知" : entity . getBusinessType ( ) ) ;
wxSmsNewForm . setBitTime ( LocalDateTime . now ( ) . toString ( ) . replace ( "T" , " " ) ) ;
wxSmsNewForm . setRemark ( entity . getRemark ( ) ) ;
wxPushService . sendWxMsg ( wxUser , "表单通知" , wxSmsNewForm , true , entity . getId ( ) ) ;
}
if ( pushOk ) {
successCount + + ;
WxFormPushUser upd_param = new WxFormPushUser ( ) ;
upd_param . setId ( pushUser . getId ( ) ) ;
upd_param . setPushStatus ( 1 ) ;
wxFormPushUserService . updateById ( upd_param ) ;
}
}
return R . ok ( "成功通知数:" + successCount ) ;
}
/ * *
/ * *
* 撤消
* 撤消
* @param param
* @param param
@ -174,46 +220,46 @@ public class WxFormPushController {
* /
* /
@PostMapping ( "/unPublishById" )
@PostMapping ( "/unPublishById" )
@SysLog ( module = SystemModule . Verification , title = "撤消表单推送" , biz = BizType . UPDATE )
@SysLog ( module = SystemModule . Verification , title = "撤消表单推送" , biz = BizType . UPDATE )
// @PreAuthorize("hasRole('wx:formPush:update')")
public R < ? > unPublishById ( @RequestBody WxFormPushBo param ) {
public R < ? > unPublishById ( @RequestBody WxFormPushBo param ) {
String id = param . getId ( ) ;
String id = param . getId ( ) ;
WxFormPush entity = wxFormPushService . getById ( id ) ;
WxFormPush entity = wxFormPushService . getById ( id ) ;
entity . setStatus ( "0" ) ;
entity . setStatus ( "0" ) ;
boolean result = wxFormPushService . updateById ( entity ) ;
boolean result = wxFormPushService . updateById ( entity ) ;
LambdaQueryWrapper < WxFormPushUser > dellqw = new LambdaQueryWrapper < > ( ) ;
dellqw . eq ( WxFormPushUser : : getFormPushId , entity . getId ( ) ) ;
wxFormPushUserService . remove ( dellqw ) ;
return R . isTrue ( result ) ;
return R . isTrue ( result ) ;
}
}
/ * *
/ * *
* 新增
* 新增或保存
* @param param
* @param param
* @return
* @return
* /
* /
@PostMapping ( "/save" )
@PostMapping ( "/save" )
@SysLog ( module = SystemModule . Verification , title = "表单推送" , biz = BizType . INSERT )
@SysLog ( module = SystemModule . Verification , title = "表单推送" , biz = BizType . INSERT )
// @PreAuthorize("hasRole('wx:formPush:insert')")
public R < ? > saveOrUpdate ( @RequestBody @Valid WxFormPushBo param ) {
public R < ? > save ( @RequestBody @Valid WxFormPushBo param ) {
WxFormPush entity = CopierUtil . copy ( param , new WxFormPush ( ) ) ;
WxFormPush entity = CopierUtil . copy ( param , new WxFormPush ( ) ) ;
entity . setPreNotifyStatus ( param . getPreNotifyTime ( ) = = null ? 0 : 1 ) ;
WxFormPushType pushType = null ;
WxFormPushType pushType = null ;
if ( param . getTypeId ( ) ! = null ) {
if ( param . getTypeId ( ) ! = null ) {
pushType = wxFormPushTypeService . getById ( param . getTypeId ( ) ) ;
pushType = wxFormPushTypeService . getById ( param . getTypeId ( ) ) ;
entity . setTypeCode ( pushType . getCode ( ) ) ;
entity . setTypeCode ( pushType . getCode ( ) ) ;
entity . setTypeName ( pushType . getTitle ( ) ) ;
entity . setTypeName ( pushType . getTitle ( ) ) ;
} else {
} else {
return R . error ( "分类不存在" ) ;
entity . setTypeId ( "0" ) ;
entity . setTypeCode ( "默认" ) ;
entity . setTypeName ( "默认分类" ) ;
}
}
entity . setPreNotifyStatus ( entity . getPreNotifyTime ( ) = = null ? 0 : 1 ) ;
boolean result ;
if ( null = = entity . getId ( ) ) {
if ( null = = entity . getId ( ) ) {
result = wxFormPushService . save ( entity ) ;
wxFormPushService . save ( entity ) ;
} else {
} else {
WxFormPush ori_entity = wxFormPushService . getById ( entity . getId ( ) ) ;
WxFormPush ori_entity = wxFormPushService . getById ( entity . getId ( ) ) ;
if ( ori_entity . getStatus ( ) . equals ( "1" ) ) {
if ( ori_entity . getStatus ( ) . equals ( "1" ) ) {
return R . error ( "已发布的消息不能更新" ) ;
return R . error ( "已发布的消息不能更新" ) ;
}
}
result = wxFormPushService . updateById ( entity ) ;
if ( entity . getPreNotifyTime ( ) = = null ) {
wxFormPushMapper . updateSetNotifyTimeNull ( entity . getId ( ) ) ;
}
wxFormPushService . updateById ( entity ) ;
}
}
//保存推送人员
//保存推送人员
@ -225,37 +271,44 @@ public class WxFormPushController {
List < WxUser > wxUserList = wxUserService . list ( lqw ) ;
List < WxUser > wxUserList = wxUserService . list ( lqw ) ;
List < WxFormPushUser > pushUserList = new ArrayList < > ( ) ;
List < WxFormPushUser > pushUserList = new ArrayList < > ( ) ;
Set < String > wxUserIdSet = new HashSet < > ( ) ;
Set < String > wxUserIdSet = new HashSet < > ( ) ;
for ( WxUser wxUser : wxUserList ) {
List < SysUser > sysUserList = sysUserService . listByIds ( userIds ) ;
if ( wxUser . getOpenId ( ) . equals ( "0" ) ) {
for ( SysUser sysUser : sysUserList ) {
continue ;
int pushOk = 0 ;
}
for ( WxUser wxUser : wxUserList ) {
boolean exist = wxUserIdSet . stream ( ) . anyMatch ( a - > a . equals ( wxUser . getOpenId ( ) ) ) ;
if ( wxUser . getSysUserId ( ) . equals ( sysUser . getId ( ) ) ) {
if ( exist ) {
if ( wxUser . getOpenId ( ) . equals ( "0" ) ) {
continue ;
continue ;
} else {
}
wxUserIdSet . add ( wxUser . getOpenId ( ) ) ;
boolean exist = wxUserIdSet . stream ( ) . anyMatch ( a - > a . equals ( wxUser . getOpenId ( ) ) ) ;
}
if ( exist ) {
WxSmsNewForm wxSmsNewForm = new WxSmsNewForm ( ) ;
continue ;
wxSmsNewForm . setTitle ( param . getTitle ( ) ) ;
} else {
wxSmsNewForm . setUserName ( wxUser . getEmpName ( ) ) ;
wxUserIdSet . add ( wxUser . getOpenId ( ) ) ;
wxSmsNewForm . setBizType ( param . getBusinessType ( ) = = null ? "通知" : param . getBusinessType ( ) ) ;
}
wxSmsNewForm . setBitTime ( LocalDateTime . now ( ) . toString ( ) . replace ( "T" , " " ) ) ;
pushOk = 1 ;
wxSmsNewForm . setRemark ( param . getRemark ( ) ) ;
WxSmsNewForm wxSmsNewForm = new WxSmsNewForm ( ) ;
if ( param . getStatus ( ) . equals ( "1" ) ) {
wxSmsNewForm . setTitle ( param . getTitle ( ) ) ;
wxPushService . sendWxMsg ( wxUser , "表单通知" , wxSmsNewForm , true , entity . getId ( ) ) ;
wxSmsNewForm . setUserName ( wxUser . getEmpName ( ) ) ;
wxSmsNewForm . setBizType ( param . getBusinessType ( ) = = null ? "通知" : param . getBusinessType ( ) ) ;
wxSmsNewForm . setBitTime ( LocalDateTime . now ( ) . toString ( ) . replace ( "T" , " " ) ) ;
wxSmsNewForm . setRemark ( param . getRemark ( ) ) ;
if ( param . getStatus ( ) . equals ( "1" ) ) {
wxPushService . sendWxMsg ( wxUser , "表单通知" , wxSmsNewForm , true , entity . getId ( ) ) ;
}
}
}
}
WxFormPushUser pushUser = new WxFormPushUser ( ) ;
WxFormPushUser pushUser = new WxFormPushUser ( ) ;
pushUser . setFormPushId ( entity . getId ( ) ) ;
pushUser . setFormPushId ( entity . getId ( ) ) ;
pushUser . setFormTitle ( entity . getTitle ( ) ) ;
pushUser . setFormTitle ( entity . getTitle ( ) ) ;
pushUser . setUserId ( wxUser . getSysUserId ( ) ) ;
pushUser . setPushStatus ( pushOk ) ;
pushUser . setUserCode ( wxUser . getSysUserCode ( ) ) ;
pushUser . setUserId ( sysUser . getId ( ) ) ;
pushUser . setUserName ( wxUser . getEmpName ( ) ) ;
pushUser . setUserCode ( sysUser . getCode ( ) ) ;
pushUser . setUserName ( sysUser . getName ( ) ) ;
pushUser . setTypeId ( pushType . getId ( ) ) ;
pushUser . setTypeId ( pushType . getId ( ) ) ;
pushUser . setTypeCode ( pushType . getCode ( ) ) ;
pushUser . setTypeCode ( pushType . getCode ( ) ) ;
pushUser . setTypeName ( pushType . getTitle ( ) ) ;
pushUser . setTypeName ( pushType . getTitle ( ) ) ;
pushUserList . add ( pushUser ) ;
pushUserList . add ( pushUser ) ;
}
}
pushUserList = pushUserList . stream ( ) . distinct ( ) . collect ( Collectors . toList ( ) ) ;
if ( null = = entity . getId ( ) ) {
if ( null = = entity . getId ( ) ) {
wxFormPushUserService . saveBatch ( pushUserList ) ;
wxFormPushUserService . saveBatch ( pushUserList ) ;
} else {
} else {