Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
gxpt_ht
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
pseer
gxpt_ht
Commits
ce4c4e40
Commit
ce4c4e40
authored
Jan 24, 2024
by
YG8999
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/dev' into dev
parents
6376ac76
88617da6
Show whitespace changes
Inline
Side-by-side
Showing
31 changed files
with
552 additions
and
271 deletions
+552
-271
SCleanConsumerController.java
...share/web/controller/system/SCleanConsumerController.java
+2
-2
SStoreController.java
...in/java/share/web/controller/system/SStoreController.java
+5
-4
PositionEnum.java
...common/src/main/java/share/common/enums/PositionEnum.java
+35
-0
RoleTypeEnum.java
...common/src/main/java/share/common/enums/RoleTypeEnum.java
+2
-2
WxMsgPushController.java
...java/share/web/controller/common/WxMsgPushController.java
+75
-33
DeviceController.java
...in/java/share/web/controller/system/DeviceController.java
+13
-0
SCleanRecordsController.java
.../share/web/controller/system/SCleanRecordsController.java
+11
-14
SConsumerController.java
...java/share/web/controller/system/SConsumerController.java
+2
-1
SStoreController.java
...in/java/share/web/controller/system/SStoreController.java
+1
-5
CouponRetryTask.java
...artz/src/main/java/share/quartz/task/CouponRetryTask.java
+0
-57
RedisTask.java
share-quartz/src/main/java/share/quartz/task/RedisTask.java
+28
-35
SConsumer.java
...e-system/src/main/java/share/system/domain/SConsumer.java
+1
-1
SRoom.java
share-system/src/main/java/share/system/domain/SRoom.java
+6
-0
SStoreConsumer.java
...tem/src/main/java/share/system/domain/SStoreConsumer.java
+3
-22
SCleanRecordsVo.java
...src/main/java/share/system/domain/vo/SCleanRecordsVo.java
+33
-0
SConsumerVo.java
...tem/src/main/java/share/system/domain/vo/SConsumerVo.java
+6
-0
SStoreConsumerVo.java
...rc/main/java/share/system/domain/vo/SStoreConsumerVo.java
+21
-0
SCleanRecordsMapper.java
...rc/main/java/share/system/mapper/SCleanRecordsMapper.java
+1
-0
SStoreConsumerMapper.java
...c/main/java/share/system/mapper/SStoreConsumerMapper.java
+7
-3
ISCleanRecordsService.java
...main/java/share/system/service/ISCleanRecordsService.java
+3
-1
ISStoreService.java
...em/src/main/java/share/system/service/ISStoreService.java
+4
-2
SConsumerService.java
.../src/main/java/share/system/service/SConsumerService.java
+1
-1
QPServiceImpl.java
...rc/main/java/share/system/service/impl/QPServiceImpl.java
+34
-44
SCleanRecordsServiceImpl.java
...a/share/system/service/impl/SCleanRecordsServiceImpl.java
+136
-6
SConsumerServiceImpl.java
.../java/share/system/service/impl/SConsumerServiceImpl.java
+27
-3
SOrderServiceImpl.java
...ain/java/share/system/service/impl/SOrderServiceImpl.java
+9
-9
SRoomServiceImpl.java
...main/java/share/system/service/impl/SRoomServiceImpl.java
+8
-0
SStoreServiceImpl.java
...ain/java/share/system/service/impl/SStoreServiceImpl.java
+27
-17
SConsumerMapper.xml
...stem/src/main/resources/mapper/system/SConsumerMapper.xml
+5
-3
SRoomMapper.xml
...e-system/src/main/resources/mapper/system/SRoomMapper.xml
+26
-1
SStoreConsumerMapper.xml
...src/main/resources/mapper/system/SStoreConsumerMapper.xml
+20
-5
No files found.
share-admin/src/main/java/share/web/controller/system/SCleanConsumerController.java
View file @
ce4c4e40
...
...
@@ -31,7 +31,7 @@ public class SCleanConsumerController extends BaseController
private
SConsumerService
sConsumerService
;
/**
* 查询
保洁
员用户列表
* 查询
店
员用户列表
*/
@PreAuthorize
(
"@ss.hasPermi('system:cleanConsumer:list')"
)
@GetMapping
(
"/list"
)
...
...
@@ -68,7 +68,7 @@ public class SCleanConsumerController extends BaseController
}
/**
* 新增
保洁
员用户
* 新增
店
员用户
*/
@PreAuthorize
(
"@ss.hasPermi('system:cleanConsumer:add')"
)
@Log
(
title
=
"保洁员"
,
businessType
=
BusinessType
.
INSERT
)
...
...
share-admin/src/main/java/share/web/controller/system/SStoreController.java
View file @
ce4c4e40
...
...
@@ -26,6 +26,7 @@ import share.system.domain.SStore;
import
share.system.domain.SStoreConsumer
;
import
share.system.domain.SysUserRole
;
import
share.system.domain.vo.SConsumerVo
;
import
share.system.domain.vo.SStoreConsumerVo
;
import
share.system.service.ISStoreService
;
import
share.common.utils.poi.ExcelUtil
;
import
share.common.core.page.TableDataInfo
;
...
...
@@ -175,9 +176,9 @@ public class SStoreController extends BaseController
@PreAuthorize
(
"@ss.hasPermi('system:store:edit')"
)
@Log
(
title
=
"门店"
,
businessType
=
BusinessType
.
GRANT
)
@PutMapping
(
"/consumer/cancelAll"
)
public
AjaxResult
cancelAuthUserAll
(
Long
storeId
,
Long
[]
consumerIds
)
public
AjaxResult
cancelAuthUserAll
(
SStoreConsumerVo
storeConsumer
)
{
return
toAjax
(
sStoreService
.
deleteStoreConsumers
(
store
Id
,
consumerIds
));
return
toAjax
(
sStoreService
.
deleteStoreConsumers
(
store
Consumer
));
}
/**
...
...
@@ -186,9 +187,9 @@ public class SStoreController extends BaseController
@PreAuthorize
(
"@ss.hasPermi('system:store:edit')"
)
@Log
(
title
=
"门店"
,
businessType
=
BusinessType
.
GRANT
)
@PutMapping
(
"/consumer/selectAll"
)
public
AjaxResult
selectAuthUserAll
(
Long
storeId
,
Long
[]
consumerIds
)
public
AjaxResult
selectAuthUserAll
(
SStoreConsumerVo
storeConsumer
)
{
return
toAjax
(
sStoreService
.
insertStoreConsumers
(
store
Id
,
consumerIds
));
return
toAjax
(
sStoreService
.
insertStoreConsumers
(
store
Consumer
));
}
...
...
share-common/src/main/java/share/common/enums/PositionEnum.java
0 → 100644
View file @
ce4c4e40
package
share
.
common
.
enums
;
//职位枚举
public
enum
PositionEnum
{
//1保洁人员 2管理员
CLEANER
(
1
,
"保洁人员"
),
ADMIN
(
2
,
"管理员"
),
;
private
Integer
code
;
private
String
name
;
PositionEnum
()
{
}
PositionEnum
(
Integer
code
,
String
name
)
{
this
.
code
=
code
;
this
.
name
=
name
;
}
public
Integer
getCode
()
{
return
code
;
}
public
void
setCode
(
Integer
code
)
{
this
.
code
=
code
;
}
public
String
getName
()
{
return
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
}
share-common/src/main/java/share/common/enums/RoleTypeEnum.java
View file @
ce4c4e40
...
...
@@ -2,8 +2,8 @@ package share.common.enums;
public
enum
RoleTypeEnum
{
MEMBRO
(
0
,
"会员"
),
CLEANER
(
1
,
"
保洁人
员"
),
ADMIN
(
2
,
"后台管理人员"
);
;
CLEANER
(
1
,
"
店
员"
),
;
private
Integer
code
;
private
String
name
;
...
...
share-front/src/main/java/share/web/controller/common/WxMsgPushController.java
View file @
ce4c4e40
...
...
@@ -11,6 +11,7 @@ import org.springframework.web.bind.annotation.GetMapping;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
import
share.common.enums.MessageReminderEnum
;
import
share.system.config.WxMaProperties
;
import
share.system.domain.vo.SendTemplateMessageItemVo
;
import
share.system.domain.vo.TemplateMessageVo
;
...
...
@@ -19,6 +20,7 @@ import share.system.util.WXMsgPushUtils;
import
java.time.LocalDateTime
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.Map
;
...
...
@@ -32,6 +34,8 @@ import java.util.Map;
public
class
WxMsgPushController
{
private
final
WxMaService
wxMaService
;
private
final
WxMaProperties
properties
;
@Autowired
private
WechatNewService
wechatNewService
;
/**
* // * 跳转的小程序页面
* //
...
...
@@ -66,43 +70,81 @@ public class WxMsgPushController {
@GetMapping
(
"/getOpenId"
)
public
void
getOpenId
(
String
openId
)
throws
Exception
{
// HashMap<String, SendTemplateMessageItemVo> data = new HashMap<>();
// TemplateMessageVo templateMessageVo = new TemplateMessageVo();
// templateMessageVo.setTouser(openId);
// templateMessageVo.setTemplate_id("oTc000e4NHkoc7v9OLBZiwM6Q6SFzguemrx6d0iuVS8");
// templateMessageVo.setUrl("http://www.baidu.com");
// data.put("thing4", new SendTemplateMessageItemVo("预约门店"));
// data.put("thing7", new SendTemplateMessageItemVo("服务名称"));
// data.put("date3", new SendTemplateMessageItemVo(LocalDateTimeUtil.format(LocalDateTime.now(), "yyyy-MM-dd HH:mm:ss")));
// data.put("thing5", new SendTemplateMessageItemVo("地址"));
// templateMessageVo.setData(data);
// log.info("开始发送消息!!!!");
// Boolean b = wechatNewService.sendMiniSubscribeMessage(templateMessageVo);
// if(b){
// log.info("消息发送成功!!!!");
// }
HashMap
<
String
,
SendTemplateMessageItemVo
>
data
=
new
HashMap
<>();
TemplateMessageVo
templateMessageVo
=
new
TemplateMessageVo
();
templateMessageVo
.
setTouser
(
openId
);
templateMessageVo
.
setMiniprogram_state
(
"trial"
);
templateMessageVo
.
setPage
(
"/pages/orderResult/orderResult?orderNo=CJ431705545528576539"
);
templateMessageVo
.
setTemplate_id
(
MessageReminderEnum
.
END
.
getValue
());
data
.
put
(
"thing5"
,
new
SendTemplateMessageItemVo
(
"武汉"
));
//服务名称
data
.
put
(
"thing6"
,
new
SendTemplateMessageItemVo
(
"服务名称"
));
//订单时间
data
.
put
(
"time7"
,
new
SendTemplateMessageItemVo
(
"2020-12-12 12:12:12 ~ 2020-12-13 12:12:12"
));
//温馨提示
data
.
put
(
"thing4"
,
new
SendTemplateMessageItemVo
(
MessageReminderEnum
.
END
.
getTips
()));
templateMessageVo
.
setData
(
data
);
log
.
info
(
"开始发送消息!!!!"
);
Boolean
a
=
wechatNewService
.
sendMiniSubscribeMessage
(
templateMessageVo
);
if
(
a
)
{
log
.
info
(
"消息发送成功!!!!"
);
}
Map
<
String
,
String
>
map
=
new
HashMap
<>();
map
.
put
(
"thing4"
,
"预约门店"
);
map
.
put
(
"thing7"
,
"服务名称"
);
map
.
put
(
"date3"
,
LocalDateTimeUtil
.
format
(
LocalDateTime
.
now
(),
"yyyy-MM-dd HH:mm:ss"
));
map
.
put
(
"thing5"
,
"地址"
);
WxMaSubscribeMessage
wxMaSubscribeMessage
=
WxMaSubscribeMessage
.
builder
()
.
toUser
(
openId
)
.
templateId
(
"oTc000e4NHkoc7v9OLBZiwM6Q6SFzguemrx6d0iuVS8"
)
.
page
(
PAGES_ZP
)
.
build
();
// 设置将推送的消息
map
.
forEach
((
k
,
v
)
->
{
wxMaSubscribeMessage
.
addData
(
new
WxMaSubscribeMessage
.
MsgData
(
k
,
v
));
});
try
{
templateMessageVo
.
setTemplate_id
(
MessageReminderEnum
.
RESERVER
.
getValue
());
//订单门店
data
.
put
(
"thing3"
,
new
SendTemplateMessageItemVo
(
"武汉"
));
//服务名称
data
.
put
(
"thing1"
,
new
SendTemplateMessageItemVo
(
"服务名称"
));
//订单时间
data
.
put
(
"date2"
,
new
SendTemplateMessageItemVo
(
LocalDateTimeUtil
.
format
(
LocalDateTime
.
now
(),
"yyyy-MM-dd HH:mm:ss"
)));
//温馨提示
data
.
put
(
"thing6"
,
new
SendTemplateMessageItemVo
(
MessageReminderEnum
.
RESERVER
.
getTips
()));
log
.
info
(
"开始发送消息!!!!"
);
wxMaService
.
getMsgService
().
sendSubscribeMsg
(
wxMaSubscribeMessage
);
Boolean
b
=
wechatNewService
.
sendMiniSubscribeMessage
(
templateMessageVo
);
if
(
b
)
{
log
.
info
(
"消息发送成功!!!!"
);
}
catch
(
WxErrorException
e
)
{
e
.
printStackTrace
();
}
templateMessageVo
.
setTemplate_id
(
MessageReminderEnum
.
START
.
getValue
());
//预约门店
data
.
put
(
"thing6"
,
new
SendTemplateMessageItemVo
(
"武汉"
));
//服务名称
data
.
put
(
"thing7"
,
new
SendTemplateMessageItemVo
(
"服务名称"
));
//预约时间
data
.
put
(
"time8"
,
new
SendTemplateMessageItemVo
(
"2024-12-12 12:12:12 ~ 2024-12-13 12:12:12"
));
//温馨提示
data
.
put
(
"thing5"
,
new
SendTemplateMessageItemVo
(
MessageReminderEnum
.
START
.
getTips
()));
Boolean
c
=
wechatNewService
.
sendMiniSubscribeMessage
(
templateMessageVo
);
if
(
c
)
{
log
.
info
(
"消息发送成功!!!!"
);
}
// Map<String, String> data = new HashMap<>();
// data.put("thing5", "订单门店");
// //服务名称
// data.put("thin6", "服务名称");
// //订单时间
// data.put("time7", new Date().toString());
// //温馨提示
// data.put("thing4", MessageReminderEnum.RESERVER.getTips());
// WxMaSubscribeMessage wxMaSubscribeMessage = WxMaSubscribeMessage.builder()
// .toUser(openId)
// .templateId("UkvsRnZkZB_w3MqXPbRhi4jEk8ML4N9PWT3rnd3Bhxg")
// .page(PAGES_ZP)
// .build();
// // 设置将推送的消息
// data.forEach((k, v) -> {
// wxMaSubscribeMessage.addData(new WxMaSubscribeMessage.MsgData(k, v));
// });
// try {
// log.info("开始发送消息!!!!");
// wxMaService.getMsgService().sendSubscribeMsg(wxMaSubscribeMessage);
// log.info("消息发送成功!!!!");
// } catch (WxErrorException e) {
// e.printStackTrace();
// }
}
}
share-front/src/main/java/share/web/controller/system/DeviceController.java
View file @
ce4c4e40
package
share
.
web
.
controller
.
system
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.security.access.prepost.PreAuthorize
;
import
org.springframework.web.bind.annotation.*
;
...
...
@@ -8,6 +9,8 @@ import share.common.core.controller.BaseController;
import
share.common.core.domain.AjaxResult
;
import
share.common.core.page.TableDataInfo
;
import
share.common.enums.BusinessType
;
import
share.common.enums.PositionEnum
;
import
share.common.enums.RoleTypeEnum
;
import
share.common.utils.SecurityUtils
;
import
share.common.utils.poi.ExcelUtil
;
import
share.system.domain.Device
;
...
...
@@ -15,6 +18,7 @@ import share.system.domain.SConsumer;
import
share.system.domain.vo.DeviceParamVo
;
import
share.system.domain.vo.FrontTokenComponent
;
import
share.system.domain.vo.MqttxVo
;
import
share.system.mapper.SStoreConsumerMapper
;
import
share.system.mqtt.MqttGatewayComponent
;
import
share.system.service.DeviceLogService
;
import
share.system.service.DeviceService
;
...
...
@@ -41,6 +45,8 @@ public class DeviceController extends BaseController {
private
MqttGatewayComponent
mqttGatewayComponent
;
@Autowired
private
SConsumerService
consumerService
;
@Autowired
private
SStoreConsumerMapper
storeConsumerMapper
;
/**
...
...
@@ -49,6 +55,13 @@ public class DeviceController extends BaseController {
@PostMapping
(
value
=
"/openOrClose"
)
public
AjaxResult
openOrClose
(
@RequestBody
DeviceParamVo
deviceParam
)
{
SConsumer
user
=
consumerService
.
getInfo
();
if
(!
user
.
getRoleType
().
equals
(
RoleTypeEnum
.
CLEANER
.
getCode
()))
{
throw
new
RuntimeException
(
"当前用户不是店员"
);
}
List
<
Long
>
longs
=
storeConsumerMapper
.
selectByConsumerId
(
user
.
getId
(),
PositionEnum
.
ADMIN
.
getCode
());
if
(
CollectionUtils
.
isEmpty
(
longs
))
{
throw
new
RuntimeException
(
"当前用户不是管理员"
);
}
// 获取mqtt的topic、payload
MqttxVo
mqttxVo
=
mqttxService
.
openOrCloseDevice
(
deviceParam
.
getDevId
(),
user
.
getAccount
(),
deviceParam
.
getOpType
());
...
...
share-front/src/main/java/share/web/controller/system/SCleanRecordsController.java
View file @
ce4c4e40
...
...
@@ -4,6 +4,7 @@ import java.util.List;
import
javax.servlet.http.HttpServletResponse
;
import
cn.hutool.core.date.DateUtil
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.security.access.prepost.PreAuthorize
;
...
...
@@ -21,9 +22,14 @@ import share.common.core.controller.BaseController;
import
share.common.core.domain.AjaxResult
;
import
share.common.enums.BusinessType
;
import
share.common.enums.CleaningStatusEnum
;
import
share.common.enums.PositionEnum
;
import
share.common.enums.RoleTypeEnum
;
import
share.system.domain.SCleanRecords
;
import
share.system.domain.SConsumer
;
import
share.system.domain.SStoreConsumer
;
import
share.system.domain.vo.FrontTokenComponent
;
import
share.system.domain.vo.SCleanRecordsVo
;
import
share.system.mapper.SStoreConsumerMapper
;
import
share.system.service.DeviceOpService
;
import
share.system.service.ISCleanRecordsService
;
import
share.common.utils.poi.ExcelUtil
;
...
...
@@ -42,6 +48,8 @@ public class SCleanRecordsController extends BaseController
{
@Autowired
private
ISCleanRecordsService
sCleanRecordsService
;
@Autowired
private
SStoreConsumerMapper
storeConsumerMapper
;
/**
* 查询保洁记录列表
...
...
@@ -76,13 +84,9 @@ public class SCleanRecordsController extends BaseController
*/
@ApiOperation
(
value
=
"已开始的保洁记录列表"
)
@GetMapping
(
"/myCleanList"
)
public
TableDataInfo
myCleanList
(
SCleanRecords
sCleanRecords
)
public
TableDataInfo
myCleanList
(
SCleanRecords
Vo
sCleanRecords
)
{
SConsumer
user
=
FrontTokenComponent
.
getWxSConsumerEntry
();
sCleanRecords
.
setConsumerId
(
user
.
getId
());
startPage
();
List
<
SCleanRecords
>
list
=
sCleanRecordsService
.
myCleanList
(
sCleanRecords
);
return
getDataTable
(
list
);
return
sCleanRecordsService
.
myCleanList
(
sCleanRecords
);
}
/**
...
...
@@ -104,10 +108,6 @@ public class SCleanRecordsController extends BaseController
@PostMapping
(
value
=
"/startClean"
)
public
AjaxResult
startClean
(
@RequestBody
SCleanRecords
sCleanRecords
)
{
SConsumer
user
=
FrontTokenComponent
.
getWxSConsumerEntry
();
sCleanRecords
.
setConsumerId
(
user
.
getId
());
sCleanRecords
.
setStartDate
(
DateUtil
.
date
());
sCleanRecords
.
setStatus
(
CleaningStatusEnum
.
CLEANING
.
getCode
());
return
toAjax
(
sCleanRecordsService
.
startCleanRecords
(
sCleanRecords
));
}
...
...
@@ -119,10 +119,7 @@ public class SCleanRecordsController extends BaseController
@PostMapping
(
value
=
"/endClean"
)
public
AjaxResult
endClean
(
@RequestBody
SCleanRecords
sCleanRecords
)
{
SConsumer
user
=
FrontTokenComponent
.
getWxSConsumerEntry
();
sCleanRecords
.
setConsumerId
(
user
.
getId
());
sCleanRecords
.
setEndDate
(
DateUtil
.
date
());
sCleanRecords
.
setStatus
(
CleaningStatusEnum
.
CLEANED
.
getCode
());
return
toAjax
(
sCleanRecordsService
.
endCleanRecords
(
sCleanRecords
));
}
...
...
share-front/src/main/java/share/web/controller/system/SConsumerController.java
View file @
ce4c4e40
...
...
@@ -15,6 +15,7 @@ import share.common.core.domain.AjaxResult;
import
share.common.core.domain.R
;
import
share.common.enums.BusinessType
;
import
share.system.domain.SConsumer
;
import
share.system.domain.vo.SConsumerVo
;
import
share.system.service.SConsumerService
;
import
share.common.utils.poi.ExcelUtil
;
import
share.common.core.page.TableDataInfo
;
...
...
@@ -38,7 +39,7 @@ public class SConsumerController extends BaseController
*/
@ApiOperation
(
value
=
"个人中心-用户信息"
)
@RequestMapping
(
value
=
"/info"
,
method
=
RequestMethod
.
GET
)
public
R
<
SConsumer
>
getSConsumerCenter
()
{
public
R
<
SConsumer
Vo
>
getSConsumerCenter
()
{
return
R
.
ok
(
sConsumerService
.
getSConsumer
());
}
...
...
share-front/src/main/java/share/web/controller/system/SStoreController.java
View file @
ce4c4e40
...
...
@@ -79,15 +79,11 @@ public class SStoreController extends BaseController
}
/**
*
查询全部门店及全部房间,每个房间绑定的设备列表
*
用户负责的门店设备
*/
@GetMapping
(
"/storeList"
)
@ApiOperation
(
value
=
"查询全部门店及全部房间,每个房间绑定的设备列表"
)
public
AjaxResult
storeList
()
{
return
success
(
sStoreService
.
storeList
());
}
}
share-quartz/src/main/java/share/quartz/task/CouponRetryTask.java
View file @
ce4c4e40
package
share
.
quartz
.
task
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.CollectionUtils
;
import
share.common.enums.ConsumerCouponStatusEnum
;
import
share.common.enums.UserStatusEnum
;
import
share.common.enums.YesNoEnum
;
import
share.system.domain.CouponLog
;
import
share.system.domain.SConsumerCoupon
;
import
share.system.domain.SStore
;
import
share.system.service.CouponLogService
;
import
share.system.service.ISConsumerCouponService
;
import
share.system.service.ISStoreService
;
import
share.system.service.QPService
;
import
share.system.service.impl.QPServiceImpl
;
import
java.util.*
;
...
...
@@ -25,17 +17,9 @@ import java.util.stream.Collectors;
@Component
(
"couponRetryTask"
)
public
class
CouponRetryTask
{
@Autowired
private
CouponLogService
couponLogService
;
@Autowired
private
QPService
qpService
;
@Autowired
private
ISStoreService
sStoreService
;
@Autowired
private
ISConsumerCouponService
sConsumerCouponService
;
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
QPServiceImpl
.
class
);
private
static
final
Integer
TRY_NUMBER
=
3
;
public
void
AuToRetryCoupon
()
{
LambdaQueryWrapper
<
SConsumerCoupon
>
consumerCouponWrapper
=
new
LambdaQueryWrapper
<>();
consumerCouponWrapper
.
eq
(
SConsumerCoupon:
:
getUseStatus
,
UserStatusEnum
.
UNUSED
.
getCode
());
...
...
@@ -50,46 +34,5 @@ public class CouponRetryTask {
if
(!
CollectionUtils
.
isEmpty
(
expiredSConsumerCounpons
))
{
sConsumerCouponService
.
updateBatchById
(
expiredSConsumerCounpons
);
}
LambdaQueryWrapper
<
CouponLog
>
queryWrapper
=
new
LambdaQueryWrapper
<>();
queryWrapper
.
eq
(
CouponLog:
:
getStatus
,
YesNoEnum
.
no
.
getDisplay_3
());
queryWrapper
.
eq
(
CouponLog:
:
getNumber
,
TRY_NUMBER
);
List
<
CouponLog
>
list
=
couponLogService
.
list
(
queryWrapper
);
if
(
CollectionUtils
.
isEmpty
(
list
))
{
return
;
}
//根据code分组
Map
<
String
,
List
<
CouponLog
>>
collect
=
list
.
stream
().
collect
(
Collectors
.
groupingBy
(
CouponLog:
:
getCode
));
//门店id集合
List
<
Long
>
storeIds
=
list
.
stream
().
map
(
CouponLog:
:
getStoreId
).
distinct
().
collect
(
Collectors
.
toList
());
List
<
SStore
>
sStoreList
=
sStoreService
.
listByIds
(
storeIds
);
//遍历Map
collect
.
forEach
((
k
,
v
)
->
{
CouponLog
couponLog
=
v
.
get
(
0
);
SStore
sStore
=
sStoreList
.
stream
().
filter
(
s
->
s
.
getId
().
equals
(
couponLog
.
getStoreId
())).
findFirst
().
get
();
if
(
couponLog
.
getNumber
().
equals
(
TRY_NUMBER
))
{
for
(
int
i
=
0
;
i
<
TRY_NUMBER
;
i
++)
{
try
{
qpService
.
consume
(
couponLog
.
getCode
(),
1
,
sStore
.
getOpenShopUuid
(),
ConsumerCouponStatusEnum
.
TASK
.
getCode
());
}
catch
(
Exception
e
)
{
logger
.
error
(
"验卷失败:{}"
,
e
.
getMessage
());
}
finally
{
couponLog
.
setNumber
(
couponLog
.
getNumber
()
-
1
);
couponLogService
.
updateById
(
couponLog
);
}
}
//根据code批量更新状态
LambdaUpdateWrapper
<
CouponLog
>
updateWrapper
=
new
LambdaUpdateWrapper
<>();
updateWrapper
.
eq
(
CouponLog:
:
getCode
,
k
);
//设置number为0
updateWrapper
.
set
(
CouponLog:
:
getNumber
,
0
);
couponLogService
.
update
(
updateWrapper
);
//更新优惠卷领取状态
SConsumerCoupon
sConsumerCoupon
=
new
SConsumerCoupon
();
sConsumerCoupon
.
setId
(
couponLog
.
getCouponId
());
sConsumerCoupon
.
setUseStatus
(
UserStatusEnum
.
EXPIRED
.
getCode
());
sConsumerCouponService
.
updateById
(
sConsumerCoupon
);
}
});
}
}
share-quartz/src/main/java/share/quartz/task/RedisTask.java
View file @
ce4c4e40
...
...
@@ -7,11 +7,18 @@ import cn.hutool.json.JSONException;
import
cn.hutool.json.JSONObject
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.dianping.openapi.sdk.api.oauth.entity.CustomerRefreshTokenResponse
;
import
com.dianping.openapi.sdk.api.tuangou.TuangouReceiptPrepare
;
import
com.dianping.openapi.sdk.api.tuangou.entity.TuangouReceiptGetConsumedReponseEntity
;
import
com.dianping.openapi.sdk.api.tuangou.entity.TuangouReceiptPrepareRequest
;
import
com.dianping.openapi.sdk.api.tuangou.entity.TuangouReceiptPrepareResponse
;
import
com.dianping.openapi.sdk.httpclient.DefaultOpenAPIClient
;
import
com.sun.org.apache.bcel.internal.generic.IF_ACMPEQ
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.CollectionUtils
;
...
...
@@ -85,45 +92,31 @@ public class RedisTask {
final
long
THREE_MINUTES
=
60
*
3
;
public
void
AuToReceiptCode
()
{
//获取redis中所有以tuangou.receipt.prepare开头的key
Set
<
String
>
keys
=
redisTemplate
.
keys
(
ReceiptRdeisEnum
.
PREPARE
.
getValue
()
+
"*"
);
if
(
keys
.
size
()
==
0
)
{
return
;
}
/**
* 自动删除所有可用但已退款的优惠券
*/
public
void
AutoDelRefundedCoupon
()
{
//获取所有待使用的优惠卷
LambdaQueryWrapper
<
SConsumerCoupon
>
queryWrapper
=
new
LambdaQueryWrapper
<>();
queryWrapper
.
eq
(
SConsumerCoupon:
:
getUseStatus
,
CouponStatusEnum
.
NORMAL
.
getValue
());
List
<
SConsumerCoupon
>
list
=
isConsumerCouponService
.
list
(
queryWrapper
);
//遍历key
keys
.
stream
().
forEach
(
o
->
{
//获取key对应的value
String
value
=
redisUtil
.
get
(
String
.
valueOf
(
o
));
JSONObject
jsonObject
=
new
JSONObject
(
value
);
Date
expirationTime
=
jsonObject
.
getDate
(
"expirationTime"
);
//判断是否过期
if
(
expirationTime
.
getTime
()
<
new
Date
().
getTime
())
{
//获取redis中的券码id
Long
consumerCouponId
=
jsonObject
.
getLong
(
"consumerCouponId"
);
if
(
CollectionUtils
.
isEmpty
(
list
))
{
//删除redis中的值
redisUtil
.
delete
(
o
);
//删除数据库中的值
isConsumerCouponService
.
deleteSConsumerCouponById
(
consumerCouponId
);
//跳过循环
return
;
LambdaQueryWrapper
<
SConsumerCoupon
>
wrapper
=
Wrappers
.
lambdaQuery
();
wrapper
.
eq
(
SConsumerCoupon:
:
getUseStatus
,
CouponStatusEnum
.
NORMAL
.
getValue
());
wrapper
.
isNotNull
(
SConsumerCoupon:
:
getCouponCode
);
List
<
SConsumerCoupon
>
coupons
=
isConsumerCouponService
.
list
(
wrapper
);
List
<
SStore
>
stores
=
storeService
.
list
();
List
<
Long
>
expiredCoupons
=
new
ArrayList
<>();
if
(!
CollectionUtils
.
isEmpty
(
coupons
))
{
for
(
SConsumerCoupon
coupon
:
coupons
)
{
//验券
TuangouReceiptGetConsumedReponseEntity
getconsumed
=
qpService
.
getconsumed
(
coupon
.
getCouponCode
(),
stores
.
stream
().
filter
(
store
->
store
.
getId
().
equals
(
coupon
.
getStoreId
())).
findFirst
().
get
().
getOpenShopUuid
());
if
(
getconsumed
==
null
)
{
expiredCoupons
.
add
(
coupon
.
getId
());
}
if
(
ObjectUtil
.
isEmpty
(
list
.
stream
().
filter
(
item
->
item
.
getId
().
equals
(
consumerCouponId
)).
findFirst
().
orElse
(
null
)))
{
//删除redis中的值
redisUtil
.
delete
(
o
);
//删除数据库中的值
isConsumerCouponService
.
deleteSConsumerCouponById
(
consumerCouponId
);
}
else
{
//删除redis中的值
redisUtil
.
delete
(
o
);
logger
.
info
(
"券码:{}->查询结束:{}"
,
coupon
.
getCouponCode
(),
getconsumed
);
}
//逻辑删除所有异常优惠券
isConsumerCouponService
.
removeByIds
(
expiredCoupons
);
}
});
}
public
void
processAutoReceiptCode
()
{
...
...
share-system/src/main/java/share/system/domain/SConsumer.java
View file @
ce4c4e40
...
...
@@ -53,7 +53,7 @@ public class SConsumer implements Serializable
private
Integer
level
;
/** 会员角色类型(0:会员,1:保洁人员,2:后台管理人员) */
@ApiModelProperty
(
value
=
"会员角色类型"
,
example
=
"0=:会员,1:
保洁人员,2:后台管理人
员"
)
@ApiModelProperty
(
value
=
"会员角色类型"
,
example
=
"0=:会员,1:
店
员"
)
private
Integer
roleType
;
/** 会员性别(0:未知,1:男,2:女) */
...
...
share-system/src/main/java/share/system/domain/SRoom.java
View file @
ce4c4e40
...
...
@@ -80,6 +80,12 @@ public class SRoom extends BaseEntity
@Excel
(
name
=
"其他可能硬件接入参数(备用2)"
)
private
String
params2
;
// /**
// * 是否脏房
// */
// @Excel(name = "是否脏房(0:否,1:是)")
// private Integer isDirtyRoom;
/**
* 套餐ID
*/
...
...
share-system/src/main/java/share/system/domain/SStoreConsumer.java
View file @
ce4c4e40
package
share
.
system
.
domain
;
import
lombok.Data
;
import
org.apache.commons.lang3.builder.ToStringBuilder
;
import
org.apache.commons.lang3.builder.ToStringStyle
;
...
...
@@ -9,6 +10,7 @@ import org.apache.commons.lang3.builder.ToStringStyle;
* @author: lwj
* @create: 2023-10-16 17:02
*/
@Data
public
class
SStoreConsumer
{
/** 门店ID */
private
Long
storeId
;
...
...
@@ -16,27 +18,6 @@ public class SStoreConsumer {
/** 保洁员ID */
private
Long
consumerId
;
public
Long
getStoreId
()
{
return
storeId
;
}
private
Integer
position
;
public
void
setStoreId
(
Long
storeId
)
{
this
.
storeId
=
storeId
;
}
public
Long
getConsumerId
()
{
return
consumerId
;
}
public
void
setConsumerId
(
Long
consumerId
)
{
this
.
consumerId
=
consumerId
;
}
@Override
public
String
toString
()
{
return
new
ToStringBuilder
(
this
,
ToStringStyle
.
MULTI_LINE_STYLE
)
.
append
(
"storeId"
,
getStoreId
())
.
append
(
"consumerId"
,
getConsumerId
())
.
toString
();
}
}
share-system/src/main/java/share/system/domain/vo/SCleanRecordsVo.java
0 → 100644
View file @
ce4c4e40
package
share
.
system
.
domain
.
vo
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
lombok.Data
;
import
share.common.annotation.Excel
;
import
share.common.core.domain.BaseEntity
;
import
java.util.List
;
@Data
public
class
SCleanRecordsVo
extends
BaseEntity
{
/**
* 门店ID
*/
private
List
<
Long
>
storeIds
;
/**
* 保洁人员ID
*/
private
Long
consumerId
;
private
Integer
status
;
/**
* 门店名称
*/
private
String
storeName
;
Integer
pageNum
;
Integer
pageSize
;
}
share-system/src/main/java/share/system/domain/vo/SConsumerVo.java
View file @
ce4c4e40
...
...
@@ -14,4 +14,10 @@ public class SConsumerVo extends SConsumer {
private
Long
storeId
;
private
Integer
position
;
private
Boolean
isCleaner
;
private
Boolean
isAdmin
;
}
share-system/src/main/java/share/system/domain/vo/SStoreConsumerVo.java
0 → 100644
View file @
ce4c4e40
package
share
.
system
.
domain
.
vo
;
import
lombok.Data
;
import
share.system.domain.SStoreConsumer
;
@Data
public
class
SStoreConsumerVo
{
/**
* 门店ID
*/
private
Long
storeId
;
/**
* 保洁员ID
*/
private
Long
consumerId
;
private
Integer
position
;
private
Long
[]
consumerIds
;
}
share-system/src/main/java/share/system/mapper/SCleanRecordsMapper.java
View file @
ce4c4e40
...
...
@@ -5,6 +5,7 @@ import java.util.List;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
share.system.domain.SCleanRecords
;
import
share.system.domain.SRoom
;
import
share.system.domain.vo.SCleanRecordsVo
;
/**
* 保洁记录Mapper接口
...
...
share-system/src/main/java/share/system/mapper/SStoreConsumerMapper.java
View file @
ce4c4e40
package
share
.
system
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
org.apache.ibatis.annotations.Param
;
import
share.system.domain.SStore
;
import
share.system.domain.SStoreConsumer
;
import
share.system.domain.SysUserRole
;
...
...
@@ -12,7 +14,7 @@ import java.util.List;
* @author: lwj
* @create: 2023-10-16 17:07
*/
public
interface
SStoreConsumerMapper
{
public
interface
SStoreConsumerMapper
extends
BaseMapper
<
SStoreConsumer
>
{
public
int
deleteByConsumerId
(
Long
consumerId
);
...
...
@@ -29,8 +31,10 @@ public interface SStoreConsumerMapper {
public
int
deleteInfo
(
SStoreConsumer
storeConsumer
);
public
int
deleteInfos
(
@Param
(
"storeId"
)
Long
storeId
,
@Param
(
"consumerIds"
)
Long
[]
consumerIds
);
public
int
deleteInfos
(
@Param
(
"storeId"
)
Long
storeId
,
@Param
(
"consumerIds"
)
Long
[]
consumerIds
,
@Param
(
"position"
)
Integer
position
);
List
<
Long
>
selectByConsumerId
(
Long
id
);
List
<
Long
>
selectByConsumerId
(
@Param
(
"consumerId"
)
Long
consumerId
,
@Param
(
"position"
)
Integer
position
);
List
<
SStoreConsumer
>
queryByConsumerId
(
Long
id
);
}
share-system/src/main/java/share/system/service/ISCleanRecordsService.java
View file @
ce4c4e40
...
...
@@ -4,7 +4,9 @@ import java.util.List;
import
java.util.Map
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
share.common.core.page.TableDataInfo
;
import
share.system.domain.SCleanRecords
;
import
share.system.domain.vo.SCleanRecordsVo
;
/**
* 保洁记录Service接口
...
...
@@ -72,7 +74,7 @@ public interface ISCleanRecordsService extends IService<SCleanRecords>
List
<
SCleanRecords
>
unCleanList
(
SCleanRecords
sCleanRecords
);
List
<
SCleanRecords
>
myCleanList
(
SCleanRecords
sCleanRecords
);
TableDataInfo
myCleanList
(
SCleanRecordsVo
sCleanRecords
);
SCleanRecords
getByRoomId
(
Long
roomId
);
...
...
share-system/src/main/java/share/system/service/ISStoreService.java
View file @
ce4c4e40
...
...
@@ -5,6 +5,7 @@ import java.util.Map;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
share.system.domain.SStore
;
import
share.system.domain.vo.SStoreConsumerVo
;
import
share.system.domain.vo.SStoreVo
;
import
share.system.request.SStoreRequest
;
import
share.system.domain.SStoreConsumer
;
...
...
@@ -90,13 +91,14 @@ public interface ISStoreService extends IService<SStore>
int
deleteStoreConsumer
(
SStoreConsumer
storeConsumer
);
int
deleteStoreConsumers
(
Long
storeId
,
Long
[]
consumerIds
);
int
deleteStoreConsumers
(
SStoreConsumerVo
storeConsumer
);
int
insertStoreConsumers
(
Long
storeId
,
Long
[]
consumerIds
);
int
insertStoreConsumers
(
SStoreConsumerVo
storeConsumer
);
List
<
SStore
>
listVoByCleaner
();
int
dataSync
();
List
<
SStoreVo
>
storeList
();
}
share-system/src/main/java/share/system/service/SConsumerService.java
View file @
ce4c4e40
...
...
@@ -91,7 +91,7 @@ public interface SConsumerService extends IService<SConsumer>
* 获取当前登陆用户个人信息(空则返回异常)
* @return
*/
SConsumer
getSConsumer
();
SConsumer
Vo
getSConsumer
();
/**
* 获取当前登陆用户个人信息
...
...
share-system/src/main/java/share/system/service/impl/QPServiceImpl.java
View file @
ce4c4e40
package
share
.
system
.
service
.
impl
;
import
cn.hutool.core.date.DatePattern
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.json.JSONObject
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.dianping.openapi.sdk.api.customerauth.session.CustomerKeyShopScopeQuery
;
...
...
@@ -90,35 +92,24 @@ public class QPServiceImpl implements QPService {
*/
@Override
public
TuangouReceiptPrepareResponseEntityVo
consumeByUser
(
String
code
,
String
openShopUuid
,
String
status
)
{
LambdaQueryWrapper
<
SStore
>
sStoreLambdaQueryWrapper
=
new
LambdaQueryWrapper
<>();
sStoreLambdaQueryWrapper
.
eq
(
SStore:
:
getOpenShopUuid
,
openShopUuid
);
SStore
sStore
=
storeService
.
getOne
(
sStoreLambdaQueryWrapper
);
if
(
ObjectUtils
.
isEmpty
(
sStore
)
||
StoreStatusEnum
.
STOP
.
getIndex
().
equals
(
sStore
.
getStatus
()))
{
throw
new
RuntimeException
(
"门店状态异常,请联系管理员"
);
}
//验券准备
TuangouReceiptPrepareResponseEntity
prepare
=
prepare
(
code
.
trim
(),
openShopUuid
,
status
);
//获取用户信息
SConsumer
user
=
FrontTokenComponent
.
getWxSConsumerEntry
();
//查询领取记录表
LambdaQueryWrapper
<
SConsumerCoupon
>
queryWrapper
=
new
LambdaQueryWrapper
<>();
queryWrapper
.
eq
(
SConsumerCoupon:
:
getDealId
,
prepare
.
getDeal_id
());
queryWrapper
.
eq
(
SConsumerCoupon:
:
getCouponCode
,
code
);
queryWrapper
.
eq
(
SConsumerCoupon:
:
getUseStatus
,
UserStatusEnum
.
UNUSED
.
getCode
());
SConsumerCoupon
couponTwo
=
isConsumerCouponService
.
getOne
(
queryWrapper
);
LambdaQueryWrapper
<
SStore
>
sStoreLambdaQueryWrapper
=
new
LambdaQueryWrapper
<>();
sStoreLambdaQueryWrapper
.
eq
(
SStore:
:
getOpenShopUuid
,
openShopUuid
);
SStore
sStore
=
storeService
.
getOne
(
sStoreLambdaQueryWrapper
);
if
(
ObjectUtils
.
isEmpty
(
sStore
))
{
throw
new
RuntimeException
(
"门店不存在"
);
}
if
(
sStore
.
getStatus
().
equals
(
StoreStatusEnum
.
STOP
.
getIndex
()))
{
throw
new
RuntimeException
(
"门店已停止"
);
}
if
(
ObjectUtils
.
isNotEmpty
(
couponTwo
))
{
//判断是否本人领取过
if
(
couponTwo
.
getConsumerId
().
equals
(
user
.
getId
()))
{
//领取删除原来的
isConsumerCouponService
.
deleteSConsumerCouponById
(
couponTwo
.
getId
());
//删除redis
redisUtil
.
delete
(
ReceiptRdeisEnum
.
PREPARE
.
getValue
()
+
prepare
.
getReceipt_code
());
}
else
{
return
null
;
}
SConsumerCoupon
unUsedCoupon
=
isConsumerCouponService
.
getOne
(
queryWrapper
);
if
(
ObjectUtils
.
isNotEmpty
(
unUsedCoupon
))
{
throw
new
RuntimeException
(
"该券已被领取"
);
}
//根据优惠卷名称查询优惠劵配置 查询list,取第一个
TuangouReceiptPrepareResponseEntityVo
response
=
new
TuangouReceiptPrepareResponseEntityVo
();
...
...
@@ -134,20 +125,15 @@ public class QPServiceImpl implements QPService {
sConsumerCoupon
.
setCreateBy
(
String
.
valueOf
(
user
.
getId
()));
sConsumerCoupon
.
setCreateTime
(
new
Date
());
sConsumerCoupon
.
setSubPrice
(
BigDecimal
.
valueOf
(
prepare
.
getDeal_marketprice
()));
//
根据门店id查询门店
信息
List
<
TuangouDealQueryShopDealResponseEntity
>
queryshopdeal
=
queryshopdeal
(
openShopUuid
);
queryshopdeal
.
stream
()
.
forEach
(
o
->
{
//
查询美团团购
信息
List
<
TuangouDealQueryShopDealResponseEntity
>
groupActivities
=
queryshopdeal
(
openShopUuid
);
groupActivities
.
forEach
(
o
->
{
//套餐名称相同并且在售卖中
if
(
prepare
.
getDeal_title
().
equals
(
o
.
getTitle
())
&&
o
.
getSale_status
().
equals
(
saleStatusEnum
.
SELLING
.
getCode
()))
{
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm"
);
try
{
Date
receiptEndDate
=
sdf
.
parse
(
o
.
getReceipt_end_date
());
Date
receiptBeginDate
=
sdf
.
parse
(
o
.
getReceipt_begin_date
());
if
(
prepare
.
getDeal_title
().
equals
(
o
.
getTitle
())
&&
saleStatusEnum
.
SELLING
.
getCode
().
equals
(
o
.
getSale_status
()))
{
Date
receiptEndDate
=
DateUtil
.
parse
(
o
.
getReceipt_end_date
(),
DatePattern
.
NORM_DATETIME_MINUTE_PATTERN
);
Date
receiptBeginDate
=
DateUtil
.
parse
(
o
.
getReceipt_begin_date
(),
DatePattern
.
NORM_DATETIME_MINUTE_PATTERN
);
sConsumerCoupon
.
setStartDate
(
receiptBeginDate
);
sConsumerCoupon
.
setEndDate
(
receiptEndDate
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
});
...
...
@@ -187,19 +173,12 @@ public class QPServiceImpl implements QPService {
}
isConsumerCouponService
.
insertSConsumerCoupon
(
sConsumerCoupon
);
response
.
setConsumerCouponId
(
sConsumerCoupon
.
getId
());
//设置过期时间30分钟
Map
<
String
,
String
>
map
=
new
HashMap
<>();
map
.
put
(
"receipt_code"
,
prepare
.
getReceipt_code
());
map
.
put
(
"consumerCouponId"
,
String
.
valueOf
(
response
.
getConsumerCouponId
()));
//设置30分钟后的时间
Date
date
=
DateUtils
.
addMinutes
(
new
Date
(),
30
);
map
.
put
(
"expirationTime"
,
String
.
valueOf
(
date
));
JSONObject
jsonObject
=
new
JSONObject
(
map
);
redisUtil
.
set
(
ReceiptRdeisEnum
.
PREPARE
.
getValue
()
+
prepare
.
getReceipt_code
(),
jsonObject
.
toString
());
SimpleDateFormat
format2
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
String
output1
=
format2
.
format
(
prepare
.
getReceiptEndDate
());
String
output1
=
DateUtil
.
format
(
prepare
.
getReceiptEndDate
(),
DatePattern
.
NORM_DATETIME_PATTERN
);
BeanUtils
.
copyProperties
(
prepare
,
response
);
response
.
setExpirationTime
(
output1
);
//核销美团券
consume
(
code
.
trim
(),
1
,
openShopUuid
,
ConsumerCouponStatusEnum
.
ORDER
.
getCode
());
return
response
;
}
...
...
@@ -414,7 +393,18 @@ public class QPServiceImpl implements QPService {
logger
.
error
(
"适用店铺查询接口:{}"
,
response
.
getMsg
());
throw
new
RuntimeException
(
response
.
getMsg
());
}
return
response
.
getData
();
//查询所有门店
List
<
SStore
>
list
=
storeService
.
list
();
//过滤以增加的门店 根据open_shop_uuid
List
<
CustomerKeyShopScopeResponseEntity
>
data
=
response
.
getData
();
List
<
CustomerKeyShopScopeResponseEntity
>
collect
=
data
.
stream
().
filter
(
o1
->
{
Optional
<
SStore
>
first
=
list
.
stream
().
filter
(
o2
->
o2
.
getOpenShopUuid
().
equals
(
o1
.
getOpen_shop_uuid
())).
findFirst
();
if
(
first
.
isPresent
())
{
return
false
;
}
return
true
;
}).
collect
(
java
.
util
.
stream
.
Collectors
.
toList
());
return
collect
;
}
}
share-system/src/main/java/share/system/service/impl/SCleanRecordsServiceImpl.java
View file @
ce4c4e40
package
share
.
system
.
service
.
impl
;
import
java.util.*
;
import
java.util.function.Function
;
import
java.util.stream.Collectors
;
import
cn.hutool.core.date.DateUtil
;
...
...
@@ -8,16 +9,15 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
org.apache.commons.collections4.CollectionUtils
;
import
share.common.constant.Constants
;
import
share.common.core.page.TableDataInfo
;
import
share.common.enums.*
;
import
share.common.utils.DateUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
share.system.domain.*
;
import
share.system.domain.vo.FrontTokenComponent
;
import
share.system.mapper.SCleanRecordsMapper
;
import
share.system.mapper.SConsumerMapper
;
import
share.system.mapper.SRoomMapper
;
import
share.system.mapper.SStoreMapper
;
import
share.system.domain.vo.SCleanRecordsVo
;
import
share.system.mapper.*
;
import
share.system.service.DeviceOpService
;
import
share.system.service.ISCleanRecordsService
;
import
share.system.service.ISOrderService
;
...
...
@@ -44,6 +44,8 @@ public class SCleanRecordsServiceImpl extends ServiceImpl<SCleanRecordsMapper,SC
private
DeviceOpService
deviceOpService
;
@Autowired
private
ISOrderService
orderService
;
@Autowired
private
SStoreConsumerMapper
storeConsumerMapper
;
//管理员手机号
private
static
final
String
phone
=
"13888888888"
;
...
...
@@ -160,10 +162,115 @@ public class SCleanRecordsServiceImpl extends ServiceImpl<SCleanRecordsMapper,SC
return
baseMapper
.
unCleanList
(
sCleanRecords
);
}
// @Override
// public TableDataInfo myCleanList(SCleanRecordsVo sCleanRecords) {
// SConsumer user = FrontTokenComponent.getWxSConsumerEntry();
// sCleanRecords.setConsumerId(user.getId());
// List<SStoreConsumer> sStoreConsumers = storeConsumerMapper.queryByConsumerId(user.getId());
// //保洁的门店id
// List<Long> storeIds = sStoreConsumers.stream().filter(s -> s.getPosition().equals(PositionEnum.CLEANER.getCode())).map(SStoreConsumer::getStoreId).collect(Collectors.toList());
// //管理员的门店id
// List<Long> longList = sStoreConsumers.stream().filter(s -> s.getPosition().equals(PositionEnum.ADMIN.getCode())).map(SStoreConsumer::getStoreId).collect(Collectors.toList());
// LambdaQueryWrapper<SCleanRecords> queryWrapper = new LambdaQueryWrapper<>();
// queryWrapper.in(SCleanRecords::getStoreId,longList);
// List<SCleanRecords> cleanRecordsList = baseMapper.selectList(queryWrapper);
// LambdaQueryWrapper<SCleanRecords> queryWrapper1 = new LambdaQueryWrapper<>();
// queryWrapper1.in(SCleanRecords::getStoreId,storeIds);
// queryWrapper1.eq(SCleanRecords::getConsumerId,user.getId());
// List<SCleanRecords> cleanRecords = baseMapper.selectList(queryWrapper1);
// cleanRecords.stream().forEach(item -> cleanRecordsList.add(item));
// List<SStore> sStoreList = sStoreMapper.selectList(new LambdaQueryWrapper<>());
// List<SRoom> sRoomList = sRoomMapper.selectList(new LambdaQueryWrapper<>());
// cleanRecordsList.stream().forEach(item -> {
// sStoreList.stream().forEach(store -> {
// if (item.getStoreId().equals(store.getId())) {
// item.setsStore(store);
// item.setStoreName(store.getName());
// }
// });
// sRoomList.stream().forEach(room -> {
// if (item.getRoomId().equals(room.getId())) {
// item.setsRoom(room);
// item.setRoomName(room.getName());
// }
// });
// });
// //排序 按照创建时间倒序
// cleanRecordsList.sort(Comparator.comparing(SCleanRecords::getCreateTime).reversed());
// //分页
// List<SCleanRecords> collect = cleanRecordsList.stream().skip((sCleanRecords.getPageNum() - 1) * sCleanRecords.getPageSize()).limit(sCleanRecords.getPageSize()).collect(Collectors.toList());
// TableDataInfo tableDataInfo = new TableDataInfo();
// tableDataInfo.setRows(collect);
// tableDataInfo.setTotal(cleanRecordsList.size());
// tableDataInfo.setCode(200);
// tableDataInfo.setMsg("查询成功");
// return tableDataInfo;
//
// }
@Override
public
List
<
SCleanRecords
>
myCleanList
(
SCleanRecords
sCleanRecords
)
{
return
baseMapper
.
myCleanList
(
sCleanRecords
);
public
TableDataInfo
myCleanList
(
SCleanRecordsVo
sCleanRecords
)
{
SConsumer
user
=
FrontTokenComponent
.
getWxSConsumerEntry
();
if
(
user
==
null
)
{
throw
new
RuntimeException
(
"User not found"
);
// 或者返回特定的错误响应
}
sCleanRecords
.
setConsumerId
(
user
.
getId
());
List
<
SStoreConsumer
>
sStoreConsumers
=
storeConsumerMapper
.
queryByConsumerId
(
user
.
getId
());
List
<
Long
>
cleanerStoreIds
=
sStoreConsumers
.
stream
()
.
filter
(
s
->
s
.
getPosition
().
equals
(
PositionEnum
.
CLEANER
.
getCode
()))
.
map
(
SStoreConsumer:
:
getStoreId
)
.
collect
(
Collectors
.
toList
());
cleanerStoreIds
=
Optional
.
ofNullable
(
cleanerStoreIds
).
orElse
(
Collections
.
emptyList
());
List
<
Long
>
adminStoreIds
=
sStoreConsumers
.
stream
()
.
filter
(
s
->
s
.
getPosition
().
equals
(
PositionEnum
.
ADMIN
.
getCode
()))
.
map
(
SStoreConsumer:
:
getStoreId
)
.
collect
(
Collectors
.
toList
());
adminStoreIds
=
Optional
.
ofNullable
(
adminStoreIds
).
orElse
(
Collections
.
emptyList
());
LambdaQueryWrapper
<
SCleanRecords
>
queryWrapper
=
new
LambdaQueryWrapper
<>();
if
(
CollectionUtils
.
isNotEmpty
(
adminStoreIds
))
{
queryWrapper
.
in
(
SCleanRecords:
:
getStoreId
,
adminStoreIds
);
}
if
(
CollectionUtils
.
isNotEmpty
(
cleanerStoreIds
))
{
queryWrapper
.
or
().
in
(
SCleanRecords:
:
getStoreId
,
cleanerStoreIds
);
queryWrapper
.
eq
(
SCleanRecords:
:
getConsumerId
,
user
.
getId
());
}
List
<
SCleanRecords
>
cleanRecordsList
=
baseMapper
.
selectList
(
queryWrapper
);
Map
<
Long
,
SStore
>
storeMap
=
sStoreMapper
.
selectList
(
new
LambdaQueryWrapper
<>()).
stream
()
.
collect
(
Collectors
.
toMap
(
SStore:
:
getId
,
Function
.
identity
()));
Map
<
Long
,
SRoom
>
roomMap
=
sRoomMapper
.
selectList
(
new
LambdaQueryWrapper
<>()).
stream
()
.
collect
(
Collectors
.
toMap
(
SRoom:
:
getId
,
Function
.
identity
()));
cleanRecordsList
.
forEach
(
item
->
{
SStore
store
=
storeMap
.
get
(
item
.
getStoreId
());
if
(
store
!=
null
)
{
item
.
setsStore
(
store
);
item
.
setStoreName
(
store
.
getName
());
}
SRoom
room
=
roomMap
.
get
(
item
.
getRoomId
());
if
(
room
!=
null
)
{
item
.
setsRoom
(
room
);
item
.
setRoomName
(
room
.
getName
());
}
});
cleanRecordsList
.
sort
(
Comparator
.
comparing
(
SCleanRecords:
:
getCreateTime
).
reversed
());
int
start
=
(
sCleanRecords
.
getPageNum
()
-
1
)
*
sCleanRecords
.
getPageSize
();
int
end
=
Math
.
min
(
start
+
sCleanRecords
.
getPageSize
(),
cleanRecordsList
.
size
());
List
<
SCleanRecords
>
pagedList
=
cleanRecordsList
.
subList
(
start
,
end
);
TableDataInfo
tableDataInfo
=
new
TableDataInfo
();
tableDataInfo
.
setRows
(
pagedList
);
tableDataInfo
.
setTotal
(
cleanRecordsList
.
size
());
tableDataInfo
.
setCode
(
200
);
tableDataInfo
.
setMsg
(
"查询成功"
);
return
tableDataInfo
;
}
@Override
public
SCleanRecords
getByRoomId
(
Long
roomId
)
{
...
...
@@ -177,6 +284,10 @@ public class SCleanRecordsServiceImpl extends ServiceImpl<SCleanRecordsMapper,SC
public
SCleanRecords
getByCleanerId
()
{
SConsumer
user
=
FrontTokenComponent
.
getWxSConsumerEntry
();
if
(!
user
.
getRoleType
().
equals
(
RoleTypeEnum
.
CLEANER
.
getCode
()))
{
throw
new
RuntimeException
(
"当前用户不是店员"
);
}
List
<
Long
>
longs
=
storeConsumerMapper
.
selectByConsumerId
(
user
.
getId
(),
PositionEnum
.
CLEANER
.
getCode
());
if
(
CollectionUtils
.
isEmpty
(
longs
))
{
throw
new
RuntimeException
(
"当前用户不是保洁人员"
);
}
LambdaQueryWrapper
<
SCleanRecords
>
queryWrapper
=
new
LambdaQueryWrapper
<>();
...
...
@@ -233,6 +344,9 @@ public class SCleanRecordsServiceImpl extends ServiceImpl<SCleanRecordsMapper,SC
@Override
public
int
startCleanRecords
(
SCleanRecords
sCleanRecords
)
{
isCleaner
(
sCleanRecords
);
sCleanRecords
.
setStartDate
(
DateUtil
.
date
());
sCleanRecords
.
setStatus
(
CleaningStatusEnum
.
CLEANING
.
getCode
());
LambdaQueryWrapper
<
SCleanRecords
>
queryWrapper
=
new
LambdaQueryWrapper
<>();
queryWrapper
.
eq
(
SCleanRecords:
:
getStatus
,
CleaningStatusEnum
.
CLEANING
.
getCode
());
queryWrapper
.
eq
(
SCleanRecords:
:
getConsumerId
,
sCleanRecords
.
getConsumerId
());
...
...
@@ -291,6 +405,10 @@ public class SCleanRecordsServiceImpl extends ServiceImpl<SCleanRecordsMapper,SC
@Override
public
int
endCleanRecords
(
SCleanRecords
sCleanRecords
)
{
isCleaner
(
sCleanRecords
);
sCleanRecords
.
setEndDate
(
DateUtil
.
date
());
sCleanRecords
.
setStatus
(
CleaningStatusEnum
.
CLEANED
.
getCode
());
SCleanRecords
records
=
baseMapper
.
selectSCleanRecordsById
(
sCleanRecords
.
getId
());
if
(
records
==
null
)
{
throw
new
RuntimeException
(
"当前保洁任务不存在!"
);
...
...
@@ -303,6 +421,18 @@ public class SCleanRecordsServiceImpl extends ServiceImpl<SCleanRecordsMapper,SC
return
index
;
}
private
void
isCleaner
(
SCleanRecords
sCleanRecords
)
{
SConsumer
user
=
FrontTokenComponent
.
getWxSConsumerEntry
();
if
(!
user
.
getRoleType
().
equals
(
RoleTypeEnum
.
CLEANER
.
getCode
()))
{
throw
new
RuntimeException
(
"当前用户不是店员"
);
}
List
<
Long
>
longs
=
storeConsumerMapper
.
selectByConsumerId
(
user
.
getId
(),
PositionEnum
.
CLEANER
.
getCode
());
if
(
CollectionUtils
.
isEmpty
(
longs
))
{
throw
new
RuntimeException
(
"当前用户不是保洁人员"
);
}
sCleanRecords
.
setConsumerId
(
user
.
getId
());
}
private
void
sendSms
(
Long
storeId
,
SStore
store
,
SRoom
room
)
{
sConsumerMapper
.
selectListByStoreId
(
storeId
).
stream
().
forEach
(
item
->
{
// 循环发送短信提示门店保洁打扫卫生
...
...
share-system/src/main/java/share/system/service/impl/SConsumerServiceImpl.java
View file @
ce4c4e40
...
...
@@ -12,21 +12,27 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
org.apache.commons.codec.digest.DigestUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.CollectionUtils
;
import
share.common.constant.Constants
;
import
share.common.constant.SmsConstants
;
import
share.common.enums.ConsumerCouponUseStatusEnum
;
import
share.common.enums.PayStatusEnum
;
import
share.common.enums.PositionEnum
;
import
share.common.enums.RoleTypeEnum
;
import
share.common.exception.base.BaseException
;
import
share.common.utils.BaseUtil
;
import
share.common.utils.DateUtil
;
import
share.system.domain.SConsumerCoupon
;
import
share.system.domain.SRoomPack
;
import
share.system.domain.SStoreConsumer
;
import
share.system.domain.vo.FrontTokenComponent
;
import
share.system.domain.vo.SConsumerVo
;
import
share.system.mapper.SConsumerMapper
;
import
share.system.domain.SConsumer
;
import
share.system.mapper.SStoreConsumerMapper
;
import
share.system.request.RegisterThirdSConsumerRequest
;
import
share.system.service.ISConsumerCouponService
;
import
share.system.service.SConsumerService
;
...
...
@@ -45,6 +51,8 @@ public class SConsumerServiceImpl extends ServiceImpl<SConsumerMapper, SConsumer
@Autowired
private
ISConsumerCouponService
sConsumerCouponService
;
@Autowired
private
SStoreConsumerMapper
storeConsumerMapper
;
/**
* 查询会员用户
...
...
@@ -168,7 +176,7 @@ public class SConsumerServiceImpl extends ServiceImpl<SConsumerMapper, SConsumer
}
@Override
public
SConsumer
getSConsumer
()
{
public
SConsumer
Vo
getSConsumer
()
{
SConsumer
currentUser
=
getInfo
();
SConsumerCoupon
sConsumerCoupon
=
new
SConsumerCoupon
();
sConsumerCoupon
.
setConsumerId
(
currentUser
.
getId
());
...
...
@@ -177,10 +185,25 @@ public class SConsumerServiceImpl extends ServiceImpl<SConsumerMapper, SConsumer
if
(
count
>
0
){
currentUser
.
setNumber
(
count
);
}
SConsumerVo
vo
=
new
SConsumerVo
();
BeanUtils
.
copyProperties
(
currentUser
,
vo
);
List
<
Long
>
longList
=
storeConsumerMapper
.
selectByConsumerId
(
currentUser
.
getId
(),
PositionEnum
.
CLEANER
.
getCode
());
if
(
CollectionUtils
.
isEmpty
(
longList
))
{
vo
.
setIsCleaner
(
false
);
}
else
{
vo
.
setIsCleaner
(
true
);
}
List
<
Long
>
adminList
=
storeConsumerMapper
.
selectByConsumerId
(
currentUser
.
getId
(),
PositionEnum
.
ADMIN
.
getCode
());
if
(
CollectionUtils
.
isEmpty
(
adminList
))
{
vo
.
setIsAdmin
(
false
);
}
else
{
vo
.
setIsAdmin
(
true
);
}
if
(
ObjectUtil
.
isNull
(
currentUser
))
{
throw
new
BaseException
(
"您的登录已过期,请先登录"
);
}
return
currentUser
;
return
vo
;
}
/**
...
...
@@ -264,9 +287,10 @@ public class SConsumerServiceImpl extends ServiceImpl<SConsumerMapper, SConsumer
if
(
ArrayUtil
.
isNotEmpty
(
ids
))
{
List
<
Long
>
idList
=
ListUtil
.
toList
(
ids
);
List
<
SConsumer
>
list
=
baseMapper
.
selectBatchIds
(
idList
);
//解除所有门店关联
storeConsumerMapper
.
deleteBatchIds
(
idList
);
list
.
stream
().
forEach
(
sConsumer
->
{
sConsumer
.
setRoleType
(
RoleTypeEnum
.
MEMBRO
.
getCode
());
});
updateBatchById
(
list
);
return
idList
.
size
();
...
...
share-system/src/main/java/share/system/service/impl/SOrderServiceImpl.java
View file @
ce4c4e40
...
...
@@ -14,6 +14,11 @@ import com.baomidou.dynamic.datasource.annotation.DSTransactional;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.dianping.openapi.sdk.api.tuangou.TuangouReceiptGetConsumed
;
import
com.dianping.openapi.sdk.api.tuangou.entity.TuangouReceiptGetConsumedReponse
;
import
com.dianping.openapi.sdk.api.tuangou.entity.TuangouReceiptGetConsumedReponseEntity
;
import
com.dianping.openapi.sdk.api.tuangou.entity.TuangouReceiptGetConsumedRequest
;
import
com.dianping.openapi.sdk.httpclient.DefaultOpenAPIClient
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.slf4j.Logger
;
...
...
@@ -323,7 +328,10 @@ public class SOrderServiceImpl extends ServiceImpl<SOrderMapper, SOrder> impleme
if
(
Objects
.
nonNull
(
byId
))
{
if
(
byId
.
getUseStatus
().
equals
(
UserStatusEnum
.
UNUSED
.
getCode
()))
{
if
(
StringUtils
.
isNotEmpty
(
byId
.
getCouponCode
()))
{
qpService
.
prepare
(
byId
.
getCouponCode
(),
sStore
.
getOpenShopUuid
(),
ConsumerCouponStatusEnum
.
ORDER
.
getCode
());
TuangouReceiptGetConsumedReponseEntity
getconsumed
=
qpService
.
getconsumed
(
byId
.
getCouponCode
(),
sStore
.
getOpenShopUuid
());
if
(
getconsumed
==
null
)
{
throw
new
RuntimeException
(
"优惠券异常,请稍后再试"
);
}
}
}
else
{
throw
new
BaseException
(
"优惠券已使用!"
);
...
...
@@ -349,10 +357,6 @@ public class SOrderServiceImpl extends ServiceImpl<SOrderMapper, SOrder> impleme
save
(
sOrder
);
if
(
response
.
getStatus
().
equals
(
YesNoEnum
.
yes
.
getFlag
()))
{
if
(
Objects
.
nonNull
(
byId
))
{
if
(
StringUtils
.
isNotEmpty
(
byId
.
getCouponCode
()))
{
//验劵
qpService
.
consume
(
byId
.
getCouponCode
(),
1
,
sStore
.
getOpenShopUuid
(),
ConsumerCouponStatusEnum
.
ORDER
.
getCode
());
}
SConsumerCoupon
consumerCoupon
=
new
SConsumerCoupon
();
consumerCoupon
.
setId
(
request
.
getCouponId
());
consumerCoupon
.
setUseDate
(
new
Date
());
...
...
@@ -795,10 +799,6 @@ public class SOrderServiceImpl extends ServiceImpl<SOrderMapper, SOrder> impleme
SConsumerCoupon
consumerCoupon
=
consumerCouponService
.
getById
(
couponId
);
if
(
ObjectUtil
.
isNotEmpty
(
consumerCoupon
))
{
if
(
consumerCoupon
.
getUseStatus
().
equals
(
UserStatusEnum
.
UNUSED
.
getCode
()))
{
if
(
StringUtils
.
isNotEmpty
(
consumerCoupon
.
getCouponCode
()))
{
//验劵
qpService
.
consume
(
consumerCoupon
.
getCouponCode
(),
1
,
sStore
.
getOpenShopUuid
(),
ConsumerCouponStatusEnum
.
WECHAT
.
getCode
());
}
consumerCoupon
.
setUseDate
(
new
Date
());
consumerCoupon
.
setUseStatus
(
UserStatusEnum
.
USED
.
getCode
());
consumerCouponService
.
updateById
(
consumerCoupon
);
...
...
share-system/src/main/java/share/system/service/impl/SRoomServiceImpl.java
View file @
ce4c4e40
...
...
@@ -10,6 +10,7 @@ import org.apache.commons.collections4.CollectionUtils;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.util.ObjectUtils
;
import
share.common.enums.DeviceType
;
import
share.common.enums.PositionEnum
;
import
share.common.enums.RoleTypeEnum
;
import
share.common.enums.YesNoEnum
;
import
share.common.exception.base.BaseException
;
...
...
@@ -23,6 +24,7 @@ import share.system.domain.vo.RoomStatusVo;
import
share.system.domain.vo.SRoomVo
;
import
share.system.mapper.DeviceMapper
;
import
share.system.mapper.SRoomMapper
;
import
share.system.mapper.SStoreConsumerMapper
;
import
share.system.service.*
;
/**
...
...
@@ -52,6 +54,8 @@ public class SRoomServiceImpl extends ServiceImpl<SRoomMapper, SRoom> implements
private
DeviceOpService
deviceOpService
;
@Autowired
private
RoomStatusService
roomStatusService
;
@Autowired
private
SStoreConsumerMapper
storeConsumerMapper
;
/**
...
...
@@ -281,6 +285,10 @@ public class SRoomServiceImpl extends ServiceImpl<SRoomMapper, SRoom> implements
public
String
openDoor
(
Long
id
)
{
SConsumer
user
=
FrontTokenComponent
.
getWxSConsumerEntry
();
if
(!
user
.
getRoleType
().
equals
(
RoleTypeEnum
.
CLEANER
.
getCode
()))
{
throw
new
RuntimeException
(
"当前用户不是店员"
);
}
List
<
Long
>
longs
=
storeConsumerMapper
.
selectByConsumerId
(
user
.
getId
(),
PositionEnum
.
CLEANER
.
getCode
());
if
(
CollectionUtils
.
isEmpty
(
longs
))
{
throw
new
RuntimeException
(
"当前用户不是保洁人员"
);
}
SRoom
room
=
baseMapper
.
selectById
(
id
);
...
...
share-system/src/main/java/share/system/service/impl/SStoreServiceImpl.java
View file @
ce4c4e40
...
...
@@ -9,12 +9,8 @@ import cn.hutool.core.util.StrUtil;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.dianping.openapi.sdk.api.customerauth.session.entity.CustomerKeyShopScopeResponseEntity
;
import
lombok.var
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang3.ObjectUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.poi.hssf.record.DVALRecord
;
import
org.bouncycastle.util.Store
;
import
org.locationtech.spatial4j.context.SpatialContext
;
import
org.locationtech.spatial4j.distance.DistanceUtils
;
import
org.locationtech.spatial4j.shape.Point
;
...
...
@@ -27,6 +23,7 @@ import org.springframework.stereotype.Service;
import
share.system.domain.*
;
import
share.system.domain.vo.FrontTokenComponent
;
import
share.system.domain.vo.SRoomVo
;
import
share.system.domain.vo.SStoreConsumerVo
;
import
share.system.domain.vo.SStoreVo
;
import
share.system.mapper.*
;
import
share.system.request.SStoreRequest
;
...
...
@@ -350,18 +347,19 @@ public class SStoreServiceImpl extends ServiceImpl<SStoreMapper, SStore> impleme
}
@Override
public
int
deleteStoreConsumers
(
Long
storeId
,
Long
[]
consumerIds
)
{
return
storeConsumerMapper
.
deleteInfos
(
store
Id
,
consumerIds
);
public
int
deleteStoreConsumers
(
SStoreConsumerVo
storeConsumer
)
{
return
storeConsumerMapper
.
deleteInfos
(
store
Consumer
.
getStoreId
(),
storeConsumer
.
getConsumerIds
(),
storeConsumer
.
getPosition
()
);
}
@Override
public
int
insertStoreConsumers
(
Long
storeId
,
Long
[]
consumerIds
)
{
public
int
insertStoreConsumers
(
SStoreConsumerVo
storeConsumer
)
{
// 新增保洁与门店关系
List
<
SStoreConsumer
>
list
=
new
ArrayList
<
SStoreConsumer
>();
for
(
Long
consumerId
:
consumerIds
)
{
for
(
Long
consumerId
:
storeConsumer
.
getConsumerIds
()
)
{
SStoreConsumer
sc
=
new
SStoreConsumer
();
sc
.
setStoreId
(
store
Id
);
sc
.
setStoreId
(
store
Consumer
.
getStoreId
()
);
sc
.
setConsumerId
(
consumerId
);
sc
.
setPosition
(
storeConsumer
.
getPosition
());
list
.
add
(
sc
);
}
return
storeConsumerMapper
.
batchSStoreConsumer
(
list
);
...
...
@@ -371,10 +369,12 @@ public class SStoreServiceImpl extends ServiceImpl<SStoreMapper, SStore> impleme
public
List
<
SStore
>
listVoByCleaner
()
{
SConsumer
user
=
FrontTokenComponent
.
getWxSConsumerEntry
();
if
(!
user
.
getRoleType
().
equals
(
RoleTypeEnum
.
CLEANER
.
getCode
()))
{
throw
new
BaseException
(
"当前用户不是保洁人员!"
);
throw
new
BaseException
(
"当前用户不是店员!"
);
}
List
<
Long
>
storeIdList
=
storeConsumerMapper
.
selectByConsumerId
(
user
.
getId
(),
PositionEnum
.
CLEANER
.
getCode
());
if
(
CollectionUtils
.
isEmpty
(
storeIdList
))
{
throw
new
RuntimeException
(
"当前用户不是保洁人员"
);
}
//查询保洁人员所属门店
List
<
Long
>
storeIdList
=
storeConsumerMapper
.
selectByConsumerId
(
user
.
getId
());
List
<
SStore
>
storeList
=
new
ArrayList
<>();
if
(
CollectionUtils
.
isNotEmpty
(
storeIdList
))
{
// 查询门店信息
...
...
@@ -444,13 +444,19 @@ public class SStoreServiceImpl extends ServiceImpl<SStoreMapper, SStore> impleme
}
return
0
;
}
@Override
public
List
<
SStoreVo
>
storeList
()
{
SConsumer
user
=
consumerService
.
getInfo
();
if
(!
user
.
getRoleType
().
equals
(
RoleTypeEnum
.
CLEANER
.
getCode
()))
{
throw
new
BaseException
(
"当前用户不是店员!"
);
}
List
<
Long
>
storeIds
=
storeConsumerMapper
.
selectByConsumerId
(
user
.
getId
(),
PositionEnum
.
ADMIN
.
getCode
());
if
(
CollectionUtils
.
isEmpty
(
storeIds
))
{
return
new
ArrayList
<>();
}
//查询所有门店
List
<
SStore
>
sStores
=
baseMapper
.
selectSStoreList
(
new
SStore
());
//获取所有门店id
List
<
Long
>
storeIds
=
sStores
.
stream
().
map
(
SStore:
:
getId
).
collect
(
Collectors
.
toList
());
List
<
SStore
>
sStores
=
baseMapper
.
selectList
(
new
LambdaQueryWrapper
<
SStore
>().
in
(
SStore:
:
getId
,
storeIds
));
List
<
SStoreVo
>
voList
=
new
ArrayList
<>();
if
(
CollectionUtils
.
isNotEmpty
(
sStores
))
{
voList
=
convertDosToVos
(
sStores
);
...
...
@@ -474,7 +480,11 @@ public class SStoreServiceImpl extends ServiceImpl<SStoreMapper, SStore> impleme
}
List
<
Device
>
devices
=
new
ArrayList
<>();
deviceList
.
stream
().
forEach
(
device
->
{
if
(
room
.
getId
().
compareTo
(
device
.
getRoomId
())
==
0
)
{
Long
roomId
=
device
.
getRoomId
();
if
(
ObjectUtil
.
isEmpty
(
roomId
))
{
return
;
}
if
(
room
.
getId
().
compareTo
(
roomId
)
==
0
)
{
devices
.
add
(
device
);
}
});
...
...
share-system/src/main/resources/mapper/system/SConsumerMapper.xml
View file @
ce4c4e40
...
...
@@ -54,7 +54,7 @@
t1.free_amount, t1.total_times, t1.duration, t1.status, t1.pwd, t1.create_time, t1.last_login_time
from s_consumer t1
left join s_store_consumer t2 on t2.consumer_id = t1.id
where t1.role_type = '1' and t2.store_id = #{storeId}
where t1.role_type = '1' and t2.
position=#{position} and t2.
store_id = #{storeId}
<if
test=
"nickName != null and nickName != ''"
>
AND t1.nick_name like concat('%', #{nickName}, '%')
</if>
...
...
@@ -67,7 +67,8 @@
t1.free_amount, t1.total_times, t1.duration, t1.status, t1.pwd, t1.create_time, t1.last_login_time
from s_consumer t1
where t1.role_type = '1'
and t1.id not in (select consumer_id from s_store_consumer where store_id = #{storeId})
and t1.id not in (select consumer_id from s_store_consumer where store_id = #{storeId} and position =
#{position})
<if
test=
"nickName != null and nickName != ''"
>
AND t1.nick_name like concat('%', #{nickName}, '%')
</if>
...
...
@@ -90,7 +91,8 @@
t1.free_amount, t1.total_times, t1.duration, t1.status, t1.pwd, t1.create_time, t1.last_login_time
from s_consumer t1
left join s_store_consumer t2 on t2.consumer_id = t1.id
where t1.role_type = '1' and t1.id in (select consumer_id from s_store_consumer where store_id = #{storeId})
where t1.role_type = '1'
and t1.id in (select consumer_id from s_store_consumer where store_id = #{storeId} and position = '1')
</select>
...
...
share-system/src/main/resources/mapper/system/SRoomMapper.xml
View file @
ce4c4e40
...
...
@@ -14,6 +14,7 @@
<result
property=
"info"
column=
"info"
/>
<result
property=
"status"
column=
"status"
/>
<result
property=
"price"
column=
"price"
/>
<!-- <result property="isDirtyRoom" column="is_dirty_room"/>-->
<result
property=
"doorLockCode"
column=
"door_lock_code"
/>
<result
property=
"electricControlCode"
column=
"electric_control_code"
/>
<result
property=
"password"
column=
"password"
/>
...
...
@@ -27,7 +28,27 @@
</resultMap>
<sql
id=
"selectSRoomVo"
>
select id, store_id, name, room_type, images, facilities, info, status, price, door_lock_code, electric_control_code, password, params1, params2, create_by, create_time, update_by, update_time, remark from s_room
select id,
store_id,
name,
room_type,
images,
facilities,
info,
status,
price,
<!-- is_dirty_room,-->
door_lock_code,
electric_control_code,
password,
params1,
params2,
create_by,
create_time,
update_by,
update_time,
remark
from s_room
</sql>
<select
id=
"selectSRoomList"
parameterType=
"SRoom"
resultMap=
"SRoomResult"
>
...
...
@@ -41,6 +62,7 @@
<if
test=
"info != null and info != ''"
>
and info = #{info}
</if>
<if
test=
"status != null and status != '' or status ==0"
>
and status = #{status}
</if>
<if
test=
"price != null "
>
and price = #{price}
</if>
<!-- <if test="isDirtyRoom != null ">and is_dirty_room = #{isDirtyRoom}</if>-->
<if
test=
"doorLockCode != null and doorLockCode != ''"
>
and door_lock_code = #{doorLockCode}
</if>
<if
test=
"electricControlCode != null and electricControlCode != ''"
>
and electric_control_code = #{electricControlCode}
</if>
<if
test=
"password != null and password != ''"
>
and password = #{password}
</if>
...
...
@@ -65,6 +87,7 @@
<if
test=
"info != null"
>
info,
</if>
<if
test=
"status != null"
>
status,
</if>
<if
test=
"price != null"
>
price,
</if>
<!-- <if test="isDirtyRoom != null">is_dirty_room,</if> -->
<if
test=
"doorLockCode != null"
>
door_lock_code,
</if>
<if
test=
"electricControlCode != null"
>
electric_control_code,
</if>
<if
test=
"password != null"
>
password,
</if>
...
...
@@ -85,6 +108,7 @@
<if
test=
"info != null"
>
#{info},
</if>
<if
test=
"status != null"
>
#{status},
</if>
<if
test=
"price != null"
>
#{price},
</if>
<!-- <if test="isDirtyRoom != null">#{isDirtyRoom},</if> -->
<if
test=
"doorLockCode != null"
>
#{doorLockCode},
</if>
<if
test=
"electricControlCode != null"
>
#{electricControlCode},
</if>
<if
test=
"password != null"
>
#{password},
</if>
...
...
@@ -109,6 +133,7 @@
<if
test=
"info != null"
>
info = #{info},
</if>
<if
test=
"status != null"
>
status = #{status},
</if>
<if
test=
"price != null"
>
price = #{price},
</if>
<!-- <if test="isDirtyRoom != null">is_dirty_room = #{isDirtyRoom},</if> -->
<if
test=
"doorLockCode != null"
>
door_lock_code = #{doorLockCode},
</if>
<if
test=
"electricControlCode != null"
>
electric_control_code = #{electricControlCode},
</if>
<if
test=
"password != null"
>
password = #{password},
</if>
...
...
share-system/src/main/resources/mapper/system/SStoreConsumerMapper.xml
View file @
ce4c4e40
...
...
@@ -7,6 +7,7 @@
<resultMap
type=
"SStoreConsumer"
id=
"SStoreConsumerResult"
>
<result
property=
"storeId"
column=
"store_id"
/>
<result
property=
"consumerId"
column=
"consumer_id"
/>
<result
property=
"position"
column=
"position"
/>
</resultMap>
<delete
id=
"deleteByConsumerId"
parameterType=
"Long"
>
...
...
@@ -17,7 +18,17 @@
select count(1) from s_store_consumer where store_id=#{storeId}
</select>
<select
id=
"selectByConsumerId"
resultType=
"Long"
>
select store_id from s_store_consumer where consumer_id=#{consumerId}
select store_id
from s_store_consumer
where consumer_id = #{consumerId}
<if
test=
"position != null"
>
and position = #{position}
</if>
</select>
<select
id=
"queryByConsumerId"
resultMap=
"SStoreConsumerResult"
>
select store_id, store_id, position
from s_store_consumer
where consumer_id = #{consumerId}
</select>
<delete
id=
"deleteSStoreConsumer"
parameterType=
"Long"
>
...
...
@@ -28,18 +39,22 @@
</delete>
<insert
id=
"batchSStoreConsumer"
>
insert into s_store_consumer(consumer_id, store_id) values
insert into s_store_consumer(consumer_id, store_id
,position
) values
<foreach
item=
"item"
index=
"index"
collection=
"list"
separator=
","
>
(#{item.consumerId},#{item.storeId})
(#{item.consumerId},#{item.storeId}
,#{item.position}
)
</foreach>
</insert>
<delete
id=
"deleteInfo"
parameterType=
"SStoreConsumer"
>
delete from s_store_consumer where consumer_id=#{consumerId} and store_id=#{storeId}
delete
from s_store_consumer
where consumer_id = #{consumerId}
and store_id = #{storeId}
and position = #{position}
</delete>
<delete
id=
"deleteInfos"
>
delete from s_store_consumer where store_id=#{storeId} and consumer_id in
delete from s_store_consumer where store_id=#{storeId} and
position = #{position} and
consumer_id in
<foreach
collection=
"consumerIds"
item=
"consumerId"
open=
"("
separator=
","
close=
")"
>
#{consumerId}
</foreach>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment