修改核销逻辑,赠卡逻辑,增加流量控制
parent
cdede88259
commit
fea21cba52
1
pom.xml
1
pom.xml
|
|
@ -303,6 +303,7 @@
|
|||
|
||||
<!-- 加入微信sdk-->
|
||||
<module>wxpay-sdk</module>
|
||||
<module>ruoyi-segchk-test</module>
|
||||
</modules>
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -87,7 +87,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
|
|||
// 过滤请求
|
||||
.authorizeRequests()
|
||||
// 对于登录login 验证码captchaImage 允许匿名访问
|
||||
.antMatchers("/login", "/captchaImage").anonymous()
|
||||
.antMatchers("/login", "/captchaImage", "/test/user/**").anonymous()
|
||||
.antMatchers(
|
||||
HttpMethod.GET,
|
||||
"/*.html",
|
||||
|
|
|
|||
|
|
@ -0,0 +1,10 @@
|
|||
package com.ruoyi.security.web.service;
|
||||
|
||||
public interface AdminSchedule {
|
||||
|
||||
/**
|
||||
* 将redis中商家流量缓存到数据库中
|
||||
* @author seg_yinzy
|
||||
*/
|
||||
int flushCount2DB();
|
||||
}
|
||||
|
|
@ -0,0 +1,254 @@
|
|||
package com.ruoyi.security.web.service;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.common.utils.RedisUtil;
|
||||
import com.ruoyi.common.utils.StringUtils;
|
||||
import com.ruoyi.segchk.domain.SegchkFlushCnt;
|
||||
import com.ruoyi.segchk.domain.SegchkProviderMgt;
|
||||
import com.ruoyi.segchk.domain.SegchkStoreCntCtrl;
|
||||
import com.ruoyi.segchk.domain.SimpleListObj;
|
||||
import com.ruoyi.segchk.service.ISegchkProviderMgtService;
|
||||
import com.ruoyi.segchk.service.ISegchkStoreBasicInfoService;
|
||||
import com.ruoyi.segchk.service.ISegchkStoreCntCtrlService;
|
||||
import com.ruoyi.segchk.utils.RateRandomNumber;
|
||||
import javafx.util.Pair;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import javax.annotation.Resource;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ConcurrentMap;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import static java.util.stream.Collectors.*;
|
||||
|
||||
@Component
|
||||
public class AdminScheduleImpl implements AdminSchedule {
|
||||
private static final Logger log = LoggerFactory.getLogger(AdminScheduleImpl.class);
|
||||
|
||||
@Resource
|
||||
private RedisUtil redisUtil;
|
||||
|
||||
@Resource
|
||||
private ISegchkProviderMgtService segchkProviderMgtService;
|
||||
|
||||
@Resource
|
||||
private ISegchkStoreBasicInfoService segchkStoreBasicInfoService;
|
||||
|
||||
@Resource
|
||||
private ISegchkStoreCntCtrlService segchkStoreCntCtrlService;
|
||||
|
||||
@PostConstruct
|
||||
public void init(){
|
||||
loadAllWechatCnt();
|
||||
}
|
||||
|
||||
private void loadAllWechatCnt() {
|
||||
log.debug("loadAllWechatCnt is called");
|
||||
List<SegchkStoreCntCtrl> segchkStoreCntCtrls = segchkStoreCntCtrlService.selectSegchkStoreCntCtrlListByRecent();
|
||||
int ret = segchkStoreCntCtrlService.invalidateByOutId(segchkStoreCntCtrls.parallelStream().map(v -> v.getCntId()).collect(toList()));
|
||||
Map<String, Object> collectMap = get2RedisMap(segchkStoreCntCtrls, 0);
|
||||
redisUtil.hmset("wechatCount", collectMap);
|
||||
collectMap = get2RedisMap(segchkStoreCntCtrls, 1);
|
||||
redisUtil.hmset("wechatCount1", collectMap);
|
||||
}
|
||||
|
||||
private Map<String, Object> get2RedisMap(List<SegchkStoreCntCtrl> segchkStoreCntCtrls, int flag) {
|
||||
List<Map> mapList = segchkStoreCntCtrls.parallelStream().map(v -> v.getRedisMap(flag)).collect(Collectors.toList());
|
||||
return (Map<String, Object>) mapList
|
||||
.stream()
|
||||
.flatMap(v -> v.entrySet().stream())
|
||||
.map(v -> (Map.Entry<String, Integer>) v)
|
||||
.collect(Collectors.toMap(
|
||||
v1 -> ((Map.Entry<String, Integer>) v1).getKey()
|
||||
, v1 -> ((Map.Entry<String, Integer>) v1).getValue()
|
||||
, (m, n) -> m >= n ? m : n))
|
||||
;
|
||||
}
|
||||
|
||||
public AjaxResult dealOpt(int flag, String params){
|
||||
switch (flag) {
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
case 4: {
|
||||
// 刷次数
|
||||
SegchkFlushCnt segchkFlushCnt = JSON.parseObject(params, SegchkFlushCnt.class);
|
||||
if(segchkFlushCnt.getProviderId() == 0L){
|
||||
return AjaxResult.error(StringUtils.format("指定运营商{}", segchkFlushCnt));
|
||||
}
|
||||
return flushCount(flag, segchkFlushCnt) > 0 ? AjaxResult.success() : AjaxResult.error();
|
||||
}
|
||||
case 5: {
|
||||
// 刷新次数缓存到数据库中
|
||||
return flushCount2DB() > 0 ? AjaxResult.success() : AjaxResult.error();
|
||||
}
|
||||
default:
|
||||
throw new IllegalStateException("Unexpected value: " + flag);
|
||||
}
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@Override
|
||||
public int flushCount2DB() {
|
||||
// SegchkStoreCntCtrl
|
||||
Map<Object, Object> wechatCount = redisUtil.hmget("wechatCount");
|
||||
Map<Object, Object> wechatCount1 = redisUtil.hmget("wechatCount1");
|
||||
ConcurrentMap<Long, List<SegchkStoreCntCtrl>> collect2 = Stream.concat(wechatCount.entrySet().stream(), wechatCount1.entrySet().stream()).map(v -> {
|
||||
String[] split = v.getKey().toString().split(":", -1);
|
||||
Integer cnt = (Integer) v.getValue();
|
||||
Long providerId = Long.valueOf(split[1]);
|
||||
Long storeId = Long.valueOf(split[2]);
|
||||
SegchkStoreCntCtrl tmp = new SegchkStoreCntCtrl();
|
||||
tmp.setProviderId(providerId);
|
||||
tmp.setStoreId(storeId);
|
||||
if (split[0].equalsIgnoreCase("browse_cnt")) {
|
||||
tmp.setBrowseCnt(cnt);
|
||||
} else if (split[0].equalsIgnoreCase("collect_cnt")) {
|
||||
tmp.setCollectCnt(cnt);
|
||||
} else if (split[0].equalsIgnoreCase("book_cnt")) {
|
||||
tmp.setBookCnt(cnt);
|
||||
} else if (split[0].equalsIgnoreCase("browse_cnt1")) {
|
||||
tmp.setBrowseCnt1(cnt);
|
||||
} else if (split[0].equalsIgnoreCase("collect_cnt1")) {
|
||||
tmp.setCollectCnt1(cnt);
|
||||
} else if (split[0].equalsIgnoreCase("book_cnt1")) {
|
||||
tmp.setBookCnt1(cnt);
|
||||
}
|
||||
return tmp;
|
||||
}).parallel().collect(Collectors.groupingByConcurrent(v -> v.getStoreId(), Collectors.toList()));
|
||||
List<SegchkStoreCntCtrl> segchkStoreCntCtrlList = collect2.entrySet().parallelStream().map(entry -> {
|
||||
Optional<SegchkStoreCntCtrl> reduce = entry.getValue().stream().reduce((ret, item) -> {
|
||||
SegchkStoreCntCtrl tmp = ObjectUtils.isEmpty(ret) ? new SegchkStoreCntCtrl() : ret;
|
||||
if (!ObjectUtils.isEmpty(item.getProviderId())) {
|
||||
tmp.setProviderId(item.getProviderId());
|
||||
}
|
||||
if (!ObjectUtils.isEmpty(item.getStoreId())) {
|
||||
tmp.setStoreId(item.getStoreId());
|
||||
}
|
||||
if (!ObjectUtils.isEmpty(item.getBookCnt())) {
|
||||
tmp.setBookCnt(item.getBookCnt());
|
||||
}
|
||||
if (!ObjectUtils.isEmpty(item.getBrowseCnt())) {
|
||||
tmp.setBrowseCnt(item.getBrowseCnt());
|
||||
}
|
||||
if (!ObjectUtils.isEmpty(item.getCollectCnt())) {
|
||||
tmp.setCollectCnt(item.getCollectCnt());
|
||||
}
|
||||
if (!ObjectUtils.isEmpty(item.getBookCnt1())) {
|
||||
tmp.setBookCnt1(item.getBookCnt1());
|
||||
}
|
||||
if (!ObjectUtils.isEmpty(item.getBrowseCnt1())) {
|
||||
tmp.setBrowseCnt1(item.getBrowseCnt1());
|
||||
}
|
||||
if (!ObjectUtils.isEmpty(item.getCollectCnt1())) {
|
||||
tmp.setCollectCnt1(item.getCollectCnt1());
|
||||
}
|
||||
return tmp;
|
||||
});
|
||||
return reduce;
|
||||
}).filter(opt -> opt.isPresent()).map(opt -> opt.get()).collect(Collectors.toList());
|
||||
// Set<Object> wechatCountRecord = redisUtil.sGet("wechatCountRecord");
|
||||
// return segchkStoreCntCtrlService.flushCount2DB(segchkStoreCntCtrlList);
|
||||
Pair<Integer, Object> ret = segchkStoreCntCtrlService.addWechatCntBatch(segchkStoreCntCtrlList);
|
||||
int update_ret = 1;
|
||||
if(!ObjectUtils.isEmpty(ret.getValue())) {
|
||||
Map<Long, Long> map = (Map<Long, Long>) ret.getValue();
|
||||
update_ret = segchkStoreCntCtrlService.invalidateByStore(map);
|
||||
}
|
||||
return ret.getKey();/**/
|
||||
}
|
||||
|
||||
/**
|
||||
* @param flag 刷新标识 1、浏览次数, 2、收藏次数,3、预约次数
|
||||
* @param segchkFlushCnt 从接口层获取的请求参数。运营商,商家列表,单次刷新次数,概率
|
||||
* @return
|
||||
*/
|
||||
private int flushCount(int flag, SegchkFlushCnt segchkFlushCnt) {
|
||||
Long providerId = segchkFlushCnt.getProviderId();
|
||||
SegchkProviderMgt segchkProviderMgt = segchkProviderMgtService.selectSegchkProviderMgtByProviderId(providerId);
|
||||
if(ObjectUtils.isEmpty(segchkProviderMgt)){
|
||||
log.error(StringUtils.format("刷新指定的运营商未找到 {}", providerId));
|
||||
return 0;
|
||||
}
|
||||
List<SimpleListObj> storeList = segchkStoreBasicInfoService.selectSegchkStoreSimpleList(providerId);
|
||||
ArrayList<Long> stores = segchkFlushCnt.getField();
|
||||
if(ObjectUtils.isEmpty(storeList)){
|
||||
log.warn(StringUtils.format("运营商【{}】无在线商家", providerId));
|
||||
return 0;
|
||||
}
|
||||
List<Long> storeIdsDB = storeList.parallelStream().map(v -> Long.valueOf(v.getKey())).collect(toList());
|
||||
List<Long> storeNotDB = ObjectUtils.isEmpty(stores) ? null : stores.stream().filter(v -> !storeIdsDB.contains(v)).collect(toList());
|
||||
if(!ObjectUtils.isEmpty(storeNotDB)){
|
||||
log.error(StringUtils.format("运营商【{}】无商家 {}", providerId, StringUtils.join(storeNotDB, ",")));
|
||||
return 0;
|
||||
}
|
||||
stores = ObjectUtils.isEmpty(stores) ? (ArrayList<Long>) storeIdsDB : stores;
|
||||
switch (flag) {
|
||||
case 1: {
|
||||
// 刷新浏览数
|
||||
List<Long> wechatCount = stores.parallelStream().filter(v -> {
|
||||
boolean flushOpt = true;
|
||||
if (Double.doubleToLongBits(segchkFlushCnt.getProbability()) < Double.doubleToLongBits(100.00)) {
|
||||
double v1 = RateRandomNumber.produceRandomNumber(0.01, 1.00);
|
||||
flushOpt = Double.doubleToLongBits(v1) >= Double.doubleToLongBits(segchkFlushCnt.getProbability() / 100.00) ? true : false;
|
||||
}
|
||||
if (flushOpt) {
|
||||
long ret = (long) redisUtil.hincr("wechatCount1", "browse_cnt1:" + providerId + ":" + v, segchkFlushCnt.getStep());
|
||||
long ret1 = redisUtil.sSet("wechatCountRecord", v);
|
||||
}
|
||||
return flushOpt;
|
||||
}).collect(toList());
|
||||
log.debug(StringUtils.format("flushCount browse_cnt with provider[{}] for stores[{}]", providerId, StringUtils.join(wechatCount)));
|
||||
return wechatCount.size();
|
||||
}
|
||||
case 2: {
|
||||
// 刷新收藏数
|
||||
List<Long> wechatCount = stores.parallelStream().filter(v -> {
|
||||
boolean flushOpt = true;
|
||||
if (Double.doubleToLongBits(segchkFlushCnt.getProbability()) < Double.doubleToLongBits(100.00)) {
|
||||
double v1 = RateRandomNumber.produceRandomNumber(0.01, 1.00);
|
||||
flushOpt = Double.doubleToLongBits(v1) >= Double.doubleToLongBits(segchkFlushCnt.getProbability() / 100.00) ? true : false;
|
||||
}
|
||||
if (flushOpt) {
|
||||
long ret = (long) redisUtil.hincr("wechatCount1", "collect_cnt1:" + providerId + ":" + v, segchkFlushCnt.getStep());
|
||||
long ret1 = redisUtil.sSet("wechatCountRecord", v);
|
||||
}
|
||||
return flushOpt;
|
||||
}).collect(toList());
|
||||
log.debug(StringUtils.format("flushCount collect_cnt with provider[{}] for stores[{}]", providerId, StringUtils.join(wechatCount)));
|
||||
return wechatCount.size();
|
||||
}
|
||||
case 3: {
|
||||
// 刷新预约数
|
||||
List<Long> wechatCount = stores.parallelStream().filter(v -> {
|
||||
boolean flushOpt = true;
|
||||
if (Double.doubleToLongBits(segchkFlushCnt.getProbability()) < Double.doubleToLongBits(100.00)) {
|
||||
double v1 = RateRandomNumber.produceRandomNumber(0.01, 1.00);
|
||||
flushOpt = Double.doubleToLongBits(v1) >= Double.doubleToLongBits(segchkFlushCnt.getProbability() / 100.00) ? true : false;
|
||||
}
|
||||
if (flushOpt) {
|
||||
long ret = (long) redisUtil.hincr("wechatCount1", "book_cnt1:" + providerId + ":" + v, segchkFlushCnt.getStep());
|
||||
long ret1 = redisUtil.sSet("wechatCountRecord", v);
|
||||
}
|
||||
return flushOpt;
|
||||
}).collect(toList());
|
||||
log.debug(StringUtils.format("flushCount book_cnt with provider[{}] for stores[{}]", providerId, StringUtils.join(wechatCount)));
|
||||
return wechatCount.size();
|
||||
}
|
||||
case 4: {
|
||||
// 刷新核销次数
|
||||
log.debug("will open flush check");
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,103 @@
|
|||
package com.ruoyi.web.controller.segchk;
|
||||
|
||||
import java.util.List;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.PutMapping;
|
||||
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import com.ruoyi.common.annotation.Log;
|
||||
import com.ruoyi.common.core.controller.BaseController;
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.common.enums.BusinessType;
|
||||
import com.ruoyi.segchk.domain.SegchkProviderCntCtrl;
|
||||
import com.ruoyi.segchk.service.ISegchkProviderCntCtrlService;
|
||||
import com.ruoyi.common.utils.poi.ExcelUtil;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 运营商流量管控Controller
|
||||
*
|
||||
* @author yinzhiying
|
||||
* @date 2022-07-17
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/segchk/segchk_provider_cnt_ctrl")
|
||||
public class SegchkProviderCntCtrlController extends BaseController
|
||||
{
|
||||
@Autowired
|
||||
private ISegchkProviderCntCtrlService segchkProviderCntCtrlService;
|
||||
|
||||
/**
|
||||
* 查询运营商流量管控列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('segchk:segchk_provider_cnt_ctrl:list')")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo list(SegchkProviderCntCtrl segchkProviderCntCtrl)
|
||||
{
|
||||
startPage();
|
||||
List<SegchkProviderCntCtrl> list = segchkProviderCntCtrlService.selectSegchkProviderCntCtrlList(segchkProviderCntCtrl);
|
||||
return getDataTable(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出运营商流量管控列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('segchk:segchk_provider_cnt_ctrl:export')")
|
||||
@Log(title = "运营商流量管控", businessType = BusinessType.EXPORT)
|
||||
@GetMapping("/export")
|
||||
public AjaxResult export(SegchkProviderCntCtrl segchkProviderCntCtrl)
|
||||
{
|
||||
List<SegchkProviderCntCtrl> list = segchkProviderCntCtrlService.selectSegchkProviderCntCtrlList(segchkProviderCntCtrl);
|
||||
ExcelUtil<SegchkProviderCntCtrl> util = new ExcelUtil<SegchkProviderCntCtrl>(SegchkProviderCntCtrl.class);
|
||||
return util.exportExcel(list, "运营商流量管控数据");
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取运营商流量管控详细信息
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('segchk:segchk_provider_cnt_ctrl:query')")
|
||||
@GetMapping(value = "/{cntId}")
|
||||
public AjaxResult getInfo(@PathVariable("cntId") Long cntId)
|
||||
{
|
||||
return AjaxResult.success(segchkProviderCntCtrlService.selectSegchkProviderCntCtrlByCntId(cntId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增运营商流量管控
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('segchk:segchk_provider_cnt_ctrl:add')")
|
||||
@Log(title = "运营商流量管控", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public AjaxResult add(@RequestBody SegchkProviderCntCtrl segchkProviderCntCtrl)
|
||||
{
|
||||
return toAjax(segchkProviderCntCtrlService.insertSegchkProviderCntCtrl(segchkProviderCntCtrl));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改运营商流量管控
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('segchk:segchk_provider_cnt_ctrl:edit')")
|
||||
@Log(title = "运营商流量管控", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public AjaxResult edit(@RequestBody SegchkProviderCntCtrl segchkProviderCntCtrl)
|
||||
{
|
||||
return toAjax(segchkProviderCntCtrlService.updateSegchkProviderCntCtrl(segchkProviderCntCtrl));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除运营商流量管控
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('segchk:segchk_provider_cnt_ctrl:remove')")
|
||||
@Log(title = "运营商流量管控", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{cntIds}")
|
||||
public AjaxResult remove(@PathVariable Long[] cntIds)
|
||||
{
|
||||
return toAjax(segchkProviderCntCtrlService.deleteSegchkProviderCntCtrlByCntIds(cntIds));
|
||||
}
|
||||
}
|
||||
|
|
@ -1,24 +1,16 @@
|
|||
package com.ruoyi.web.controller.segchk;
|
||||
|
||||
import com.ruoyi.common.annotation.Log;
|
||||
import com.ruoyi.common.annotation.UnAuth;
|
||||
import com.ruoyi.common.core.controller.BaseController;
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.common.core.domain.BaseEntity;
|
||||
import com.ruoyi.common.core.domain.entity.SysUser;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
import com.ruoyi.common.enums.BusinessType;
|
||||
import com.ruoyi.common.utils.StringUtils;
|
||||
import com.ruoyi.common.utils.poi.ExcelUtil;
|
||||
import com.ruoyi.segchk.domain.*;
|
||||
import com.ruoyi.segchk.service.*;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
/**
|
||||
* seg首页轮播图管理Controller
|
||||
|
|
@ -252,53 +244,4 @@ public class SegchkSimpleListController extends BaseController
|
|||
return getDataTable(collect);
|
||||
}
|
||||
|
||||
|
||||
private class SimpleListObj extends BaseEntity {
|
||||
private String providerId;
|
||||
private String key;
|
||||
private String value;
|
||||
private String imgUrl;
|
||||
|
||||
public String getProviderId() {
|
||||
return providerId;
|
||||
}
|
||||
|
||||
public void setProviderId(String providerId) {
|
||||
this.providerId = providerId;
|
||||
}
|
||||
|
||||
public String getKey() {
|
||||
return key;
|
||||
}
|
||||
|
||||
public void setKey(String key) {
|
||||
this.key = key;
|
||||
}
|
||||
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public void setValue(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public String getImgUrl() {
|
||||
return imgUrl;
|
||||
}
|
||||
|
||||
public void setImgUrl(String imgUrl) {
|
||||
this.imgUrl = imgUrl;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "SimpleListObj{" +
|
||||
"providerId='" + providerId + '\'' +
|
||||
", key='" + key + '\'' +
|
||||
", value='" + value + '\'' +
|
||||
", imgUrl='" + imgUrl + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,13 +1,14 @@
|
|||
package com.ruoyi.web.controller.segchk;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import com.ruoyi.common.core.domain.entity.SysUser;
|
||||
import com.ruoyi.common.core.domain.model.LoginUser;
|
||||
import com.ruoyi.segchk.domain.SegchkStoreCntCtrl;
|
||||
import com.ruoyi.segchk.domain.SegchkStoreVrInfo;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.util.StringUtils;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.PutMapping;
|
||||
|
|
@ -37,7 +38,7 @@ public class SegchkStoreBasicInfoController extends BaseController
|
|||
{
|
||||
@Autowired
|
||||
private ISegchkStoreBasicInfoService segchkStoreBasicInfoService;
|
||||
|
||||
|
||||
/**
|
||||
* 查询seg商家基础信息列表
|
||||
*/
|
||||
|
|
@ -59,7 +60,7 @@ public class SegchkStoreBasicInfoController extends BaseController
|
|||
System.out.println("segchk:segchk_store_basic_info:list userinfo:" + sysUser.getRoleId());
|
||||
sysUser.getRoles().forEach(it -> System.out.println(it.toString()));
|
||||
startPage();
|
||||
List<SegchkStoreBasicInfo> list = segchkStoreBasicInfoService.selectSegchkStoreBasicInfoList(segchkStoreBasicInfo);
|
||||
List<SegchkStoreBasicInfo> list = segchkStoreBasicInfoService.selectSegchkStoreBasicInfoListWithCnt(segchkStoreBasicInfo);
|
||||
return getDataTable(list);
|
||||
}
|
||||
|
||||
|
|
@ -210,4 +211,85 @@ public class SegchkStoreBasicInfoController extends BaseController
|
|||
{
|
||||
return toAjax(segchkStoreBasicInfoService.deleteSegchkStoreBasicInfoByStoreIds(storeIds));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改seg商家VR
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('segchk:segchk_store_basic_info:edit')")
|
||||
// @UnAuth
|
||||
@Log(title = "seg商家基础信息", businessType = BusinessType.UPDATE)
|
||||
@PutMapping("update_vr")
|
||||
public AjaxResult update_vr(@RequestBody SegchkStoreVrInfo segchkStoreVrInfo)
|
||||
{
|
||||
if(StringUtils.isEmpty(segchkStoreVrInfo.getRemark())) {
|
||||
SysUser sysUser = getLoginUser().getUser();
|
||||
if (sysUser.getUserId() == 1) {
|
||||
// 说明是超级管理员
|
||||
;
|
||||
} else {
|
||||
segchkStoreVrInfo.setProviderId(sysUser.getProviderId());
|
||||
}
|
||||
}
|
||||
logger.debug("update vr with: {}", segchkStoreVrInfo.toString());
|
||||
return toAjax(segchkStoreBasicInfoService.updateSegchkStoreVr(segchkStoreVrInfo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加seg商家VR
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('segchk:segchk_store_basic_info:edit')")
|
||||
// @UnAuth
|
||||
@Log(title = "seg商家VR信息", businessType = BusinessType.INSERT)
|
||||
@PutMapping("add_vr")
|
||||
public AjaxResult AddVR(@RequestBody SegchkStoreVrInfo segchkStoreVrInfo)
|
||||
{
|
||||
if(StringUtils.isEmpty(segchkStoreVrInfo.getRemark())) {
|
||||
SysUser sysUser = getLoginUser().getUser();
|
||||
if (sysUser.getUserId() == 1) {
|
||||
// 说明是超级管理员
|
||||
;
|
||||
} else {
|
||||
segchkStoreVrInfo.setProviderId(sysUser.getProviderId());
|
||||
}
|
||||
}
|
||||
logger.debug("add vr with: {}", segchkStoreVrInfo.toString());
|
||||
return toAjax(segchkStoreBasicInfoService.addSegchkStoreVr(segchkStoreVrInfo));
|
||||
}
|
||||
|
||||
@PreAuthorize("@ss.hasPermi('segchk:segchk_store_basic_info:edit')")
|
||||
@Log(title = "seg商家基础信息", businessType = BusinessType.DELETE)
|
||||
// @PutMapping("delete_vr")
|
||||
@DeleteMapping("delete_vr/{storeId}")
|
||||
public AjaxResult DeleteVr(@PathVariable Long storeId)
|
||||
{
|
||||
SegchkStoreVrInfo segchkStoreVrInfo = new SegchkStoreVrInfo();
|
||||
SysUser sysUser = getLoginUser().getUser();
|
||||
if (sysUser.getUserId() == 1) {
|
||||
// 说明是超级管理员
|
||||
;
|
||||
} else {
|
||||
segchkStoreVrInfo.setProviderId(sysUser.getProviderId());
|
||||
}
|
||||
logger.debug("delete vr with: {}", storeId);
|
||||
segchkStoreVrInfo.setStoreId(storeId);
|
||||
return toAjax(segchkStoreBasicInfoService.deleteSegchkStoreVr(segchkStoreVrInfo));
|
||||
}
|
||||
|
||||
@PreAuthorize("@ss.hasPermi('segchk:segchk_store_basic_info:edit')")
|
||||
@Log(title = "seg商家基础信息", businessType = BusinessType.UPDATE)
|
||||
// @PutMapping("delete_vr")
|
||||
@PutMapping("update_count")
|
||||
public AjaxResult updateCount(@RequestBody SegchkStoreCntCtrl segchkStoreCntCtrl)
|
||||
{
|
||||
SysUser sysUser = getLoginUser().getUser();
|
||||
if (sysUser.getUserId() == 1) {
|
||||
// 说明是超级管理员
|
||||
;
|
||||
} else {
|
||||
segchkStoreCntCtrl.setProviderId(sysUser.getProviderId());
|
||||
}
|
||||
logger.debug("update store count with: {}", segchkStoreCntCtrl.toString());
|
||||
|
||||
return toAjax(segchkStoreBasicInfoService.updateSegchkStoreCnt2Redis(segchkStoreCntCtrl));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,17 +1,12 @@
|
|||
package com.ruoyi.web.controller.tool;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.PutMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import java.util.*;
|
||||
|
||||
import com.ruoyi.common.annotation.RepeatSubmit;
|
||||
import com.ruoyi.common.core.redis.RedisCache;
|
||||
import com.ruoyi.security.web.service.AdminScheduleImpl;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import com.ruoyi.common.core.controller.BaseController;
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.common.utils.StringUtils;
|
||||
|
|
@ -32,6 +27,12 @@ import io.swagger.annotations.ApiOperation;
|
|||
@RequestMapping("/test/user")
|
||||
public class TestController extends BaseController
|
||||
{
|
||||
@Autowired
|
||||
private RedisCache redisService;
|
||||
|
||||
@Autowired
|
||||
private AdminScheduleImpl schedule;
|
||||
|
||||
private final static Map<Integer, UserEntity> users = new LinkedHashMap<Integer, UserEntity>();
|
||||
{
|
||||
users.put(1, new UserEntity(1, "admin", "admin123", "15888888888"));
|
||||
|
|
@ -109,6 +110,37 @@ public class TestController extends BaseController
|
|||
return error("用户不存在");
|
||||
}
|
||||
}
|
||||
|
||||
@RepeatSubmit
|
||||
@ApiOperation("更新redis缓存")
|
||||
@PutMapping("/updateredis")
|
||||
@ResponseBody
|
||||
public AjaxResult updateredis(String key, String db, String value) throws ClassNotFoundException {
|
||||
if(db.equals("PROVIDER_INFO:FIRST_CHECK_REWARD") || db.equals("BASE_INFO_SET:")){
|
||||
|
||||
redisService.setCacheObject(db + ":" + key, new Boolean(value));
|
||||
}
|
||||
// redisService.setCacheObject(key, value);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@ApiOperation("获取Redis")
|
||||
@GetMapping("/getredis")
|
||||
public AjaxResult getredis(String key, String db)
|
||||
{
|
||||
if(db.equals("PROVIDER_INFO:FIRST_CHECK_REWARD") || db.equals("BASE_INFO_SET:")){
|
||||
Object cacheObject = redisService.getCacheObject(db + ":" + key);
|
||||
Boolean aBoolean = new Boolean(String.valueOf(cacheObject));
|
||||
return AjaxResult.success(aBoolean);
|
||||
}
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@PostMapping("/testquartz")
|
||||
public AjaxResult testquartz(Integer reqFlag, String params){
|
||||
logger.debug("testquartz get req with {} {}", reqFlag, params);
|
||||
return schedule.dealOpt(reqFlag, params);
|
||||
}
|
||||
}
|
||||
|
||||
@ApiModel(value = "UserEntity", description = "用户实体")
|
||||
|
|
|
|||
|
|
@ -0,0 +1,123 @@
|
|||
# 项目相关配置
|
||||
ruoyi:
|
||||
# 名称
|
||||
name: RuoYi
|
||||
# 版本
|
||||
version: 3.6.0
|
||||
# 版权年份
|
||||
copyrightYear: 2021
|
||||
# 实例演示开关
|
||||
demoEnabled: true
|
||||
# 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)
|
||||
profile: C:/ruoyi/uploadPath
|
||||
# 获取ip地址开关
|
||||
addressEnabled: false
|
||||
# 验证码类型 math 数组计算 char 字符验证
|
||||
captchaType: math
|
||||
|
||||
# 开发环境配置
|
||||
server:
|
||||
# 服务器的HTTP端口,默认为8080
|
||||
port: 7070
|
||||
servlet:
|
||||
# 应用的访问路径
|
||||
context-path: /
|
||||
tomcat:
|
||||
# tomcat的URI编码
|
||||
uri-encoding: UTF-8
|
||||
# tomcat最大线程数,默认为200
|
||||
max-threads: 800
|
||||
# Tomcat启动初始化的线程数,默认值25
|
||||
min-spare-threads: 30
|
||||
|
||||
# 日志配置
|
||||
logging:
|
||||
level:
|
||||
com.ruoyi: debug
|
||||
org.springframework: warn
|
||||
|
||||
|
||||
# 数据源配置
|
||||
spring:
|
||||
datasource:
|
||||
type: com.alibaba.druid.pool.DruidDataSource
|
||||
driverClassName: com.mysql.cj.jdbc.Driver
|
||||
druid:
|
||||
# 主库数据源
|
||||
master:
|
||||
url: jdbc:mysql://192.168.2.30:8306/kaletest?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&allowMultiQueries=true
|
||||
username: kaletest_yinzy
|
||||
password: XMG2-Rel.2
|
||||
# 从库数据源
|
||||
slave:
|
||||
# 从数据源开关/默认关闭
|
||||
enabled: false
|
||||
url:
|
||||
username:
|
||||
password:
|
||||
# 初始连接数
|
||||
initialSize: 5
|
||||
# 最小连接池数量
|
||||
minIdle: 10
|
||||
# 最大连接池数量
|
||||
maxActive: 20
|
||||
# 配置获取连接等待超时的时间
|
||||
maxWait: 60000
|
||||
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
|
||||
timeBetweenEvictionRunsMillis: 60000
|
||||
# 配置一个连接在池中最小生存的时间,单位是毫秒
|
||||
minEvictableIdleTimeMillis: 300000
|
||||
# 配置一个连接在池中最大生存的时间,单位是毫秒
|
||||
maxEvictableIdleTimeMillis: 900000
|
||||
# 配置检测连接是否有效
|
||||
validationQuery: SELECT 1 FROM DUAL
|
||||
testWhileIdle: true
|
||||
testOnBorrow: false
|
||||
testOnReturn: false
|
||||
webStatFilter:
|
||||
enabled: true
|
||||
statViewServlet:
|
||||
enabled: true
|
||||
# 设置白名单,不填则允许所有访问
|
||||
allow:
|
||||
url-pattern: /druid/*
|
||||
# 控制台管理用户名和密码
|
||||
login-username: ruoyi
|
||||
login-password: 123456
|
||||
filter:
|
||||
stat:
|
||||
enabled: true
|
||||
# 慢SQL记录
|
||||
log-slow-sql: true
|
||||
slow-sql-millis: 1000
|
||||
merge-sql: true
|
||||
wall:
|
||||
config:
|
||||
multi-statement-allow: true
|
||||
# redis 配置
|
||||
redis:
|
||||
# 地址
|
||||
host: 192.168.2.40
|
||||
# 端口,默认为6379
|
||||
port: 63795
|
||||
# 数据库索引
|
||||
database: 3
|
||||
# 密码
|
||||
password: seg_123456
|
||||
# 连接超时时间
|
||||
timeout: 10s
|
||||
lettuce:
|
||||
pool:
|
||||
# 连接池中的最小空闲连接
|
||||
min-idle: 0
|
||||
# 连接池中的最大空闲连接
|
||||
max-idle: 8
|
||||
# 连接池的最大数据库连接数
|
||||
max-active: 8
|
||||
# #连接池最大阻塞等待时间(使用负值表示没有限制)
|
||||
max-wait: -1ms
|
||||
|
||||
|
||||
segchk:
|
||||
ctrl:
|
||||
dbbatch: 100
|
||||
|
|
@ -18,7 +18,7 @@ ruoyi:
|
|||
# 开发环境配置
|
||||
server:
|
||||
# 服务器的HTTP端口,默认为8080
|
||||
port: 7070
|
||||
port: 7170
|
||||
servlet:
|
||||
# 应用的访问路径
|
||||
context-path: /
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ spring:
|
|||
# 国际化资源文件路径
|
||||
basename: i18n/messages
|
||||
profiles:
|
||||
active: druid
|
||||
active: dev
|
||||
# 文件上传
|
||||
servlet:
|
||||
multipart:
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"dev": {
|
||||
"name": "value"
|
||||
}
|
||||
}
|
||||
|
|
@ -4,6 +4,8 @@ import java.lang.management.ManagementFactory;
|
|||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import org.apache.commons.lang3.time.DateFormatUtils;
|
||||
|
||||
/**
|
||||
|
|
@ -152,4 +154,31 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
|
|||
// long sec = diff % nd % nh % nm / ns;
|
||||
return day + "天" + hour + "小时" + min + "分钟";
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算两个时间差
|
||||
*/
|
||||
public static Long getDatePoor(Date endDate, Date nowDate, int type)
|
||||
{
|
||||
long nd = 1000 * 24 * 60 * 60;
|
||||
long nh = 1000 * 60 * 60;
|
||||
long nm = 1000 * 60;
|
||||
long ns = 1000;
|
||||
// 获得两个时间的毫秒时间差异
|
||||
long diff = endDate.getTime() - nowDate.getTime();
|
||||
// 计算差多少天
|
||||
long day = diff / nd;
|
||||
// 计算差多少小时
|
||||
long hour = diff % nd / nh;
|
||||
// 计算差多少分钟
|
||||
long min = diff % nd % nh / nm;
|
||||
// 计算差多少秒//输出结果
|
||||
long sec = diff % nd % nh % nm / ns;
|
||||
switch (type){
|
||||
case 0 : return day;
|
||||
case 1 : return hour;
|
||||
case 2 : return min;
|
||||
default: return sec;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -88,4 +88,19 @@ public interface RedisCahceKey {
|
|||
* 社区推广
|
||||
*/
|
||||
String COMMUNITY_BUY_INDEX = "COMMUNITY_BUY_INDEX";
|
||||
/**
|
||||
* 商家状态
|
||||
*/
|
||||
String STORE_STATUS = "STORE_STATUS";
|
||||
/**
|
||||
* 商家状态
|
||||
*/
|
||||
String PROVIDER_INFO = "PROVIDER_INFO";
|
||||
/**
|
||||
* 商家状态
|
||||
*/
|
||||
String ORDER_INFO = "ORDER_INFO";
|
||||
|
||||
// 商家可赠卡标识。只要存在即可赠卡
|
||||
String GIVE_FREE_CARD = "GIVE_FREE_CARD";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,591 @@
|
|||
package com.ruoyi.common.utils;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.redis.connection.RedisConnection;
|
||||
import org.springframework.data.redis.core.Cursor;
|
||||
import org.springframework.data.redis.core.RedisCallback;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.data.redis.core.ScanOptions;
|
||||
import org.springframework.data.redis.serializer.RedisSerializer;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/**
|
||||
* redis 工具类
|
||||
* @Author Scott
|
||||
*
|
||||
*/
|
||||
@Component
|
||||
public class RedisUtil {
|
||||
|
||||
@Autowired
|
||||
public RedisTemplate redisTemplate;
|
||||
// private RedisTemplate<String, Object> redisTemplate;
|
||||
|
||||
/**
|
||||
* 指定缓存失效时间
|
||||
*
|
||||
* @param key 键
|
||||
* @param time 时间(秒)
|
||||
* @return
|
||||
*/
|
||||
public boolean expire(String key, long time) {
|
||||
try {
|
||||
if (time > 0) {
|
||||
redisTemplate.expire(key, time, TimeUnit.SECONDS);
|
||||
}
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据key 获取过期时间
|
||||
*
|
||||
* @param key 键 不能为null
|
||||
* @return 时间(秒) 返回0代表为永久有效
|
||||
*/
|
||||
public long getExpire(String key) {
|
||||
return redisTemplate.getExpire(key, TimeUnit.SECONDS);
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断key是否存在
|
||||
*
|
||||
* @param key 键
|
||||
* @return true 存在 false不存在
|
||||
*/
|
||||
public boolean hasKey(String key) {
|
||||
try {
|
||||
return redisTemplate.hasKey(key);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除缓存
|
||||
*
|
||||
* @param key 可以传一个值 或多个
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public void del(String... key) {
|
||||
if (key != null && key.length > 0) {
|
||||
if (key.length == 1) {
|
||||
redisTemplate.delete(key[0]);
|
||||
} else {
|
||||
//springboot2.4后用法
|
||||
redisTemplate.delete(Arrays.asList(key));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ============================String=============================
|
||||
/**
|
||||
* 普通缓存获取
|
||||
*
|
||||
* @param key 键
|
||||
* @return 值
|
||||
*/
|
||||
public Object get(String key) {
|
||||
return key == null ? null : redisTemplate.opsForValue().get(key);
|
||||
}
|
||||
|
||||
/**
|
||||
* 普通缓存放入
|
||||
*
|
||||
* @param key 键
|
||||
* @param value 值
|
||||
* @return true成功 false失败
|
||||
*/
|
||||
public boolean set(String key, Object value) {
|
||||
try {
|
||||
redisTemplate.opsForValue().set(key, value);
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 普通缓存放入并设置时间
|
||||
*
|
||||
* @param key 键
|
||||
* @param value 值
|
||||
* @param time 时间(秒) time要大于0 如果time小于等于0 将设置无限期
|
||||
* @return true成功 false 失败
|
||||
*/
|
||||
public boolean set(String key, Object value, long time) {
|
||||
try {
|
||||
if (time > 0) {
|
||||
redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS);
|
||||
} else {
|
||||
set(key, value);
|
||||
}
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 递增
|
||||
*
|
||||
* @param key 键
|
||||
* @param delta 要增加几(大于0)
|
||||
* @return
|
||||
*/
|
||||
public long incr(String key, long delta) {
|
||||
if (delta < 0) {
|
||||
throw new RuntimeException("递增因子必须大于0");
|
||||
}
|
||||
return redisTemplate.opsForValue().increment(key, delta);
|
||||
}
|
||||
|
||||
/**
|
||||
* 递减
|
||||
*
|
||||
* @param key 键
|
||||
* @param delta 要减少几(小于0)
|
||||
* @return
|
||||
*/
|
||||
public long decr(String key, long delta) {
|
||||
if (delta < 0) {
|
||||
throw new RuntimeException("递减因子必须大于0");
|
||||
}
|
||||
return redisTemplate.opsForValue().increment(key, -delta);
|
||||
}
|
||||
|
||||
// ================================Map=================================
|
||||
/**
|
||||
* HashGet
|
||||
*
|
||||
* @param key 键 不能为null
|
||||
* @param item 项 不能为null
|
||||
* @return 值
|
||||
*/
|
||||
public Object hget(String key, String item) {
|
||||
return redisTemplate.opsForHash().get(key, item);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取hashKey对应的所有键值
|
||||
*
|
||||
* @param key 键
|
||||
* @return 对应的多个键值
|
||||
*/
|
||||
public Map<Object, Object> hmget(String key) {
|
||||
return redisTemplate.opsForHash().entries(key);
|
||||
}
|
||||
|
||||
/**
|
||||
* HashSet
|
||||
*
|
||||
* @param key 键
|
||||
* @param map 对应多个键值
|
||||
* @return true 成功 false 失败
|
||||
*/
|
||||
public boolean hmset(String key, Map<String, Object> map) {
|
||||
try {
|
||||
redisTemplate.opsForHash().putAll(key, map);
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* HashSet 并设置时间
|
||||
*
|
||||
* @param key 键
|
||||
* @param map 对应多个键值
|
||||
* @param time 时间(秒)
|
||||
* @return true成功 false失败
|
||||
*/
|
||||
public boolean hmset(String key, Map<String, Object> map, long time) {
|
||||
try {
|
||||
redisTemplate.opsForHash().putAll(key, map);
|
||||
if (time > 0) {
|
||||
expire(key, time);
|
||||
}
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 向一张hash表中放入数据,如果不存在将创建
|
||||
*
|
||||
* @param key 键
|
||||
* @param item 项
|
||||
* @param value 值
|
||||
* @return true 成功 false失败
|
||||
*/
|
||||
public boolean hset(String key, String item, Object value) {
|
||||
try {
|
||||
redisTemplate.opsForHash().put(key, item, value);
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 向一张hash表中放入数据,如果不存在将创建
|
||||
*
|
||||
* @param key 键
|
||||
* @param item 项
|
||||
* @param value 值
|
||||
* @param time 时间(秒) 注意:如果已存在的hash表有时间,这里将会替换原有的时间
|
||||
* @return true 成功 false失败
|
||||
*/
|
||||
public boolean hset(String key, String item, Object value, long time) {
|
||||
try {
|
||||
redisTemplate.opsForHash().put(key, item, value);
|
||||
if (time > 0) {
|
||||
expire(key, time);
|
||||
}
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除hash表中的值
|
||||
*
|
||||
* @param key 键 不能为null
|
||||
* @param item 项 可以使多个 不能为null
|
||||
*/
|
||||
public void hdel(String key, Object... item) {
|
||||
redisTemplate.opsForHash().delete(key, item);
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断hash表中是否有该项的值
|
||||
*
|
||||
* @param key 键 不能为null
|
||||
* @param item 项 不能为null
|
||||
* @return true 存在 false不存在
|
||||
*/
|
||||
public boolean hHasKey(String key, String item) {
|
||||
return redisTemplate.opsForHash().hasKey(key, item);
|
||||
}
|
||||
|
||||
/**
|
||||
* hash递增 如果不存在,就会创建一个 并把新增后的值返回
|
||||
*
|
||||
* @param key 键
|
||||
* @param item 项
|
||||
* @param by 要增加几(大于0)
|
||||
* @return
|
||||
*/
|
||||
public double hincr(String key, String item, double by) {
|
||||
return redisTemplate.opsForHash().increment(key, item, by);
|
||||
}
|
||||
|
||||
public double hincr(String key, String item, long by) {
|
||||
return redisTemplate.opsForHash().increment(key, item, by);
|
||||
}
|
||||
|
||||
/**
|
||||
* hash递减
|
||||
*
|
||||
* @param key 键
|
||||
* @param item 项
|
||||
* @param by 要减少记(小于0)
|
||||
* @return
|
||||
*/
|
||||
public double hdecr(String key, String item, double by) {
|
||||
return redisTemplate.opsForHash().increment(key, item, -by);
|
||||
}
|
||||
|
||||
// ============================set=============================
|
||||
/**
|
||||
* 根据key获取Set中的所有值
|
||||
*
|
||||
* @param key 键
|
||||
* @return
|
||||
*/
|
||||
public Set<Object> sGet(String key) {
|
||||
try {
|
||||
return redisTemplate.opsForSet().members(key);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据value从一个set中查询,是否存在
|
||||
*
|
||||
* @param key 键
|
||||
* @param value 值
|
||||
* @return true 存在 false不存在
|
||||
*/
|
||||
public boolean sHasKey(String key, Object value) {
|
||||
try {
|
||||
return redisTemplate.opsForSet().isMember(key, value);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 将数据放入set缓存
|
||||
*
|
||||
* @param key 键
|
||||
* @param values 值 可以是多个
|
||||
* @return 成功个数
|
||||
*/
|
||||
public long sSet(String key, Object... values) {
|
||||
try {
|
||||
return redisTemplate.opsForSet().add(key, values);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 将set数据放入缓存
|
||||
*
|
||||
* @param key 键
|
||||
* @param time 时间(秒)
|
||||
* @param values 值 可以是多个
|
||||
* @return 成功个数
|
||||
*/
|
||||
public long sSetAndTime(String key, long time, Object... values) {
|
||||
try {
|
||||
Long count = redisTemplate.opsForSet().add(key, values);
|
||||
if (time > 0) {
|
||||
expire(key, time);
|
||||
}
|
||||
return count;
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取set缓存的长度
|
||||
*
|
||||
* @param key 键
|
||||
* @return
|
||||
*/
|
||||
public long sGetSetSize(String key) {
|
||||
try {
|
||||
return redisTemplate.opsForSet().size(key);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 移除值为value的
|
||||
*
|
||||
* @param key 键
|
||||
* @param values 值 可以是多个
|
||||
* @return 移除的个数
|
||||
*/
|
||||
public long setRemove(String key, Object... values) {
|
||||
try {
|
||||
Long count = redisTemplate.opsForSet().remove(key, values);
|
||||
return count;
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
// ===============================list=================================
|
||||
|
||||
/**
|
||||
* 获取list缓存的内容
|
||||
*
|
||||
* @param key 键
|
||||
* @param start 开始
|
||||
* @param end 结束 0 到 -1代表所有值
|
||||
* @return
|
||||
*/
|
||||
public List<Object> lGet(String key, long start, long end) {
|
||||
try {
|
||||
return redisTemplate.opsForList().range(key, start, end);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取list缓存的长度
|
||||
*
|
||||
* @param key 键
|
||||
* @return
|
||||
*/
|
||||
public long lGetListSize(String key) {
|
||||
try {
|
||||
return redisTemplate.opsForList().size(key);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过索引 获取list中的值
|
||||
*
|
||||
* @param key 键
|
||||
* @param index 索引 index>=0时, 0 表头,1 第二个元素,依次类推;index<0时,-1,表尾,-2倒数第二个元素,依次类推
|
||||
* @return
|
||||
*/
|
||||
public Object lGetIndex(String key, long index) {
|
||||
try {
|
||||
return redisTemplate.opsForList().index(key, index);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 将list放入缓存
|
||||
*
|
||||
* @param key 键
|
||||
* @param value 值
|
||||
* @return
|
||||
*/
|
||||
public boolean lSet(String key, Object value) {
|
||||
try {
|
||||
redisTemplate.opsForList().rightPush(key, value);
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 将list放入缓存
|
||||
*
|
||||
* @param key 键
|
||||
* @param value 值
|
||||
* @param time 时间(秒)
|
||||
* @return
|
||||
*/
|
||||
public boolean lSet(String key, Object value, long time) {
|
||||
try {
|
||||
redisTemplate.opsForList().rightPush(key, value);
|
||||
if (time > 0) {
|
||||
expire(key, time);
|
||||
}
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 将list放入缓存
|
||||
*
|
||||
* @param key 键
|
||||
* @param value 值
|
||||
* @return
|
||||
*/
|
||||
public boolean lSet(String key, List<Object> value) {
|
||||
try {
|
||||
redisTemplate.opsForList().rightPushAll(key, value);
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 将list放入缓存
|
||||
*
|
||||
* @param key 键
|
||||
* @param value 值
|
||||
* @param time 时间(秒)
|
||||
* @return
|
||||
*/
|
||||
public boolean lSet(String key, List<Object> value, long time) {
|
||||
try {
|
||||
redisTemplate.opsForList().rightPushAll(key, value);
|
||||
if (time > 0) {
|
||||
expire(key, time);
|
||||
}
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据索引修改list中的某条数据
|
||||
*
|
||||
* @param key 键
|
||||
* @param index 索引
|
||||
* @param value 值
|
||||
* @return
|
||||
*/
|
||||
public boolean lUpdateIndex(String key, long index, Object value) {
|
||||
try {
|
||||
redisTemplate.opsForList().set(key, index, value);
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 移除N个值为value
|
||||
*
|
||||
* @param key 键
|
||||
* @param count 移除多少个
|
||||
* @param value 值
|
||||
* @return 移除的个数
|
||||
*/
|
||||
public long lRemove(String key, long count, Object value) {
|
||||
try {
|
||||
Long remove = redisTemplate.opsForList().remove(key, count, value);
|
||||
return remove;
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 删除指定前缀的一系列key
|
||||
* @param keyPrefix
|
||||
*/
|
||||
public void removeAll(String keyPrefix) {
|
||||
try {
|
||||
Set<String> keys = redisTemplate.keys(keyPrefix);
|
||||
redisTemplate.delete(keys);
|
||||
} catch (Throwable e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -23,8 +23,28 @@
|
|||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-web</artifactId>
|
||||
<!-- <exclusions>
|
||||
<exclusion>
|
||||
<groupId>ch.qos.logback</groupId>
|
||||
<artifactId>logback-classic</artifactId>
|
||||
</exclusion>
|
||||
<exclusion>-->
|
||||
<!-- <groupId>org.slf4j</groupId>-->
|
||||
<!-- <artifactId>log4j-over-slf4j</artifactId>-->
|
||||
<!-- </exclusion>
|
||||
</exclusions>-->
|
||||
</dependency>
|
||||
<!--<dependency>
|
||||
<groupId>org.slf4j</groupId>
|
||||
<artifactId>slf4j-api</artifactId>
|
||||
<version>1.7.21</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.slf4j</groupId>
|
||||
<artifactId>slf4j-simple</artifactId>
|
||||
<version>1.7.21</version>
|
||||
</dependency>-->
|
||||
<!-- SpringBoot 拦截器 -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
|
|
|
|||
|
|
@ -4,9 +4,13 @@ import org.springframework.cache.annotation.CachingConfigurerSupport;
|
|||
import org.springframework.cache.annotation.EnableCaching;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.data.redis.cache.RedisCacheConfiguration;
|
||||
import org.springframework.data.redis.cache.RedisCacheManager;
|
||||
import org.springframework.data.redis.cache.RedisCacheWriter;
|
||||
import org.springframework.data.redis.connection.RedisConnectionFactory;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.data.redis.core.script.DefaultRedisScript;
|
||||
import org.springframework.data.redis.serializer.RedisSerializationContext;
|
||||
import org.springframework.data.redis.serializer.StringRedisSerializer;
|
||||
import com.fasterxml.jackson.annotation.JsonAutoDetect;
|
||||
import com.fasterxml.jackson.annotation.JsonTypeInfo;
|
||||
|
|
@ -49,6 +53,16 @@ public class RedisConfig extends CachingConfigurerSupport
|
|||
return template;
|
||||
}
|
||||
|
||||
@Bean
|
||||
public RedisCacheManager redisCacheManager(RedisTemplate redisTemplate) {
|
||||
RedisCacheWriter redisCacheWriter = RedisCacheWriter.nonLockingRedisCacheWriter(redisTemplate.getConnectionFactory());
|
||||
|
||||
RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig().serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(redisTemplate.getValueSerializer()));
|
||||
|
||||
return new RedisCacheManager(redisCacheWriter, redisCacheConfiguration);
|
||||
|
||||
}
|
||||
|
||||
@Bean
|
||||
public DefaultRedisScript<Long> limitScript()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,6 +1,11 @@
|
|||
package com.ruoyi.quartz.task;
|
||||
|
||||
import com.ruoyi.common.utils.StringUtils;
|
||||
import com.ruoyi.common.utils.http.HttpUtils;
|
||||
import com.ruoyi.common.utils.spring.SpringUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
|
|
@ -11,11 +16,27 @@ import org.springframework.stereotype.Component;
|
|||
@Component("SegchkTask")
|
||||
public class SegchkTask
|
||||
{
|
||||
private static final Logger log = LoggerFactory.getLogger(SegchkTask.class);
|
||||
|
||||
public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i)
|
||||
{
|
||||
System.out.println(StringUtils.format("执行多参方法: 字符串类型{},布尔类型{},长整型{},浮点型{},整形{}", s, b, l, d, i));
|
||||
}
|
||||
|
||||
public void segchkMultipleParams(String s, Integer port, String path, Integer flag, String params)
|
||||
{
|
||||
log.debug(StringUtils.format("执行segchk多参方法: 字符串类型{},整形{}, 字符串类型{} 标志{} 具体参数{}", s, port, path, flag, params));
|
||||
String url = "http://localhost:" + port + path;
|
||||
if(s.equalsIgnoreCase("admin")){
|
||||
String s2 = params.replaceAll("\\|", ",");
|
||||
String s1 = HttpUtils.sendPost(url, "reqFlag=" + flag + "¶ms=" + s2);
|
||||
log.trace("HttpUtils.sendPost with {}{} get ret: {}", url, flag, s1);
|
||||
}
|
||||
else{
|
||||
log.warn("segchkMultipleParams invalid request!!!{}", s);
|
||||
}
|
||||
}
|
||||
|
||||
public void ryParams(String params)
|
||||
{
|
||||
System.out.println("执行有参方法:" + params);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,64 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<artifactId>ruoyi</artifactId>
|
||||
<groupId>com.ruoyi</groupId>
|
||||
<version>3.6.0</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>ruoyi-segchk-test</artifactId>
|
||||
|
||||
<properties>
|
||||
<maven.compiler.source>8</maven.compiler.source>
|
||||
<maven.compiler.target>8</maven.compiler.target>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.junit.jupiter</groupId>
|
||||
<artifactId>junit-jupiter-api</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.junit.jupiter</groupId>
|
||||
<artifactId>junit-jupiter-engine</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-test</artifactId>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<groupId>com.vaadin.external.google</groupId>
|
||||
<artifactId>android-json</artifactId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.ruoyi</groupId>
|
||||
<artifactId>ruoyi-framework</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>mysql</groupId>
|
||||
<artifactId>mysql-connector-java</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.mybatis.spring.boot</groupId>
|
||||
<artifactId>mybatis-spring-boot-starter</artifactId>
|
||||
<version>${mybatis-spring-boot.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.mybatis.spring.boot</groupId>
|
||||
<artifactId>mybatis-spring-boot-starter-test</artifactId>
|
||||
<version>${mybatis-spring-boot.version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
|
|
@ -0,0 +1,73 @@
|
|||
package test.core.ut;
|
||||
|
||||
import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure;
|
||||
import com.ruoyi.framework.config.DruidConfig;
|
||||
import com.ruoyi.framework.config.MyBatisConfig;
|
||||
import com.ruoyi.framework.config.RedisConfig;
|
||||
import com.ruoyi.framework.config.properties.DruidProperties;
|
||||
import org.assertj.core.internal.bytebuddy.build.ToStringPlugin;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration;
|
||||
import org.mybatis.spring.boot.test.autoconfigure.MybatisTest;
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration;
|
||||
import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.context.annotation.ComponentScan;
|
||||
import org.springframework.context.annotation.Import;
|
||||
import org.springframework.test.context.ActiveProfiles;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.jdbc.Sql;
|
||||
import org.springframework.test.context.junit.jupiter.SpringExtension;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
import org.springframework.test.context.web.WebAppConfiguration;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
|
||||
/**
|
||||
* 依赖内存 DB + Redis 的单元测试
|
||||
*
|
||||
*
|
||||
* @author 芋道源码
|
||||
*/
|
||||
//@RunWith(SpringRunner.class)
|
||||
//@RunWith(JUnitPlatform.class)
|
||||
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE, classes = BaseDbAndRedisUnitTest.Application.class)
|
||||
@ExtendWith(SpringExtension.class)
|
||||
//@ActiveProfiles(profiles = {"unit-test"}) // 设置使用 application-unit-test 配置文件
|
||||
//@Sql(scripts = "/sql/clean.sql", executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD) // 每个单元测试结束后,清理 DB
|
||||
//@WebAppConfiguration
|
||||
//@MybatisTest
|
||||
//@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
|
||||
|
||||
public class BaseDbAndRedisUnitTest {
|
||||
|
||||
@Import({
|
||||
// DB 配置类
|
||||
// DataSource.class,
|
||||
// DruidProperties.class,
|
||||
// DruidConfig.class,
|
||||
// YudaoDataSourceAutoConfiguration.class, // 自己的 DB 配置类
|
||||
// DataSourceAutoConfiguration.class, // Spring DB 自动配置类
|
||||
// DataSourceTransactionManagerAutoConfiguration.class, // Spring 事务自动配置类
|
||||
// DruidDataSourceAutoConfigure.class, // Druid 自动配置类
|
||||
// SqlInitializationTestConfiguration.class, // SQL 初始化
|
||||
// MyBatis 配置类
|
||||
// MyBatisConfig.class, // 自己的 MyBatis 配置类
|
||||
// MybatisAutoConfiguration.class,
|
||||
// MybatisPlusAutoConfiguration.class, // MyBatis 的自动配置类
|
||||
|
||||
// Redis 配置类
|
||||
// RedisConfig.class, // Redis 测试配置类,用于启动 RedisServer
|
||||
// RedisAutoConfiguration.class, // Spring Redis 自动配置类
|
||||
})
|
||||
public static class Application {
|
||||
// public static void main(String[] args){
|
||||
// SpringApplication.run(Application.class, args);
|
||||
// }
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE configuration
|
||||
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-config.dtd">
|
||||
<configuration>
|
||||
|
||||
<settings>
|
||||
<setting name="cacheEnabled" value="true"/> <!-- 全局映射器启用缓存 -->
|
||||
<setting name="useGeneratedKeys" value="true"/> <!-- 允许 JDBC 支持自动生成主键 -->
|
||||
<setting name="defaultExecutorType" value="REUSE"/> <!-- 配置默认的执行器 -->
|
||||
<setting name="logImpl" value="SLF4J"/> <!-- 指定 MyBatis 所用日志的具体实现 -->
|
||||
<!-- <setting name="mapUnderscoreToCamelCase" value="true"/> 驼峰式命名 -->
|
||||
</settings>
|
||||
|
||||
</configuration>
|
||||
|
|
@ -0,0 +1,384 @@
|
|||
package com.ruoyi.aspect;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.ruoyi.common.annotation.Log;
|
||||
import com.ruoyi.common.core.domain.model.LoginUser;
|
||||
import com.ruoyi.common.enums.BusinessStatus;
|
||||
import com.ruoyi.common.enums.HttpMethod;
|
||||
import com.ruoyi.common.utils.RedisUtil;
|
||||
import com.ruoyi.common.utils.SecurityUtils;
|
||||
import com.ruoyi.common.utils.ServletUtils;
|
||||
import com.ruoyi.common.utils.StringUtils;
|
||||
import com.ruoyi.common.utils.ip.IpUtils;
|
||||
import com.ruoyi.framework.manager.AsyncManager;
|
||||
import com.ruoyi.framework.manager.factory.AsyncFactory;
|
||||
import com.ruoyi.segchk.domain.SegchkStoreWebReq;
|
||||
import com.ruoyi.segchk.domain.SegchkUserCollect;
|
||||
import com.ruoyi.segchk.domain.SegchkUserLikego;
|
||||
import com.ruoyi.system.domain.SysOperLog;
|
||||
import org.aspectj.lang.JoinPoint;
|
||||
import org.aspectj.lang.ProceedingJoinPoint;
|
||||
import org.aspectj.lang.Signature;
|
||||
import org.aspectj.lang.annotation.*;
|
||||
import org.aspectj.lang.reflect.MethodSignature;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.validation.BindingResult;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import org.springframework.web.servlet.HandlerMapping;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.Collection;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 核销平台接口切面
|
||||
*
|
||||
* @author ruoyi
|
||||
*/
|
||||
@Aspect
|
||||
@Component
|
||||
public class SegchkAppApiAspect
|
||||
{
|
||||
private static final Logger log = LoggerFactory.getLogger(SegchkAppApiAspect.class);
|
||||
|
||||
@Resource
|
||||
private RedisUtil redisUtil;
|
||||
|
||||
// 配置织入点
|
||||
@Pointcut("execution(* com.ruoyi.segchk.*Controller.*(..)) ")
|
||||
public void segchkAppPointCut()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
/*@Around("segchkAppPointCut()")
|
||||
public Object around(ProceedingJoinPoint pjp) throws Throwable{
|
||||
pjp.
|
||||
}*/
|
||||
|
||||
/**
|
||||
* 处理完请求后执行
|
||||
*
|
||||
* @param joinPoint 切点
|
||||
*/
|
||||
@AfterReturning(pointcut = "segchkAppPointCut()", returning = "jsonResult")
|
||||
public void doAfterReturning(JoinPoint joinPoint, Object jsonResult)
|
||||
{
|
||||
Signature signature = joinPoint.getSignature();
|
||||
MethodSignature methodSignature = (MethodSignature) signature;
|
||||
Method method = methodSignature.getMethod();
|
||||
methodSignature.getParameterNames();
|
||||
String methodName = method.getName();
|
||||
// 获取当前的用户
|
||||
// LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
Object arg0 = joinPoint.getArgs()[0];
|
||||
switch (methodName){
|
||||
case "list_by_provider": {
|
||||
// 首页推荐列表 SegchkRecommenderStoreWebReq
|
||||
break;
|
||||
}
|
||||
case "store_search": {
|
||||
// 商家搜索 SegchkStoreWebReq
|
||||
break;
|
||||
}
|
||||
case "store_details": {
|
||||
// 商家详情 SegchkStoreWebReq
|
||||
// SegchkStoreWebReq segchkStoreWebReq = (SegchkStoreWebReq) arg0;
|
||||
// long ret = (long) redisUtil.hincr("wechatCount", "browse_cnt:" + segchkStoreWebReq.getProviderId() + ":" + segchkStoreWebReq.getStoreId(), 1L);
|
||||
break;
|
||||
}
|
||||
case "add_user_collect": {
|
||||
// 收藏商家 SegchkUserCollect
|
||||
// SegchkStoreWebReq segchkStoreWebReq = (SegchkStoreWebReq) arg0;
|
||||
// long ret = (long) redisUtil.hincr("wechatCount", "collect_cnt:" + segchkStoreWebReq.getProviderId() + ":" + segchkStoreWebReq.getStoreId(), 1L);
|
||||
break;
|
||||
}
|
||||
case "add_order_user_likego": {
|
||||
// 预约 SegchkUserLikego
|
||||
// SegchkUserLikego segchkStoreWebReq = (SegchkUserLikego) arg0;
|
||||
// long ret = (long) redisUtil.hincr("wechatCount", "collect_cnt:" + segchkStoreWebReq.getProviderId() + ":" + segchkStoreWebReq.getStoreId(), 1L);
|
||||
break;
|
||||
}
|
||||
case "user_like_go_qr": {
|
||||
// 查询预约二维码 String likegoId, String remark, Integer qrw, Integer qrh, HttpServletRequest request, HttpServletResponse response
|
||||
break;
|
||||
}
|
||||
case "userChargeReq": {
|
||||
// 充值请求 SegchkUserCharge
|
||||
break;
|
||||
}
|
||||
case "userCashReq": {
|
||||
// 提现请求 SegchkUserCashOpsReq
|
||||
break;
|
||||
}
|
||||
case "giveFreeCard": {
|
||||
// 商家赠卡 StoreSelfCard
|
||||
break;
|
||||
}
|
||||
case "service_check_test": {
|
||||
// 商家核销 Long likegoId, String storeId, String remark, HttpServletRequest request
|
||||
break;
|
||||
}
|
||||
default: break;
|
||||
}
|
||||
|
||||
log.debug("doAfterReturning {} params: {}, args: {}", methodName, StringUtils.join(methodSignature.getParameterNames(), "|"), StringUtils.join(joinPoint.getArgs(), "|"));
|
||||
// handleApiCount(joinPoint, null, jsonResult);
|
||||
}
|
||||
|
||||
@Before("segchkAppPointCut()")
|
||||
public void doBefore(JoinPoint joinPoint) throws Throwable {
|
||||
Signature signature = joinPoint.getSignature();
|
||||
MethodSignature methodSignature = (MethodSignature) signature;
|
||||
Method method = methodSignature.getMethod();
|
||||
methodSignature.getParameterNames();
|
||||
String methodName = method.getName();
|
||||
// 获取当前的用户
|
||||
// LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
Object arg0 = joinPoint.getArgs()[0];
|
||||
switch (methodName){
|
||||
case "list_by_provider": {
|
||||
// 首页推荐列表 SegchkRecommenderStoreWebReq
|
||||
break;
|
||||
}
|
||||
case "store_search": {
|
||||
// 商家搜索 SegchkStoreWebReq
|
||||
break;
|
||||
}
|
||||
case "store_details": {
|
||||
// 商家详情 SegchkStoreWebReq
|
||||
SegchkStoreWebReq segchkStoreWebReq = (SegchkStoreWebReq) arg0;
|
||||
long ret = (long) redisUtil.hincr("wechatCount", "browse_cnt:" + segchkStoreWebReq.getProviderId() + ":" + segchkStoreWebReq.getStoreId(), 1L);
|
||||
long ret1 = redisUtil.sSet("wechatCountRecord", segchkStoreWebReq.getStoreId());
|
||||
break;
|
||||
}
|
||||
case "add_user_collect": {
|
||||
// 收藏商家 SegchkUserCollect
|
||||
SegchkUserCollect segchkUserCollect = (SegchkUserCollect) arg0;
|
||||
long ret = (long) redisUtil.hincr("wechatCount", "collect_cnt:" + segchkUserCollect.getProviderId() + ":" + segchkUserCollect.getStoreId(), 1L);
|
||||
long ret1 = redisUtil.sSet("wechatCountRecord", segchkUserCollect.getStoreId());
|
||||
break;
|
||||
}
|
||||
case "add_order_user_likego": {
|
||||
// 预约 SegchkUserLikego
|
||||
SegchkUserLikego segchkUserLikego = (SegchkUserLikego) arg0;
|
||||
long ret = (long) redisUtil.hincr("wechatCount", "book_cnt:" + segchkUserLikego.getProviderId() + ":" + segchkUserLikego.getStoreId(), 1L);
|
||||
long ret1 = redisUtil.sSet("wechatCountRecord", segchkUserLikego.getStoreId());
|
||||
break;
|
||||
}
|
||||
case "user_like_go_qr": {
|
||||
// 查询预约二维码 String likegoId, String remark, Integer qrw, Integer qrh, HttpServletRequest request, HttpServletResponse response
|
||||
break;
|
||||
}
|
||||
case "userChargeReq": {
|
||||
// 充值请求 SegchkUserCharge
|
||||
break;
|
||||
}
|
||||
case "userCashReq": {
|
||||
// 提现请求 SegchkUserCashOpsReq
|
||||
break;
|
||||
}
|
||||
case "giveFreeCard": {
|
||||
// 商家赠卡 StoreSelfCard
|
||||
break;
|
||||
}
|
||||
case "service_check_test": {
|
||||
// 商家核销 Long likegoId, String storeId, String remark, HttpServletRequest request
|
||||
break;
|
||||
}
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 拦截异常操作
|
||||
*
|
||||
* @param joinPoint 切点
|
||||
* @param e 异常
|
||||
*/
|
||||
@AfterThrowing(value = "segchkAppPointCut()", throwing = "e")
|
||||
public void doAfterThrowing(JoinPoint joinPoint, Exception e)
|
||||
{
|
||||
Signature signature = joinPoint.getSignature();
|
||||
MethodSignature methodSignature = (MethodSignature) signature;
|
||||
Method method = methodSignature.getMethod();
|
||||
|
||||
log.debug("doAfterThrowing {}", method.getName());
|
||||
// handleApiCount(joinPoint, e, null);
|
||||
}
|
||||
|
||||
protected void handleApiCount(final JoinPoint joinPoint, final Exception e, Object jsonResult)
|
||||
{
|
||||
try
|
||||
{
|
||||
// 获得注解
|
||||
Log controllerLog = getAnnotationLog(joinPoint);
|
||||
if (controllerLog == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// 获取当前的用户
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
|
||||
// *========数据库日志=========*//
|
||||
SysOperLog operLog = new SysOperLog();
|
||||
operLog.setStatus(BusinessStatus.SUCCESS.ordinal());
|
||||
// 请求的地址
|
||||
String ip = IpUtils.getIpAddr(ServletUtils.getRequest());
|
||||
operLog.setOperIp(ip);
|
||||
// 返回参数
|
||||
operLog.setJsonResult(JSON.toJSONString(jsonResult));
|
||||
|
||||
operLog.setOperUrl(ServletUtils.getRequest().getRequestURI());
|
||||
if (loginUser != null)
|
||||
{
|
||||
operLog.setOperName(loginUser.getUsername());
|
||||
}
|
||||
|
||||
if (e != null)
|
||||
{
|
||||
operLog.setStatus(BusinessStatus.FAIL.ordinal());
|
||||
operLog.setErrorMsg(StringUtils.substring(e.getMessage(), 0, 2000));
|
||||
}
|
||||
// 设置方法名称
|
||||
String className = joinPoint.getTarget().getClass().getName();
|
||||
String methodName = joinPoint.getSignature().getName();
|
||||
operLog.setMethod(className + "." + methodName + "()");
|
||||
// 设置请求方式
|
||||
operLog.setRequestMethod(ServletUtils.getRequest().getMethod());
|
||||
// 处理设置注解上的参数
|
||||
getControllerMethodDescription(joinPoint, controllerLog, operLog);
|
||||
// 保存数据库
|
||||
AsyncManager.me().execute(AsyncFactory.recordOper(operLog));
|
||||
}
|
||||
catch (Exception exp)
|
||||
{
|
||||
// 记录本地异常日志
|
||||
log.error("==前置通知异常==");
|
||||
log.error("异常信息:{}", exp.getMessage());
|
||||
exp.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取注解中对方法的描述信息 用于Controller层注解
|
||||
*
|
||||
* @param log 日志
|
||||
* @param operLog 操作日志
|
||||
* @throws Exception
|
||||
*/
|
||||
public void getControllerMethodDescription(JoinPoint joinPoint, Log log, SysOperLog operLog) throws Exception
|
||||
{
|
||||
// 设置action动作
|
||||
operLog.setBusinessType(log.businessType().ordinal());
|
||||
// 设置标题
|
||||
operLog.setTitle(log.title());
|
||||
// 设置操作人类别
|
||||
operLog.setOperatorType(log.operatorType().ordinal());
|
||||
// 是否需要保存request,参数和值
|
||||
if (log.isSaveRequestData())
|
||||
{
|
||||
// 获取参数的信息,传入到数据库中。
|
||||
setRequestValue(joinPoint, operLog);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取请求的参数,放到log中
|
||||
*
|
||||
* @param operLog 操作日志
|
||||
* @throws Exception 异常
|
||||
*/
|
||||
private void setRequestValue(JoinPoint joinPoint, SysOperLog operLog) throws Exception
|
||||
{
|
||||
String requestMethod = operLog.getRequestMethod();
|
||||
if (HttpMethod.PUT.name().equals(requestMethod) || HttpMethod.POST.name().equals(requestMethod))
|
||||
{
|
||||
String params = argsArrayToString(joinPoint.getArgs());
|
||||
operLog.setOperParam(StringUtils.substring(params, 0, 2000));
|
||||
}
|
||||
else
|
||||
{
|
||||
Map<?, ?> paramsMap = (Map<?, ?>) ServletUtils.getRequest().getAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE);
|
||||
operLog.setOperParam(StringUtils.substring(paramsMap.toString(), 0, 2000));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否存在注解,如果存在就获取
|
||||
*/
|
||||
private Log getAnnotationLog(JoinPoint joinPoint) throws Exception
|
||||
{
|
||||
Signature signature = joinPoint.getSignature();
|
||||
MethodSignature methodSignature = (MethodSignature) signature;
|
||||
Method method = methodSignature.getMethod();
|
||||
|
||||
if (method != null)
|
||||
{
|
||||
return method.getAnnotation(Log.class);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 参数拼装
|
||||
*/
|
||||
private String argsArrayToString(Object[] paramsArray)
|
||||
{
|
||||
String params = "";
|
||||
if (paramsArray != null && paramsArray.length > 0)
|
||||
{
|
||||
for (int i = 0; i < paramsArray.length; i++)
|
||||
{
|
||||
if (StringUtils.isNotNull(paramsArray[i]) && !isFilterObject(paramsArray[i]))
|
||||
{
|
||||
Object jsonObj = JSON.toJSON(paramsArray[i]);
|
||||
params += jsonObj.toString() + " ";
|
||||
}
|
||||
}
|
||||
}
|
||||
return params.trim();
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断是否需要过滤的对象。
|
||||
*
|
||||
* @param o 对象信息。
|
||||
* @return 如果是需要过滤的对象,则返回true;否则返回false。
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
public boolean isFilterObject(final Object o)
|
||||
{
|
||||
Class<?> clazz = o.getClass();
|
||||
if (clazz.isArray())
|
||||
{
|
||||
return clazz.getComponentType().isAssignableFrom(MultipartFile.class);
|
||||
}
|
||||
else if (Collection.class.isAssignableFrom(clazz))
|
||||
{
|
||||
Collection collection = (Collection) o;
|
||||
for (Iterator iter = collection.iterator(); iter.hasNext();)
|
||||
{
|
||||
return iter.next() instanceof MultipartFile;
|
||||
}
|
||||
}
|
||||
else if (Map.class.isAssignableFrom(clazz))
|
||||
{
|
||||
Map map = (Map) o;
|
||||
for (Iterator iter = map.entrySet().iterator(); iter.hasNext();)
|
||||
{
|
||||
Map.Entry entry = (Map.Entry) iter.next();
|
||||
return entry.getValue() instanceof MultipartFile;
|
||||
}
|
||||
}
|
||||
return o instanceof MultipartFile || o instanceof HttpServletRequest || o instanceof HttpServletResponse
|
||||
|| o instanceof BindingResult;
|
||||
}
|
||||
}
|
||||
|
|
@ -11,6 +11,7 @@ import com.ruoyi.common.core.domain.BaseEntity;
|
|||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
import com.ruoyi.common.core.redis.RedisCache;
|
||||
import com.ruoyi.common.enums.BusinessType;
|
||||
import com.ruoyi.common.utils.RedisCahceKey;
|
||||
import com.ruoyi.common.utils.file.FileUtils;
|
||||
import com.ruoyi.segchk.domain.*;
|
||||
import com.ruoyi.segchk.service.*;
|
||||
|
|
@ -34,7 +35,9 @@ import javax.servlet.http.HttpServletResponse;
|
|||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
|
|
@ -274,12 +277,22 @@ public class SegchkDefaultStoreController extends BaseController
|
|||
}
|
||||
if(!storeId.equals(String.valueOf(claims.getUserId()))){
|
||||
logger.warn("ServiceCheckTest---storeid: {} is not then token: {}", storeId, claims);
|
||||
return AjaxResult.error(300, "请先登录注册");
|
||||
return AjaxResult.error(300, "该预约单非当前商家用户");
|
||||
}
|
||||
}
|
||||
AjaxResult ajax = new AjaxResult();
|
||||
logger.debug("ServiceCheckTest with: {}---{}---{}", likegoId.toString(), storeId, remark);
|
||||
SegchkServiceOrderChkTestResp segchkServiceOrderChkTestResp = segchkUserIndexService.selectUserOrderPredInfo(likegoId);
|
||||
Map<String, Object> parmMap = new HashMap<>();
|
||||
parmMap.put("likegoId", likegoId);
|
||||
parmMap.put("storeId", storeId);
|
||||
parmMap.put("remark", remark);
|
||||
|
||||
Object cacheObject = redisService.getCacheObject(RedisCahceKey.BASE_INFO_SET + "::check_version");
|
||||
if(!ObjectUtils.isEmpty(cacheObject) && new Boolean(String.valueOf(cacheObject))) {
|
||||
ajax = segchkStoreIndexService.OrderCheckTransaction(parmMap);
|
||||
return ajax;
|
||||
}
|
||||
SegchkServiceOrderChkTestResp segchkServiceOrderChkTestResp = segchkUserIndexService.selectUserOrderPredInfo(parmMap);
|
||||
segchkServiceOrderChkTestResp.setLikegoId(likegoId);
|
||||
logger.debug("ServiceCheckTest check with: {}", segchkServiceOrderChkTestResp.toString());
|
||||
if(segchkServiceOrderChkTestResp.getStoreId()!= Long.parseLong(storeId)){
|
||||
|
|
@ -313,8 +326,9 @@ public class SegchkDefaultStoreController extends BaseController
|
|||
segchkServiceOrderChkTestResp.setSegchkRecommenderStoreLableWebList(null);
|
||||
ajax.put(DATA_TAG, segchkServiceOrderChkTestResp);
|
||||
|
||||
StringBuilder sb = new StringBuilder(CommonConstant.APPLET_SERVICE_CHK).append(":").append(storeId).append("-").append(segchkServiceOrderChkTestResp.getUserId());
|
||||
StringBuilder sb = new StringBuilder(CommonConstant.APPLET_SERVICE_CHK).append(":").append(storeId).append(":").append(segchkServiceOrderChkTestResp.getUserId());
|
||||
logger.debug("ServiceCheckTest will store likego : {}:{}", sb.toString(), likegoId);
|
||||
|
||||
redisService.setCacheObject(sb.toString(), likegoId, 5, TimeUnit.MINUTES);
|
||||
}
|
||||
else {
|
||||
|
|
@ -335,7 +349,7 @@ public class SegchkDefaultStoreController extends BaseController
|
|||
lables.add(lable);
|
||||
segchkServiceOrderChkTestResp.setSegchkRecommenderStoreLableWebList(lables);
|
||||
ajax.put(DATA_TAG, segchkServiceOrderChkTestResp);
|
||||
StringBuilder sb = new StringBuilder(CommonConstant.APPLET_SERVICE_CHK).append(":").append(storeId).append("-").append(segchkServiceOrderChkTestResp.getUserId());
|
||||
StringBuilder sb = new StringBuilder(CommonConstant.APPLET_SERVICE_CHK).append(":").append(storeId).append(":").append(segchkServiceOrderChkTestResp.getUserId());
|
||||
logger.debug("ServiceCheckTest will store likego : {}:{}", sb.toString(), likegoId);
|
||||
redisService.setCacheObject(sb.toString(), likegoId, 5, TimeUnit.MINUTES);
|
||||
}
|
||||
|
|
@ -360,28 +374,23 @@ public class SegchkDefaultStoreController extends BaseController
|
|||
segchkStoreSelfMgt.setProviderId(claims.getProviderId());
|
||||
segchkStoreSelfMgt.setStoreId(claims.getUserId());
|
||||
}
|
||||
StringBuilder sb = new StringBuilder(CommonConstant.APPLET_SERVICE_CHK).append(":").append(segchkStoreSelfMgt.getStoreId()).append("-").append(storeSelfCard.getUserId());
|
||||
Long likegoId = redisService.getCacheObject(sb.toString());
|
||||
if(likegoId == null){
|
||||
logger.warn("giveFreeCard cannot get likegoId from redis for ({}:{})", segchkStoreSelfMgt.getStoreId(), storeSelfCard.getUserId());
|
||||
return AjaxResult.error(500, "赠卡失败");
|
||||
|
||||
int ret = segchkStoreIndexService.giveStoreCard(storeSelfCard);
|
||||
switch (ret){
|
||||
case -1:
|
||||
return new AjaxResult(500, "请求异常");
|
||||
case -2 :
|
||||
return AjaxResult.error(500, "无效订单");
|
||||
case -3:
|
||||
return AjaxResult.error(500, "无效订单");
|
||||
case -4:
|
||||
return AjaxResult.error(500, "非订单商家");
|
||||
case 0:
|
||||
return AjaxResult.error(500, "赠卡失败");
|
||||
default:
|
||||
return AjaxResult.error(200, "赠卡成功");
|
||||
|
||||
}
|
||||
Long cardId = segchkStoreIndexService.getVipCardFromLikego(likegoId);
|
||||
segchkStoreSelfMgt.setCardId(cardId);
|
||||
segchkStoreSelfMgt.setUserId(storeSelfCard.getUserId());
|
||||
segchkStoreSelfMgt.setTypeId(storeSelfCard.getTypeId());
|
||||
segchkStoreSelfMgt.setFreeCount(storeSelfCard.getTotalCount());
|
||||
segchkStoreSelfMgt.setLableId(storeSelfCard.getTypeId() == 2 ? storeSelfCard.getLableId() : 0L);
|
||||
segchkStoreSelfMgt.setFreeName(storeSelfCard.getTypeId() == 2 ? null : "赠卡");
|
||||
segchkStoreSelfMgt.setFreeContent(storeSelfCard.getFreeContent());
|
||||
segchkStoreSelfMgt.setLeftCount(storeSelfCard.getTotalCount());
|
||||
logger.debug("giveFreeCard with --- {}", segchkStoreSelfMgt.toString());
|
||||
Integer ret = segchkStoreIndexService.addStoreSelfCard(segchkStoreSelfMgt);
|
||||
if(ret == 0){
|
||||
logger.error("giveFreeCard failed with --- {}", segchkStoreSelfMgt.toString());
|
||||
}
|
||||
redisService.deleteObject(sb.toString());
|
||||
return ret > 0 ? AjaxResult.success("赠卡成功") : AjaxResult.error(500, "赠卡失败");
|
||||
}
|
||||
/**
|
||||
* 提现结果回调接口,接口微信的支付结果,更新充值结果, ret 0成功,其他失败 未测试
|
||||
|
|
|
|||
|
|
@ -55,9 +55,6 @@ public class SegchkDefaultUserController extends BaseController
|
|||
@Autowired
|
||||
private ISegchkUserCollectService segchkUserCollectService;
|
||||
|
||||
@Autowired
|
||||
private ISegchkUserLikegoService segchkUserLikegoService;
|
||||
|
||||
@Autowired
|
||||
private ISegchkUserIndexService segchkUserIndexService;
|
||||
|
||||
|
|
@ -227,13 +224,13 @@ public class SegchkDefaultUserController extends BaseController
|
|||
return LoginRequireAjax();
|
||||
}
|
||||
if(claims.getUserLevel() != 2){
|
||||
return AjaxResult.error(400, "未会员用户不允许预约!");
|
||||
return AjaxResult.error(400, "非会员用户不允许预约!");
|
||||
}
|
||||
segchkUserLikego.setUserId(claims.getUserId());
|
||||
segchkUserLikego.setProviderId(claims.getProviderId());
|
||||
}
|
||||
logger.debug("add_order_user_likego with: {}", segchkUserLikego.toString());
|
||||
return toAjax(segchkUserLikegoService.insertSegchkUserLikego(segchkUserLikego));
|
||||
return toAjax(segchkUserIndexService.insertSegchkUserLikego(segchkUserLikego));
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -249,7 +246,7 @@ public class SegchkDefaultUserController extends BaseController
|
|||
@UnAuth
|
||||
@PostMapping("/userLikeGoQr")
|
||||
@ResponseBody
|
||||
@ApiOperation(value = "查询seg用户预约单列表", notes = "需要鉴权")
|
||||
@ApiOperation(value = "查询seg用户预约单二维码", notes = "需要鉴权")
|
||||
public AjaxResult user_like_go_qr(String likegoId, String remark, Integer qrw, Integer qrh, HttpServletRequest request, HttpServletResponse response)
|
||||
{
|
||||
SegchkUserLikego segchkUserLikego = new SegchkUserLikego();
|
||||
|
|
@ -440,7 +437,7 @@ public class SegchkDefaultUserController extends BaseController
|
|||
removeIds.setUserId(claims.getUserId());
|
||||
}
|
||||
logger.debug("removeOrderUserLikego with: {}", removeIds.toString());
|
||||
return toAjax(segchkUserLikegoService.deleteSegchkUserLikegoByLikegoIds(Convert.toLongArray(removeIds.getIds())));
|
||||
return toAjax(segchkUserIndexService.deleteSegchkUserLikegoByLikegoIds(Convert.toLongArray(removeIds.getIds())));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ spring:
|
|||
druid:
|
||||
# 主库数据源
|
||||
master:
|
||||
url: jdbc:mysql://192.168.2.30:8306/segchksaas?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
|
||||
url: jdbc:mysql://192.168.2.30:8306/kaletest?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
|
||||
username: kaletest_yinzy
|
||||
password: XMG2-Rel.2
|
||||
# 从库数据源
|
||||
|
|
@ -141,8 +141,8 @@ segchk:
|
|||
distince: 50
|
||||
qr_path: C:\Users\Public\Desktop\dome.jpg
|
||||
poster_path: F:\ideaproj\RuoYi-Vue\ruoyi-segchk\src\main\resources\templates\posters\bg.jpg
|
||||
# 核消二维码保存路径,测试使用。正常不打开
|
||||
check_qr_path: C:\Users\Public\Desktop\checkqr.jpg
|
||||
# 核消二维码保存路径,测试使用。正常不打开,开发时不打开
|
||||
# check_qr_path: C:\Users\Public\Desktop\checkqr.jpg
|
||||
# 核消二维码背景路径,可有,可无
|
||||
# check_poster_path: F:\ideaproj\RuoYi-Vue\ruoyi-segchk\src\main\resources\templates\posters\bg.jpg
|
||||
|
||||
|
|
|
|||
|
|
@ -93,7 +93,7 @@ spring:
|
|||
# 端口,默认为6379
|
||||
port: 63795
|
||||
# 数据库索引
|
||||
database: 2
|
||||
database: 3
|
||||
# 密码
|
||||
password: seg_123456
|
||||
# 连接超时时间
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ spring:
|
|||
# 国际化资源文件路径
|
||||
basename: i18n/messages
|
||||
profiles:
|
||||
active: kaleprod
|
||||
active: dev
|
||||
# # 文件上传
|
||||
# servlet:
|
||||
# multipart:
|
||||
|
|
|
|||
|
|
@ -2,6 +2,8 @@
|
|||
"dev": {
|
||||
"name": "value",
|
||||
"host": "http://localhost:8091",
|
||||
"hostadmin": "http://localhost:7070",
|
||||
"tokenadmin": "login_tokens:6c229cfe-7891-4397-b663-c10213b7d097",
|
||||
"bindtoken": "eyJhbGciOiJIUzI1NiIsInppcCI6IkRFRiJ9.eNqqViouTVKyUnIMCPBxDYn38Xf39Iv3do1U0lHKTCxRsjI0MzY0tDCwtLDQUSotTi3yTFGyMjUw1lEqKMovy0yBCBhB5HxSy1JzwLzUigKYVhNTC4taAAAAAP__.diChD7JjY3y8SBNTBE8ACoNWWIuz-r-mHESPfL73eZI",
|
||||
"bindtoken1": "eyJhbGciOiJIUzI1NiIsInppcCI6IkRFRiJ9.eNqqViouTVKyUnIMCPBxDYn38Xf39Iv3do1U0lHKTCxRsjI0MzYyNDQwNDLVUSotTi3yTFGyMjUw1lEqKMovy0yBCBhB5HxSy1JzwLzUigKYVmNzI9NaAAAAAP__.Y5uJzL55q9baNor4ScWmVg9UZyfHkTxZ0Oz79guiXXg",
|
||||
// "token2": "APPLET_LOGIN_KEY_885553054366171136abcdefghijklmnopqrstuvwxyz",
|
||||
|
|
@ -56,5 +58,5 @@
|
|||
"userLon": 114.123456,
|
||||
"userLat": 43.123456
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
|
|
@ -1,3 +1,47 @@
|
|||
PUT http://{{hostadmin}}/segchk/segchk_store_basic_info/delete_vr
|
||||
Accept: */*
|
||||
Cache-Control: no-cache
|
||||
Content-Type: application/json
|
||||
Authorization: Bearer {{tokenadmin}}
|
||||
|
||||
{
|
||||
"storeId": 3,
|
||||
"vrUrl": "1sdasdasd",
|
||||
"providerId": 2,
|
||||
"serviceState": 1,
|
||||
"remark": "999999"
|
||||
}
|
||||
|
||||
###
|
||||
PUT http://{{hostadmin}}/segchk/segchk_store_basic_info/update_vr
|
||||
Accept: */*
|
||||
Cache-Control: no-cache
|
||||
Content-Type: application/json
|
||||
Authorization: Bearer {{tokenadmin}}
|
||||
|
||||
{
|
||||
"storeId": 3,
|
||||
"vrUrl": "1sdasdasd",
|
||||
"providerId": 2,
|
||||
"serviceState": 1,
|
||||
"remark": "999999"
|
||||
}
|
||||
|
||||
###
|
||||
PUT http://{{hostadmin}}/segchk/segchk_store_basic_info/add_vr
|
||||
Accept: */*
|
||||
Cache-Control: no-cache
|
||||
Content-Type: application/json
|
||||
Authorization: Bearer {{tokenadmin}}
|
||||
|
||||
{
|
||||
"storeId": 3,
|
||||
"vrUrl": "demoData",
|
||||
"providerId": 2,
|
||||
"remark": "999999"
|
||||
}
|
||||
|
||||
###重置admin密码
|
||||
PUT http://{{hostbak}}/system/user/resetadminself
|
||||
Accept: */*
|
||||
Cache-Control: no-ca
|
||||
|
|
@ -62,7 +106,7 @@ Accept: */*
|
|||
Cache-Control: no-cache
|
||||
Content-Type: application/x-www-form-urlencoded
|
||||
|
||||
likegoId=4&remark=999999&qrw=300&qrh=500
|
||||
likegoId=16996&remark=999999&qrw=300&qrh=500
|
||||
|
||||
###
|
||||
POST http://api.ksd106.com:8088/SMSSend.aspx
|
||||
|
|
@ -92,7 +136,7 @@ Content-Type: application/json
|
|||
###
|
||||
############### 商家接口测试 ####################
|
||||
|
||||
### 商家核消操作
|
||||
###商家赠卡操作
|
||||
POST {{host}}//default/store/giveFreeCard
|
||||
Accept: */*
|
||||
Cache-Control: no-cache
|
||||
|
|
@ -100,18 +144,38 @@ Content-Type: application/json
|
|||
Authorization: Bearer {{bindtoken}}
|
||||
|
||||
{
|
||||
"userId": 243,
|
||||
"cardId": 242,
|
||||
"lableId": 10,
|
||||
"storeId": 144,
|
||||
"typeId": 2,
|
||||
"likegoId": 16997,
|
||||
"storeId": 52,
|
||||
"typeId": 1,
|
||||
"totalCount": 10,
|
||||
"freeContent": "demoData",
|
||||
"freeContent": "第二张卡",
|
||||
"remark": "demoData"
|
||||
}
|
||||
|
||||
### 测试查询用户信息
|
||||
GET {{hostadmin}}/test/user/list
|
||||
Accept: */*
|
||||
Cache-Control: no-cache
|
||||
Content-Type: application/json
|
||||
Authorization: Bearer {{bindtoken}}
|
||||
|
||||
### 修改redis中的key/value
|
||||
PUT {{hostadmin}}/test/user/updateredis?key=check_version&db=BASE_INFO_SET:&value=true&remark=999999
|
||||
Accept: */*
|
||||
Cache-Control: no-cache
|
||||
Content-Type: application/json
|
||||
Authorization: Bearer {{bindtoken}}
|
||||
|
||||
### 查询redis中的key/value
|
||||
GET {{hostadmin}}/test/user/getredis?key=check_version&db=BASE_INFO_SET:&remark=999999
|
||||
Accept: */*
|
||||
Cache-Control: no-cache
|
||||
Content-Type: application/json
|
||||
Authorization: Bearer {{bindtoken}}
|
||||
|
||||
|
||||
### 商家核消操作
|
||||
POST {{host}}//default/store/ServiceCheckTest?likegoId=16877&storeId=128&remark=999999
|
||||
POST {{host}}//default/store/ServiceCheckTest?likegoId=17000&storeId=52&remark=999999
|
||||
Accept: */*
|
||||
Cache-Control: no-cache
|
||||
Content-Type: application/json
|
||||
|
|
@ -481,7 +545,6 @@ Authorization: Bearer {{bindtoken}}
|
|||
"remark": "999999"
|
||||
}
|
||||
|
||||
###
|
||||
### 添加seg用户想去记录
|
||||
POST {{host}}//default/user/addOrderUserLikego
|
||||
Accept: */*
|
||||
|
|
@ -490,15 +553,14 @@ Content-Type: application/json
|
|||
Authorization: Bearer {{bindtoken}}
|
||||
|
||||
{
|
||||
"providerId": 4,
|
||||
"userId": 245,
|
||||
"storeId": 128,
|
||||
"cardId": 244,
|
||||
"providerId": 2,
|
||||
"userId": 77,
|
||||
"storeId": 52,
|
||||
"cardId": 76,
|
||||
"cardType": 0,
|
||||
"remark": "999999"
|
||||
}
|
||||
|
||||
###
|
||||
### 查询该用户在该商户可使用的会员卡或优惠券,remark为测试标识
|
||||
#返回结果
|
||||
#{
|
||||
|
|
@ -518,7 +580,7 @@ Authorization: Bearer {{bindtoken}}
|
|||
# "code": 200,
|
||||
# "msg": "查询成功"
|
||||
#}
|
||||
### 查询该用户在该商户可使用的会员卡或优惠券,remark为测试标识
|
||||
### 999 查询该用户在该商户可使用的会员卡或优惠券,remark为测试标识
|
||||
POST {{host}}//default/user/userOrderPredList
|
||||
Accept: */*
|
||||
Cache-Control: no-cache
|
||||
|
|
@ -526,9 +588,9 @@ Content-Type: application/json
|
|||
Authorization: Bearer {{bindtoken}}
|
||||
|
||||
{
|
||||
"providerId": 11,
|
||||
"storeId": 196,
|
||||
"userId": 768,
|
||||
"providerId": 2,
|
||||
"storeId": 52,
|
||||
"userId": 77,
|
||||
"remark": "999999"
|
||||
}
|
||||
|
||||
|
|
@ -756,8 +818,8 @@ Cache-Control: no-cache
|
|||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"providerId": 4,
|
||||
"storeId": 124
|
||||
"providerId": 2,
|
||||
"storeId": 5
|
||||
}
|
||||
|
||||
###
|
||||
|
|
@ -786,11 +848,7 @@ Content-Type: application/json
|
|||
"providerId": 3
|
||||
}
|
||||
|
||||
###
|
||||
### 根据标签id,会员卡类型id,搜索商户列表
|
||||
#
|
||||
#
|
||||
|
||||
#{
|
||||
# "providerId": 2,
|
||||
# "sortType": 1,
|
||||
|
|
@ -800,6 +858,7 @@ Content-Type: application/json
|
|||
# "userLon": 116.25849,
|
||||
# "userLat": 39.684333
|
||||
#}
|
||||
|
||||
POST {{host}}//default/index/listByProviderwithLable
|
||||
Accept: */*
|
||||
Cache-Control: no-cache
|
||||
|
|
@ -812,7 +871,6 @@ Content-Type: application/json
|
|||
"userLat": 39.684333
|
||||
}
|
||||
|
||||
###
|
||||
### 根据运营商id查询seg首页推荐商户列表
|
||||
POST {{host}}//default/index/listByProvider
|
||||
Accept: */*
|
||||
|
|
@ -877,12 +935,10 @@ Content-Type: application/json
|
|||
{
|
||||
"providerId": 2,
|
||||
"sortType": 0,
|
||||
"lableId": 4,
|
||||
"typeId": 1,
|
||||
"storeName": "百元尊享",
|
||||
"lableName": "百元尊享",
|
||||
"userLon": 114.123456,
|
||||
"userLat": 43.123456
|
||||
"storeName": "2商家名称001",
|
||||
"lableName": "2商家名称001",
|
||||
"userLon": 116.266754,
|
||||
"userLat": 39.678974
|
||||
}
|
||||
|
||||
###查询seg标签列表
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@
|
|||
<alipay.version>4.8.10.ALL</alipay.version>
|
||||
</properties>
|
||||
<description>
|
||||
system系统模块
|
||||
seg核销业务模块
|
||||
</description>
|
||||
|
||||
<dependencies>
|
||||
|
|
@ -117,6 +117,12 @@
|
|||
<artifactId>ruoyi-system</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.ruoyi</groupId>
|
||||
<artifactId>ruoyi-segchk-test</artifactId>
|
||||
<version>3.6.0</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.swagger</groupId>
|
||||
<artifactId>swagger-models</artifactId>
|
||||
|
|
|
|||
|
|
@ -1,47 +0,0 @@
|
|||
package com.ruoyi.segchk.domain;
|
||||
|
||||
import com.ruoyi.common.annotation.Excel;
|
||||
import com.ruoyi.common.core.domain.BaseEntity;
|
||||
|
||||
/**
|
||||
* seg充值卡管理对象 segchk_charge_card
|
||||
*
|
||||
* @author yinzhiying
|
||||
* @date 2021-07-01
|
||||
*/
|
||||
public class SegchkChargeRet extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 充值id */
|
||||
@Excel(name = "充值id")
|
||||
private Long chargeId;
|
||||
|
||||
/** 卡id */
|
||||
@Excel(name = "卡id")
|
||||
private Long cardId;
|
||||
|
||||
public Long getChargeId() {
|
||||
return chargeId;
|
||||
}
|
||||
|
||||
public void setChargeId(Long chargeId) {
|
||||
this.chargeId = chargeId;
|
||||
}
|
||||
|
||||
public Long getCardId() {
|
||||
return cardId;
|
||||
}
|
||||
|
||||
public void setCardId(Long cardId) {
|
||||
this.cardId = cardId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "SegchkChargeRet{" +
|
||||
"chargeId=" + chargeId +
|
||||
", cardId=" + cardId +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
|
|
@ -190,7 +190,7 @@ public class SegchkChargeReward extends BaseEntity {
|
|||
|
||||
public void mkReward() {
|
||||
switch (this.getTotalChargeCount()){
|
||||
case 0: break;
|
||||
case 0: this.setReward(null);break;
|
||||
case 1: {
|
||||
this.setReward(this.getReward().divide(new BigDecimal("2"), 2, BigDecimal.ROUND_HALF_UP));break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,11 +1,13 @@
|
|||
package com.ruoyi.segchk.domain;
|
||||
|
||||
import com.ruoyi.common.annotation.Excel;
|
||||
import com.ruoyi.common.core.controller.BaseController;
|
||||
import com.ruoyi.common.core.domain.BaseEntity;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* seg返回首页推荐商户对象 segchk_recommender_storeweb
|
||||
|
|
@ -61,7 +63,7 @@ public class SegchkRecommenderStoreWebResp extends BaseEntity
|
|||
@Excel(name = "用户距离")
|
||||
private BigDecimal userDist;
|
||||
|
||||
|
||||
private SegchkStoreCntResp segchkStoreCntResp = null;
|
||||
/** 商户标签列表 */
|
||||
@Valid
|
||||
private List<SegchkRecommenderStoreLableWeb> lables;
|
||||
|
|
@ -154,24 +156,6 @@ public class SegchkRecommenderStoreWebResp extends BaseEntity
|
|||
this.storeName = storeName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "SegchkRecommenderStoreWebResp{" +
|
||||
"providerId=" + providerId +
|
||||
", storeId=" + storeId +
|
||||
", storeName=" + storeName +
|
||||
", storeSort=" + storeSort +
|
||||
", storeIcon='" + storeIcon + '\'' +
|
||||
", storeGificon='" + storeGificon + '\'' +
|
||||
", storeLon=" + storeLon +
|
||||
", storeLat=" + storeLat +
|
||||
", chkCount=" + chkCount +
|
||||
", starAvg=" + starAvg +
|
||||
", lables=" + lables +
|
||||
", userDist=" + userDist +
|
||||
'}';
|
||||
}
|
||||
|
||||
public BigDecimal getUserDist() {
|
||||
return userDist;
|
||||
}
|
||||
|
|
@ -179,4 +163,37 @@ public class SegchkRecommenderStoreWebResp extends BaseEntity
|
|||
public void setUserDist(BigDecimal userDist) {
|
||||
this.userDist = userDist;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "SegchkRecommenderStoreWebResp{" +
|
||||
"providerId=" + providerId +
|
||||
", storeId=" + storeId +
|
||||
", storeName='" + storeName + '\'' +
|
||||
", storeSort=" + storeSort +
|
||||
", storeIcon='" + storeIcon + '\'' +
|
||||
", storeGificon='" + storeGificon + '\'' +
|
||||
", storeLon=" + storeLon +
|
||||
", storeLat=" + storeLat +
|
||||
", chkCount=" + chkCount +
|
||||
", starAvg=" + starAvg +
|
||||
", userDist=" + userDist +
|
||||
", lables=" + lables +
|
||||
'}';
|
||||
}
|
||||
|
||||
public void setStoreCount(Long providerId, SegchkProviderCntCtrl segchkProviderCntCtrl, Map<Object, Object> wechatCount, Map<Object, Object> wechatCount1) {
|
||||
this.segchkStoreCntResp = new SegchkStoreCntResp();
|
||||
this.segchkStoreCntResp.setProviderId(providerId);
|
||||
this.segchkStoreCntResp.setStoreId(this.storeId);
|
||||
this.segchkStoreCntResp.setAllCnt(segchkProviderCntCtrl, wechatCount, wechatCount1);
|
||||
}
|
||||
|
||||
public SegchkStoreCntResp getSegchkStoreCntResp() {
|
||||
return segchkStoreCntResp;
|
||||
}
|
||||
|
||||
public void setSegchkStoreCntResp(SegchkStoreCntResp segchkStoreCntResp) {
|
||||
this.segchkStoreCntResp = segchkStoreCntResp;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,89 +0,0 @@
|
|||
package com.ruoyi.segchk.domain;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.ruoyi.common.annotation.Excel;
|
||||
import com.ruoyi.common.core.domain.BaseEntity;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* seg评价记录对象 SegchkServiceCommentUserReq
|
||||
*
|
||||
* @author yinzhiying
|
||||
* @date 2021-07-30
|
||||
*/
|
||||
public class SegchkServiceCommentUserReq extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 评价id */
|
||||
private Long commentId;
|
||||
|
||||
/** 星级评价 */
|
||||
@Excel(name = "星级评价")
|
||||
private Integer starLevel;
|
||||
|
||||
/** 评价内容 */
|
||||
@Excel(name = "评价内容")
|
||||
private String contentText;
|
||||
|
||||
/** 创建或修改时间 */
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@Excel(name = "创建或修改时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date modTime;
|
||||
|
||||
/** 核消id,全表唯一 */
|
||||
@Excel(name = "核消id,全表唯一")
|
||||
private Long chkServiceId;
|
||||
|
||||
public Long getCommentId() {
|
||||
return commentId;
|
||||
}
|
||||
|
||||
public void setCommentId(Long commentId) {
|
||||
this.commentId = commentId;
|
||||
}
|
||||
|
||||
public Integer getStarLevel() {
|
||||
return starLevel;
|
||||
}
|
||||
|
||||
public void setStarLevel(Integer starLevel) {
|
||||
this.starLevel = starLevel;
|
||||
}
|
||||
|
||||
public String getContentText() {
|
||||
return contentText;
|
||||
}
|
||||
|
||||
public void setContentText(String contentText) {
|
||||
this.contentText = contentText;
|
||||
}
|
||||
|
||||
public Date getModTime() {
|
||||
return modTime;
|
||||
}
|
||||
|
||||
public void setModTime(Date modTime) {
|
||||
this.modTime = modTime;
|
||||
}
|
||||
|
||||
public Long getChkServiceId() {
|
||||
return chkServiceId;
|
||||
}
|
||||
|
||||
public void setChkServiceId(Long chkServiceId) {
|
||||
this.chkServiceId = chkServiceId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "SegchkServiceCommentUserReq{" +
|
||||
"commentId=" + commentId +
|
||||
", starLevel=" + starLevel +
|
||||
", contentText='" + contentText + '\'' +
|
||||
", modTime=" + modTime +
|
||||
", chkServiceId=" + chkServiceId +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
|
|
@ -47,7 +47,11 @@ public class SegchkServiceOrderWebReq extends BaseEntity
|
|||
|
||||
/** 该商家支持的核销次数 */
|
||||
@Excel(name = "商家支持次数")
|
||||
private Integer stoerChkCount;
|
||||
private Integer storeChkCount;
|
||||
|
||||
/** 该卡在该商家已使用的核销次数 */
|
||||
@Excel(name = "已核销次数")
|
||||
private Integer hadChkCount;
|
||||
|
||||
public Long getProviderId() {
|
||||
return providerId;
|
||||
|
|
@ -105,6 +109,30 @@ public class SegchkServiceOrderWebReq extends BaseEntity
|
|||
this.cardName = cardName;
|
||||
}
|
||||
|
||||
public Integer getLeftCount() {
|
||||
return leftCount;
|
||||
}
|
||||
|
||||
public void setLeftCount(Integer leftCount) {
|
||||
this.leftCount = leftCount;
|
||||
}
|
||||
|
||||
public Integer getStoreChkCount() {
|
||||
return storeChkCount;
|
||||
}
|
||||
|
||||
public void setStoreChkCount(Integer storeChkCount) {
|
||||
this.storeChkCount = storeChkCount;
|
||||
}
|
||||
|
||||
public Integer getHadChkCount() {
|
||||
return hadChkCount;
|
||||
}
|
||||
|
||||
public void setHadChkCount(Integer hadChkCount) {
|
||||
this.hadChkCount = hadChkCount;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "SegchkServiceOrderWebReq{" +
|
||||
|
|
@ -115,22 +143,9 @@ public class SegchkServiceOrderWebReq extends BaseEntity
|
|||
", lableId=" + lableId +
|
||||
", typeId=" + typeId +
|
||||
", cardName='" + cardName + '\'' +
|
||||
", leftCount=" + leftCount +
|
||||
", storeChkCount=" + storeChkCount +
|
||||
", hadChkCount=" + hadChkCount +
|
||||
'}';
|
||||
}
|
||||
|
||||
public Integer getLeftCount() {
|
||||
return leftCount;
|
||||
}
|
||||
|
||||
public void setLeftCount(Integer leftCount) {
|
||||
this.leftCount = leftCount;
|
||||
}
|
||||
|
||||
public Integer getStoerChkCount() {
|
||||
return stoerChkCount;
|
||||
}
|
||||
|
||||
public void setStoerChkCount(Integer stoerChkCount) {
|
||||
this.stoerChkCount = stoerChkCount;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,10 +2,12 @@ package com.ruoyi.segchk.domain;
|
|||
|
||||
import com.ruoyi.common.annotation.Excel;
|
||||
import com.ruoyi.common.core.domain.BaseEntity;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* seg返回首页推荐商户对象 segchk_recommender_storeweb
|
||||
|
|
@ -68,11 +70,10 @@ public class SegchkStoreIndexWebResp extends BaseEntity
|
|||
/** 在线状态 */
|
||||
@Excel(name = "对应的销售id")
|
||||
private Integer salerId;
|
||||
|
||||
|
||||
/** 商户标签列表 */
|
||||
@Valid
|
||||
private List<SegchkRecommenderStoreLableWeb> lables;
|
||||
private SegchkStoreCntResp segchkStoreCntResp = null;
|
||||
|
||||
public Long getProviderId() {
|
||||
return providerId;
|
||||
|
|
@ -179,6 +180,14 @@ public class SegchkStoreIndexWebResp extends BaseEntity
|
|||
this.salerId = salerId;
|
||||
}
|
||||
|
||||
public BigDecimal getUserDist() {
|
||||
return userDist;
|
||||
}
|
||||
|
||||
public void setUserDist(BigDecimal userDist) {
|
||||
this.userDist = userDist;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "SegchkStoreIndexWebResp{" +
|
||||
|
|
@ -191,19 +200,26 @@ public class SegchkStoreIndexWebResp extends BaseEntity
|
|||
", storeGificon='" + storeGificon + '\'' +
|
||||
", storeLon=" + storeLon +
|
||||
", storeLat=" + storeLat +
|
||||
", userDist=" + userDist +
|
||||
", chkCount=" + chkCount +
|
||||
", starAvg=" + starAvg +
|
||||
", salerId=" + salerId +
|
||||
", lables=" + lables +
|
||||
", userDist=" + userDist +
|
||||
'}';
|
||||
}
|
||||
|
||||
public BigDecimal getUserDist() {
|
||||
return userDist;
|
||||
public void setStoreCount(Long providerId, SegchkProviderCntCtrl segchkProviderCntCtrl, Map<Object, Object> wechatCount, Map<Object, Object> wechatCount1) {
|
||||
this.segchkStoreCntResp = new SegchkStoreCntResp();
|
||||
this.segchkStoreCntResp.setProviderId(providerId);
|
||||
this.segchkStoreCntResp.setStoreId(this.storeId);
|
||||
this.segchkStoreCntResp.setAllCnt(segchkProviderCntCtrl, wechatCount, wechatCount1);
|
||||
}
|
||||
|
||||
public void setUserDist(BigDecimal userDist) {
|
||||
this.userDist = userDist;
|
||||
public SegchkStoreCntResp getSegchkStoreCntResp() {
|
||||
return segchkStoreCntResp;
|
||||
}
|
||||
|
||||
public void setSegchkStoreCntResp(SegchkStoreCntResp segchkStoreCntResp) {
|
||||
this.segchkStoreCntResp = segchkStoreCntResp;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,76 +0,0 @@
|
|||
package com.ruoyi.segchk.domain;
|
||||
|
||||
import com.ruoyi.common.annotation.Excel;
|
||||
import com.ruoyi.common.core.domain.BaseEntity;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* seg用户余额信息对象 segchk_user_account
|
||||
*
|
||||
* @author yinzhiying
|
||||
* @date 2021-07-01
|
||||
*/
|
||||
public class SegchkUserAccountCheck extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 用户id,全局唯一 */
|
||||
@Excel(name = "用户id,全局唯一")
|
||||
private Long userId;
|
||||
|
||||
/** 余额 */
|
||||
@Excel(name = "余额")
|
||||
private BigDecimal account;
|
||||
|
||||
/** 运营商id,全局唯一 */
|
||||
@Excel(name = "运营商id,全局唯一")
|
||||
private Long providerId;
|
||||
|
||||
/** 余额id */
|
||||
@Excel(name = "余额id")
|
||||
private Long accountId;
|
||||
|
||||
|
||||
public Long getUserId() {
|
||||
return userId;
|
||||
}
|
||||
|
||||
public void setUserId(Long userId) {
|
||||
this.userId = userId;
|
||||
}
|
||||
|
||||
public BigDecimal getAccount() {
|
||||
return account;
|
||||
}
|
||||
|
||||
public void setAccount(BigDecimal account) {
|
||||
this.account = account;
|
||||
}
|
||||
|
||||
public Long getProviderId() {
|
||||
return providerId;
|
||||
}
|
||||
|
||||
public void setProviderId(Long providerId) {
|
||||
this.providerId = providerId;
|
||||
}
|
||||
|
||||
public Long getAccountId() {
|
||||
return accountId;
|
||||
}
|
||||
|
||||
public void setAccountId(Long accountId) {
|
||||
this.accountId = accountId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "SegchkUserAccountCheck{" +
|
||||
"userId=" + userId +
|
||||
", account=" + account +
|
||||
", providerId=" + providerId +
|
||||
", accountId=" + accountId +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
|
|
@ -1,49 +0,0 @@
|
|||
package com.ruoyi.segchk.domain;
|
||||
|
||||
import com.ruoyi.common.annotation.Excel;
|
||||
import com.ruoyi.common.core.domain.BaseEntity;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* seg用户提现记录对象 segchk_user_cash
|
||||
*
|
||||
* @author yinzhiying
|
||||
* @date 2021-07-01
|
||||
*/
|
||||
public class SegchkUserCashOpsResp extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 提现额 */
|
||||
@Excel(name = "提现额")
|
||||
private BigDecimal account;
|
||||
|
||||
/** 提现id,全表唯一 */
|
||||
@Excel(name = "提现id,全表唯一")
|
||||
private Long cashId;
|
||||
|
||||
public BigDecimal getAccount() {
|
||||
return account;
|
||||
}
|
||||
|
||||
public void setAccount(BigDecimal account) {
|
||||
this.account = account;
|
||||
}
|
||||
|
||||
public Long getCashId() {
|
||||
return cashId;
|
||||
}
|
||||
|
||||
public void setCashId(Long cashId) {
|
||||
this.cashId = cashId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "SegchkUserCashOpsResp{" +
|
||||
"account=" + account +
|
||||
", cashId=" + cashId +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,9 @@
|
|||
package com.ruoyi.segchk.domain;
|
||||
|
||||
import com.ruoyi.common.core.domain.BaseEntity;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class StoreSelfCard extends BaseEntity {
|
||||
|
||||
|
|
@ -91,4 +94,12 @@ public class StoreSelfCard extends BaseEntity {
|
|||
", freeContent='" + freeContent + '\'' +
|
||||
'}';
|
||||
}
|
||||
|
||||
public boolean isValidate() {
|
||||
return this.likegoId != null
|
||||
&& this.typeId != null
|
||||
&& ((this.typeId == 2 && this.lableId != null) || (this.typeId != 2 && true))
|
||||
&& this.totalCount != null
|
||||
&& !ObjectUtils.isEmpty(this.freeContent);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package com.ruoyi.segchk.mapper;
|
||||
|
||||
import com.ruoyi.segchk.domain.*;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
|
@ -10,6 +11,7 @@ import java.util.List;
|
|||
* @author yinzhiying
|
||||
* @date 2021-08-23
|
||||
*/
|
||||
@Mapper
|
||||
public interface SegchkProviderIndexMapper
|
||||
{
|
||||
|
||||
|
|
|
|||
|
|
@ -2,11 +2,15 @@ package com.ruoyi.segchk.mapper;
|
|||
|
||||
import com.ruoyi.segchk.domain.*;
|
||||
import com.ruoyi.segchk.domain.WeChatCustomerLink;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Mapper
|
||||
@Repository
|
||||
public interface SegchkStoreIndexMapper {
|
||||
/**
|
||||
* 以会员卡为主标签,结合其他如关键字标签,优惠券标签显示商家列表
|
||||
|
|
@ -151,4 +155,8 @@ public interface SegchkStoreIndexMapper {
|
|||
Long getVipCardFromLikego(Long likegoId);
|
||||
|
||||
public int addCommentAccByComment(Long commentId);
|
||||
|
||||
SegchkStoreStatus getStatus(Map<String, Object> params);
|
||||
|
||||
List<SegchkStoreStatus> getAllStatus();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -76,13 +76,29 @@ public interface SegchkUserIndexMapper {
|
|||
public List<SegchkMsgWebResp> selectUserMsgList(SegchkUserWebReq segchkUserWebReq);
|
||||
|
||||
/**
|
||||
* 查询seg用户预约时可用卡列表
|
||||
* 查询seg用户预约时可用卡列表,已废弃
|
||||
*
|
||||
* @param segchkServiceOrderWebReq
|
||||
* @return seg用户扩展信息
|
||||
*/
|
||||
@Deprecated
|
||||
public List<SegchkServiceOrderWebReq> selectUserOrderPredCardListWebInfo(SegchkServiceOrderWebReq segchkServiceOrderWebReq);
|
||||
|
||||
/**
|
||||
* 查询seg用户预约时可用会员卡列表
|
||||
*
|
||||
* @param parmMap 运营商,商家,用户
|
||||
* @return List<SegchkServiceOrderWebReq> seg用户扩展信息
|
||||
*/
|
||||
List<SegchkServiceOrderWebReq> getUserCanUseVIPforStore(Map<String, Object> parmMap);
|
||||
|
||||
/**
|
||||
* 查询seg用户预约时可用赠卡列表
|
||||
*
|
||||
* @param parmMap 运营商,商家,用户
|
||||
* @return List<SegchkServiceOrderWebReq> seg用户扩展信息
|
||||
*/
|
||||
List<SegchkServiceOrderWebReq> getUserCanUseSelfCardforStore(Map<String, Object> parmMap);
|
||||
/**
|
||||
* 查询seg用户预约时可用卡列表
|
||||
*
|
||||
|
|
@ -92,11 +108,12 @@ public interface SegchkUserIndexMapper {
|
|||
public List<SegchkServiceOrderChkTestResp> selecttest(SegchkServiceOrderWebReq segchkServiceOrderWebReq);
|
||||
|
||||
/**
|
||||
* 查询seg用户我想去订单的有效信息
|
||||
* 查询seg用户我想去订单的有效信息, 第一版本
|
||||
*
|
||||
* @param likegoId
|
||||
* @return seg用户扩展信息
|
||||
*/
|
||||
@Deprecated
|
||||
public SegchkServiceOrderChkTestResp selectUserOrderPredInfo(Long likegoId);
|
||||
|
||||
/**
|
||||
|
|
@ -133,4 +150,10 @@ public interface SegchkUserIndexMapper {
|
|||
Map<String, Object> getCardInfo(Map<String, Object> paramsMap);
|
||||
|
||||
SegchkChargeReward selectSegchkRewardInfoForCheck(Map<String, Object> params);
|
||||
|
||||
SegchkServiceOrderChkTestResp getOrderPreInfoWithVip(SegchkUserLikego segchkUserLikego);
|
||||
|
||||
SegchkServiceOrderChkTestResp getOrderPreInfoWithSelf(SegchkUserLikego segchkUserLikego);
|
||||
|
||||
SegchkServiceOrderChkTestResp getOrderPreInfoWithCoupon(SegchkUserLikego segchkUserLikego);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package com.ruoyi.segchk.service;
|
||||
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.segchk.domain.*;
|
||||
import com.ruoyi.segchk.domain.WeChatCustomerLink;
|
||||
|
||||
|
|
@ -188,4 +189,31 @@ public interface ISegchkStoreIndexService
|
|||
HashMap<String, Object> getCustomService(Long providerId);
|
||||
|
||||
public int addCommentAccByComment(Long commentId);
|
||||
|
||||
/**
|
||||
* 获取商家的状态信息
|
||||
*
|
||||
* @param providerId 推荐人id
|
||||
* @param storeId 推荐人角色
|
||||
* @return SegchkStoreStatus 状态信息
|
||||
*/
|
||||
SegchkStoreStatus getStatus(Long providerId, Long storeId);
|
||||
|
||||
void loadingSegchkStoreStatus();
|
||||
|
||||
/**
|
||||
* 商家进行核销
|
||||
*
|
||||
* @param parmMap 请求参数:预约id,预约单商家id,remark
|
||||
* @return AjaxResult 核销结果
|
||||
*/
|
||||
AjaxResult OrderCheckTransaction(Map<String, Object> parmMap);
|
||||
|
||||
/**
|
||||
* 商家赠卡操作
|
||||
*
|
||||
* @param storeSelfCard 赠卡信息 likegoId, cardtype, ..
|
||||
* @return AjaxResult 操作结果
|
||||
*/
|
||||
int giveStoreCard(StoreSelfCard storeSelfCard);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -102,7 +102,7 @@ public interface ISegchkUserIndexService
|
|||
*/
|
||||
public void CheckUserServiceChk(SegchkUserLikego segchkUserLikego);
|
||||
|
||||
public SegchkServiceOrderChkTestResp selectUserOrderPredInfo(Long likeGoId);
|
||||
public SegchkServiceOrderChkTestResp selectUserOrderPredInfo(Map<String, Object> params);
|
||||
|
||||
/**
|
||||
* 根据核查结果进行核消。说明已经满足核消条件
|
||||
|
|
@ -289,7 +289,68 @@ public interface ISegchkUserIndexService
|
|||
*/
|
||||
public SegchkUserLikego selectUserLikeGo(SegchkUserLikego segchkUserLikego);
|
||||
|
||||
|
||||
int insertSegchkUserCharge(SegchkUserCharge segchkUserCharge);
|
||||
|
||||
SegchkUserWechat queryWeChatInfoByUserId(Claims claims);
|
||||
|
||||
/**
|
||||
* 用户新增预约
|
||||
*
|
||||
* @param segchkUserLikego 包含预约单id
|
||||
* @return 成功数量
|
||||
*/
|
||||
int insertSegchkUserLikego(SegchkUserLikego segchkUserLikego);
|
||||
|
||||
/**
|
||||
* 用户删除预约
|
||||
*
|
||||
* @param likegoIds 包含预约单id
|
||||
* @return 成功数量
|
||||
*/
|
||||
int deleteSegchkUserLikegoByLikegoIds(Long[] likegoIds);
|
||||
|
||||
/**
|
||||
* 根据预约单信息查询用户预约卡信息
|
||||
*
|
||||
* @param segchkUserLikego 预约单信息
|
||||
* @return SegchkServiceOrderChkTestResp
|
||||
*/
|
||||
SegchkServiceOrderChkTestResp getOrderPreInfo(SegchkUserLikego segchkUserLikego) throws Exception;
|
||||
|
||||
/**
|
||||
* 根据预约单信息查询用户会员卡信息
|
||||
*
|
||||
* @param segchkUserLikego 预约单信息
|
||||
* @return SegchkServiceOrderChkTestResp
|
||||
*/
|
||||
SegchkServiceOrderChkTestResp getOrderPreInfoWithVIP(SegchkUserLikego segchkUserLikego);
|
||||
|
||||
/**
|
||||
* 根据预约单信息查询用户优惠券信息
|
||||
*
|
||||
* @param segchkUserLikego 预约单信息
|
||||
* @return SegchkServiceOrderChkTestResp
|
||||
*/
|
||||
SegchkServiceOrderChkTestResp getOrderPreInfoWithCoupon(SegchkUserLikego segchkUserLikego);
|
||||
|
||||
/**
|
||||
* 根据预约单信息查询用户使用的赠卡信息
|
||||
*
|
||||
* @param segchkUserLikego 预约单信息
|
||||
* @return SegchkServiceOrderChkTestResp
|
||||
*/
|
||||
SegchkServiceOrderChkTestResp getOrderPreInfoWithSelf(SegchkUserLikego segchkUserLikego);
|
||||
|
||||
SegchkUserLikego selectSegchkUserLikegoByLikegoId(Long likeGoId);
|
||||
|
||||
int wetherCanGiveFree(Long reqlikegoId);
|
||||
|
||||
/**
|
||||
* 根据预约单信息更新信息
|
||||
*
|
||||
* @param segchkUserLikego 预约单信息
|
||||
* @return int
|
||||
*/
|
||||
int updateSegchkUserLikego(SegchkUserLikego segchkUserLikego);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,62 +0,0 @@
|
|||
package com.ruoyi.segchk.service;
|
||||
|
||||
import com.ruoyi.segchk.domain.SegchkUserLikego;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* seg用户想去记录Service接口
|
||||
*
|
||||
* @author yinzhiying
|
||||
* @date 2021-08-23
|
||||
*/
|
||||
public interface ISegchkUserLikegoService
|
||||
{
|
||||
/**
|
||||
* 查询seg用户想去记录
|
||||
*
|
||||
* @param likegoId seg用户想去记录主键
|
||||
* @return seg用户想去记录
|
||||
*/
|
||||
public SegchkUserLikego selectSegchkUserLikegoByLikegoId(Long likegoId);
|
||||
|
||||
/**
|
||||
* 查询seg用户想去记录列表
|
||||
*
|
||||
* @param segchkUserLikego seg用户想去记录
|
||||
* @return seg用户想去记录集合
|
||||
*/
|
||||
public List<SegchkUserLikego> selectSegchkUserLikegoList(SegchkUserLikego segchkUserLikego);
|
||||
|
||||
/**
|
||||
* 新增seg用户想去记录
|
||||
*
|
||||
* @param segchkUserLikego seg用户想去记录
|
||||
* @return 结果
|
||||
*/
|
||||
public int insertSegchkUserLikego(SegchkUserLikego segchkUserLikego);
|
||||
|
||||
/**
|
||||
* 修改seg用户想去记录
|
||||
*
|
||||
* @param segchkUserLikego seg用户想去记录
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateSegchkUserLikego(SegchkUserLikego segchkUserLikego);
|
||||
|
||||
/**
|
||||
* 批量删除seg用户想去记录
|
||||
*
|
||||
* @param likegoIds 需要删除的seg用户想去记录主键集合
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteSegchkUserLikegoByLikegoIds(Long[] likegoIds);
|
||||
|
||||
/**
|
||||
* 删除seg用户想去记录信息
|
||||
*
|
||||
* @param likegoId seg用户想去记录主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteSegchkUserLikegoByLikegoId(Long likegoId);
|
||||
}
|
||||
|
|
@ -1,5 +1,10 @@
|
|||
package com.ruoyi.segchk.service.impl;
|
||||
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.common.core.redis.RedisCache;
|
||||
import com.ruoyi.common.utils.DateUtils;
|
||||
import com.ruoyi.common.utils.RedisCahceKey;
|
||||
import com.ruoyi.common.utils.RedisUtil;
|
||||
import com.ruoyi.segchk.domain.*;
|
||||
import com.ruoyi.segchk.mapper.SegchkIndexStoreAccountMapper;
|
||||
import com.ruoyi.segchk.mapper.SegchkStoreCashMapper;
|
||||
|
|
@ -10,42 +15,64 @@ import com.ruoyi.segchk.domain.WeChatCustomerLink;
|
|||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.cache.annotation.Cacheable;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import javax.annotation.PostConstruct;
|
||||
import javax.annotation.Resource;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
@Service
|
||||
public class ISegchkStoreIndexServiceImpl implements ISegchkStoreIndexService {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(ISegchkStoreIndexServiceImpl.class);
|
||||
|
||||
@Autowired
|
||||
@Resource
|
||||
private SegchkStoreIndexMapper segchkStoreIndexMapper;
|
||||
|
||||
@Autowired
|
||||
@Resource
|
||||
private SegchkStoreCashMapper segchkStoreCashMapper;
|
||||
|
||||
@Autowired
|
||||
@Resource
|
||||
private SegchkIndexStoreAccountMapper segchkIndexStoreAccountMapper;
|
||||
|
||||
@Autowired
|
||||
@Resource
|
||||
private SegchkStoreSecurityMapper segchkStoreSecurityMapper;
|
||||
|
||||
@Autowired
|
||||
@Resource
|
||||
private ISegchkUserIndexService segchkUserIndexService;
|
||||
|
||||
@Autowired
|
||||
@Resource
|
||||
private ISegchkProviderMgtService segchkProviderMgtService;
|
||||
|
||||
@Autowired
|
||||
@Resource
|
||||
private ISegchkPreferenceLableService segchkPreferenceLableService;
|
||||
|
||||
@Autowired
|
||||
@Resource
|
||||
private ISegchkStoreSelfMgtService segchkStoreSelfMgtService;
|
||||
|
||||
@Autowired
|
||||
private ISegchkProviderCntCtrlService segchkProviderCntCtrlService;
|
||||
|
||||
/**
|
||||
* 注入redis服务
|
||||
*/
|
||||
@Resource
|
||||
private RedisCache redisService;
|
||||
|
||||
@Autowired
|
||||
private RedisUtil redisUtil;
|
||||
|
||||
@PostConstruct
|
||||
public void init()
|
||||
{
|
||||
loadingSegchkStoreStatus();
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据标签id,商户列表
|
||||
*
|
||||
|
|
@ -60,15 +87,17 @@ public class ISegchkStoreIndexServiceImpl implements ISegchkStoreIndexService {
|
|||
}
|
||||
boolean cardempty = ObjectUtils.isEmpty(segchkStoreWebReq.getCardId());
|
||||
boolean lableempty = ObjectUtils.isEmpty(segchkStoreWebReq.getTypeId());
|
||||
List<SegchkStoreIndexWebResp> segchkStoreIndexWebResps = null;
|
||||
|
||||
if(cardempty && lableempty) {
|
||||
// 全空,说明查询所有商家列表
|
||||
logger.debug("selectSegchkStoreList all with: {}", segchkStoreWebReq.toString());
|
||||
return segchkStoreIndexMapper.selectSegchkStoreListByAll(segchkStoreWebReq);
|
||||
segchkStoreIndexWebResps = segchkStoreIndexMapper.selectSegchkStoreListByAll(segchkStoreWebReq);
|
||||
}
|
||||
else if(!lableempty && cardempty){
|
||||
// 标签不为空,全部会员卡
|
||||
logger.debug("selectSegchkStoreList one non-card lable with: {}", segchkStoreWebReq.toString());
|
||||
return segchkStoreIndexMapper.selectSegchkStoreListByOneLable(segchkStoreWebReq);
|
||||
segchkStoreIndexWebResps = segchkStoreIndexMapper.selectSegchkStoreListByOneLable(segchkStoreWebReq);
|
||||
}
|
||||
|
||||
else if(lableempty && !cardempty){
|
||||
|
|
@ -77,12 +106,97 @@ public class ISegchkStoreIndexServiceImpl implements ISegchkStoreIndexService {
|
|||
segchkStoreWebReq.setTypeId(0);
|
||||
segchkStoreWebReq.setCardId(null);
|
||||
logger.debug("selectSegchkStoreList one card lable with: {}", segchkStoreWebReq.toString());
|
||||
return segchkStoreIndexMapper.selectSegchkStoreListByOneLable(segchkStoreWebReq);
|
||||
segchkStoreIndexWebResps = segchkStoreIndexMapper.selectSegchkStoreListByOneLable(segchkStoreWebReq);
|
||||
}
|
||||
logger.debug("selectSegchkStoreList some lable with: {}", segchkStoreWebReq.toString());
|
||||
return segchkStoreIndexMapper.selectSegchkStoreList(segchkStoreWebReq);
|
||||
else {
|
||||
logger.debug("selectSegchkStoreList some lable with: {}", segchkStoreWebReq.toString());
|
||||
segchkStoreIndexWebResps = segchkStoreIndexMapper.selectSegchkStoreList(segchkStoreWebReq);
|
||||
// objects = fillStoreCount(segchkStoreIndexMapper.selectSegchkStoreList(segchkStoreWebReq), SegchkStoreIndexWebResp.class, providerId, segchkProviderCntCtrl, wechatCount, wechatCount1);
|
||||
}
|
||||
|
||||
if(ObjectUtils.isEmpty(segchkStoreIndexWebResps)){
|
||||
return new ArrayList<SegchkStoreIndexWebResp>();
|
||||
}
|
||||
|
||||
segchkStoreIndexWebResps.parallelStream().forEach(v -> {
|
||||
v.setStoreCount(segchkStoreWebReq.getProviderId()
|
||||
, segchkProviderCntCtrlService.selectSegchkProviderCntCtrlByProviderId(segchkStoreWebReq.getProviderId())
|
||||
, redisUtil.hmget("wechatCount")
|
||||
, redisUtil.hmget("wechatCount1"));
|
||||
});
|
||||
|
||||
return segchkStoreIndexWebResps;
|
||||
// return ObjectUtils.isEmpty(objects) ? new ArrayList<SegchkStoreIndexWebResp>()
|
||||
// : objects.parallelStream().map(v -> (SegchkStoreIndexWebResp)v).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static <T> List<Object> fillStoreCount(List<T> list, Class<T> tClass, Long providerId, SegchkProviderCntCtrl segchkProviderCntCtrl, Map<Object, Object> map1, Map<Object, Object> map2) {
|
||||
|
||||
if(!ObjectUtils.isEmpty(list)){
|
||||
int bf = 0, cf = 0, of = 0;
|
||||
if(!ObjectUtils.isEmpty(segchkProviderCntCtrl)){
|
||||
bf = segchkProviderCntCtrl.getBookCnt();
|
||||
cf = segchkProviderCntCtrl.getCollectCnt();
|
||||
of = segchkProviderCntCtrl.getBookCnt();
|
||||
}
|
||||
String bk1 = "browse_cnt1:" + providerId + ":";
|
||||
String bk = "browse_cnt:" + providerId + ":";
|
||||
String ck1 = "collect_cnt1:" + providerId + ":";
|
||||
String ck = "collect_cnt:" + providerId + ":";
|
||||
String ok1 = "book_cnt1:" + providerId + ":";
|
||||
String ok = "book_cnt:" + providerId + ":";
|
||||
Object[] arr = {bk, bk1, ck, ck1, ok, ok1, bf, cf, of, map1, map2};
|
||||
if (tClass == (Class<T>) SegchkStoreIndexWebResp.class) {
|
||||
return list.parallelStream().map(v -> {
|
||||
return fillSegchkStoreIndexWebRespCount(v, arr);
|
||||
}).collect(Collectors.toList());
|
||||
}
|
||||
else if(tClass == (Class<T>) SegchkStoreIndexWebResp.class) {
|
||||
return list.parallelStream().map(v -> {
|
||||
return fillSegchkRecommenderStoreWebRespCount(v, arr);
|
||||
}).collect(Collectors.toList());
|
||||
}
|
||||
else return null;
|
||||
}
|
||||
return (List<Object>) list;
|
||||
}
|
||||
|
||||
private static <T> Object fillSegchkRecommenderStoreWebRespCount(T v, Object[] arr) {
|
||||
// {bk, bk1, ck, ck1, ok, ok1, bf, cf, of, map1, map2};
|
||||
SegchkRecommenderStoreWebResp tmp = (SegchkRecommenderStoreWebResp) v;
|
||||
Long storeId = tmp.getStoreId();
|
||||
/*tmp.setBrowseCnt(getCount(storeId, (String) arr[0], (String)arr[1], (Integer) arr[6], (Map<Object, Object>)arr[9], (Map<Object, Object>)arr[10]));
|
||||
|
||||
tmp.setCollectCnt(getCount(storeId, (String) arr[2], (String)arr[3], (Integer) arr[7], (Map<Object, Object>)arr[9], (Map<Object, Object>)arr[10]));
|
||||
|
||||
tmp.setBookCnt(getCount(storeId, (String) arr[4], (String)arr[5], (Integer) arr[8], (Map<Object, Object>)arr[9], (Map<Object, Object>)arr[10]));*/
|
||||
|
||||
return tmp;
|
||||
}
|
||||
|
||||
private static <T> Object fillSegchkStoreIndexWebRespCount(T v, Object[] arr) {
|
||||
// {bk, bk1, ck, ck1, ok, ok1, bf, cf, of, map1, map2};
|
||||
SegchkStoreIndexWebResp tmp = (SegchkStoreIndexWebResp) v;
|
||||
Long storeId = tmp.getStoreId();
|
||||
/*tmp.setBrowseCnt(getCount(storeId, (String) arr[0], (String)arr[1], (Integer) arr[6], (Map<Object, Object>)arr[9], (Map<Object, Object>)arr[10]));
|
||||
|
||||
tmp.setCollectCnt(getCount(storeId, (String) arr[2], (String)arr[3], (Integer) arr[7], (Map<Object, Object>)arr[9], (Map<Object, Object>)arr[10]));
|
||||
|
||||
tmp.setBookCnt(getCount(storeId, (String) arr[4], (String)arr[5], (Integer) arr[8], (Map<Object, Object>)arr[9], (Map<Object, Object>)arr[10]));*/
|
||||
|
||||
return tmp;
|
||||
}
|
||||
|
||||
private static Integer getCount(Long storeId, String key1, String key2, Integer flag, Map<Object, Object> objectMap1, Map<Object, Object> objectMap2) {
|
||||
return (Integer) objectMap1.getOrDefault(key1 + storeId, 0)
|
||||
+ (flag > 0
|
||||
? (Integer) objectMap2.getOrDefault(key2 + storeId, 0)
|
||||
: 0);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 标签列表
|
||||
*
|
||||
|
|
@ -126,6 +240,17 @@ public class ISegchkStoreIndexServiceImpl implements ISegchkStoreIndexService {
|
|||
boolean lableflag = lable_empty ? true : lables.parallelStream().anyMatch(lable -> lable.getLableTypeId() == segchkStoreWebReq.getTypeId() && lable.getLableId() == segchkStoreWebReq.getLableId());
|
||||
return cardflag && lableflag;
|
||||
}).collect(Collectors.toList());
|
||||
|
||||
if(ObjectUtils.isEmpty(resps)){
|
||||
return new ArrayList<SegchkStoreIndexWebResp>();
|
||||
}
|
||||
|
||||
resps.parallelStream().forEach(v -> {
|
||||
v.setStoreCount(segchkStoreWebReq.getProviderId()
|
||||
, segchkProviderCntCtrlService.selectSegchkProviderCntCtrlByProviderId(segchkStoreWebReq.getProviderId())
|
||||
, redisUtil.hmget("wechatCount")
|
||||
, redisUtil.hmget("wechatCount1"));
|
||||
});
|
||||
return resps;
|
||||
}
|
||||
|
||||
|
|
@ -304,9 +429,26 @@ public class ISegchkStoreIndexServiceImpl implements ISegchkStoreIndexService {
|
|||
@Override
|
||||
public List<SegchkRecommenderStoreWebResp> selectSegchkRecommenderStoreListByProvider(SegchkRecommenderStoreWebReq segchkRecommenderStoreWebReq) {
|
||||
logger.debug("selectSegchkRecommenderStoreListByProvider with: {}", segchkRecommenderStoreWebReq.toString());
|
||||
return segchkStoreIndexMapper.selectSegchkRecommenderStoreListWeb(segchkRecommenderStoreWebReq);
|
||||
|
||||
List<SegchkRecommenderStoreWebResp> segchkRecommenderStoreWebResps = segchkStoreIndexMapper.selectSegchkRecommenderStoreListWeb(segchkRecommenderStoreWebReq);
|
||||
|
||||
if(ObjectUtils.isEmpty(segchkRecommenderStoreWebResps)) {
|
||||
return new ArrayList<SegchkRecommenderStoreWebResp>();
|
||||
}
|
||||
|
||||
segchkRecommenderStoreWebResps.parallelStream().forEach(v -> v.setStoreCount(segchkRecommenderStoreWebReq.getProviderId()
|
||||
, segchkProviderCntCtrlService.selectSegchkProviderCntCtrlByProviderId(segchkRecommenderStoreWebReq.getProviderId())
|
||||
, redisUtil.hmget("wechatCount")
|
||||
, redisUtil.hmget("wechatCount1")));
|
||||
// List<Object> objects = fillStoreCount(segchkRecommenderStoreWebResps, SegchkRecommenderStoreWebResp.class, providerId, segchkProviderCntCtrl, wechatCount, wechatCount1);
|
||||
// return ObjectUtils.isEmpty(objects) ? new ArrayList<SegchkRecommenderStoreWebResp>()
|
||||
// : objects.parallelStream().map(v -> (SegchkRecommenderStoreWebResp)v).collect(Collectors.toList());
|
||||
return segchkRecommenderStoreWebResps;
|
||||
}
|
||||
|
||||
public <T> T fileStoreCnt(Long providerId, SegchkProviderCntCtrl segchkProviderCntCtrl, Map<Object, Object> map1, Map<Object, Object>map2, T t){
|
||||
return t;
|
||||
}
|
||||
/**
|
||||
* 返回商户openid
|
||||
*
|
||||
|
|
@ -390,4 +532,257 @@ public class ISegchkStoreIndexServiceImpl implements ISegchkStoreIndexService {
|
|||
logger.debug("addCommentAccByComment with ({}) {}", commentId, (ret > 0 ? "successed" : "failed"));
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取商家的状态信息
|
||||
*
|
||||
* @param providerId 推荐人id
|
||||
* @param storeId 推荐人角色
|
||||
* @return SegchkStoreStatus 状态信息
|
||||
*/
|
||||
@Override
|
||||
@Cacheable(value = RedisCahceKey.STORE_STATUS, key = "'STORE_STATUS' + #storeId")
|
||||
public SegchkStoreStatus getStatus(Long providerId, Long storeId) {
|
||||
Map<String, Object> params = new HashMap<>();
|
||||
params.put("providerId", providerId);
|
||||
params.put("storeId", storeId);
|
||||
return segchkStoreIndexMapper.getStatus(params);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadingSegchkStoreStatus(){
|
||||
List<SegchkStoreStatus> storeStatusList = segchkStoreIndexMapper.getAllStatus();
|
||||
logger.debug("loadingSegchkStoreStatus with ret : ", storeStatusList.size());
|
||||
storeStatusList.parallelStream().forEach(v -> {
|
||||
// SpringUtils.getBean(RedisCache.class).setCacheObject(RedisCahceKey.STORE_STATUS + "::" + RedisCahceKey.STORE_STATUS + v.getStoreId(), v);
|
||||
redisService.setCacheObject(RedisCahceKey.STORE_STATUS + "::" + RedisCahceKey.STORE_STATUS + v.getStoreId(), v);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 商家进行核销
|
||||
*
|
||||
* @param parmMap 请求参数:预约id,预约单商家id,remark
|
||||
* @return AjaxResult 核销结果
|
||||
*/
|
||||
@Override
|
||||
public AjaxResult OrderCheckTransaction(Map<String, Object> parmMap) {
|
||||
|
||||
Object olikegoId = parmMap.getOrDefault("likegoId", null);
|
||||
Object ostoreId = parmMap.getOrDefault("storeId", null);
|
||||
if( ObjectUtils.isEmpty(olikegoId) || ObjectUtils.isEmpty(ostoreId) ){
|
||||
logger.error("OrderCheckTransaction error with no likegoId:{} or storeId:{}", olikegoId, ostoreId);
|
||||
return new AjaxResult(500, "请求异常,请联系客服");
|
||||
}
|
||||
String orderKey = RedisCahceKey.ORDER_INFO + "::" + olikegoId.toString();
|
||||
// 查询本次要核销的信息,会员卡或赠卡信息
|
||||
Object userLikeGoO = redisService.getCacheObject(orderKey);
|
||||
SegchkUserLikego segchkUserLikego = null;
|
||||
Object segchkProviderMgto = null;
|
||||
if(ObjectUtils.isEmpty(userLikeGoO)){
|
||||
logger.warn("OrderCheckTransaction no order cache for {}", olikegoId.toString());
|
||||
segchkUserLikego = segchkUserIndexService.selectSegchkUserLikegoByLikegoId(Long.valueOf(String.valueOf(olikegoId)));
|
||||
if(ObjectUtils.isEmpty(segchkUserLikego)) {
|
||||
return new AjaxResult(500, "预约单失效,请用户重新添加");
|
||||
}
|
||||
else{
|
||||
segchkProviderMgto = segchkProviderMgtService.selectSegchkProviderMgtByProviderId(segchkUserLikego.getProviderId());
|
||||
int ttl = ((SegchkProviderMgt)segchkProviderMgto).getBookLiveHour() > 0 ? ((SegchkProviderMgt)segchkProviderMgto).getBookLiveHour() : -1;
|
||||
if (DateUtils.getDatePoor(DateUtils.getNowDate(), segchkUserLikego.getModTime(), 1) > ttl){
|
||||
return new AjaxResult(500, "预约单过期,请用户重新添加");
|
||||
}
|
||||
if(ttl > 0){
|
||||
redisService.setCacheObject(RedisCahceKey.ORDER_INFO + "::" + segchkUserLikego.getLikegoId(), segchkUserLikego, ttl, TimeUnit.HOURS);
|
||||
}
|
||||
else {
|
||||
redisService.setCacheObject(RedisCahceKey.ORDER_INFO + "::" + segchkUserLikego.getLikegoId(), segchkUserLikego);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
segchkUserLikego = (SegchkUserLikego) userLikeGoO;
|
||||
}
|
||||
|
||||
Integer cardType = segchkUserLikego.getCardType();
|
||||
Long storeId = segchkUserLikego.getStoreId();
|
||||
|
||||
segchkProviderMgto = segchkProviderMgto == null ? redisService.getCacheObject(RedisCahceKey.PROVIDER_INFO + "::" + segchkUserLikego.getProviderId()): segchkProviderMgto;
|
||||
SegchkProviderMgt segchkProviderMgt = null;
|
||||
if(ObjectUtils.isEmpty(segchkProviderMgto)){
|
||||
segchkProviderMgt = segchkProviderMgtService.selectSegchkProviderMgtByProviderId(segchkUserLikego.getProviderId());
|
||||
}
|
||||
segchkProviderMgt = (SegchkProviderMgt) segchkProviderMgto;
|
||||
SegchkServiceOrderChkTestResp segchkServiceOrderChkTestResp = null;
|
||||
try {
|
||||
segchkServiceOrderChkTestResp = segchkUserIndexService.getOrderPreInfo(segchkUserLikego);
|
||||
Integer isExpire = segchkServiceOrderChkTestResp.getIsExpire();
|
||||
Integer cardStatus = segchkServiceOrderChkTestResp.getCardStatus();
|
||||
Long cardId = segchkServiceOrderChkTestResp.getCardId();
|
||||
Integer totalCount = segchkServiceOrderChkTestResp.getTotalCount();
|
||||
Integer hasLeftCount = segchkServiceOrderChkTestResp.getHasLeftCount();
|
||||
Integer mgtState = segchkServiceOrderChkTestResp.getMgtState();
|
||||
Integer canFree = segchkServiceOrderChkTestResp.getCanFree();
|
||||
Integer vipLeftCount = segchkServiceOrderChkTestResp.getVipLeftCount();
|
||||
|
||||
if(isExpire == 1 || cardStatus != 0){
|
||||
logger.warn("OrderCheckTransaction the card({}) with likego({}) is expire", cardId, olikegoId.toString());
|
||||
lostOrder(segchkUserLikego);
|
||||
return new AjaxResult(500, "该预约单所用卡已失效");
|
||||
}
|
||||
else if(totalCount == 0){
|
||||
logger.warn("OrderCheckTransaction the store({}) no longer support the card({}) with likego({})", storeId, cardId, olikegoId.toString());
|
||||
lostOrder(segchkUserLikego);
|
||||
return new AjaxResult(500, "本店已不支持该类型卡核销");
|
||||
}
|
||||
else if(hasLeftCount <= 0 || vipLeftCount < 1){
|
||||
logger.warn("OrderCheckTransaction the card({}) with likego({}) had check over the store", cardId, olikegoId.toString());
|
||||
return new AjaxResult(500, "该卡已在本店无可用权益次数");
|
||||
}
|
||||
|
||||
Integer canGiveSelf = segchkProviderMgt.getCanGiveSelf();
|
||||
if(canGiveSelf == 0) {
|
||||
segchkServiceOrderChkTestResp.setCanFree(0);
|
||||
}
|
||||
|
||||
segchkServiceOrderChkTestResp.setLikegoId(segchkUserLikego.getLikegoId());
|
||||
segchkServiceOrderChkTestResp.setCardType(cardType);
|
||||
segchkServiceOrderChkTestResp.setMgtState(segchkUserLikego.getMgtState());
|
||||
segchkServiceOrderChkTestResp.setStoreId(segchkUserLikego.getStoreId());
|
||||
switch (cardType){
|
||||
case 0: {
|
||||
if(mgtState == 0 && vipLeftCount == 1){
|
||||
// 如果用户只有当前会员卡,并且该卡只有当前一次时,说明用户本次核销后不再有可用的会员卡,则不可以赠卡,
|
||||
segchkServiceOrderChkTestResp.setCanFree(0);
|
||||
break;
|
||||
}
|
||||
// 会员卡的判断处理
|
||||
if(canGiveSelf == 1 && canFree >= 1){
|
||||
// 如果只允许商家针对一个用户只能有一张卡且该用户已有该商家的可使用赠卡时,不可以再赠卡
|
||||
segchkServiceOrderChkTestResp.setCanFree(0);
|
||||
}
|
||||
else if((canGiveSelf == 1 && canFree == 0) || canGiveSelf == 2){
|
||||
segchkServiceOrderChkTestResp.setCanFree(1);
|
||||
}
|
||||
else {
|
||||
segchkServiceOrderChkTestResp.setCanFree(0);
|
||||
segchkServiceOrderChkTestResp.setSegchkRecommenderStoreLableWebList(null);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
case 2: {
|
||||
// 当该预约单为赠卡或优惠卡时,首先要判断该用户是否有可用的会员卡,如果没有可用的会员卡,则直接不可赠卡
|
||||
if(mgtState < 1) {
|
||||
segchkServiceOrderChkTestResp.setCanFree(0);
|
||||
break;
|
||||
}
|
||||
// 针对使用赠卡的预约单
|
||||
if(canGiveSelf == 1 && hasLeftCount > 1) {
|
||||
// 如果只允许商家用户持有一张卡,但是已持有的卡除了本次使用的次数,还有剩余的次数,则不允许再赠卡
|
||||
segchkServiceOrderChkTestResp.setCanFree(0);
|
||||
}
|
||||
else {
|
||||
segchkServiceOrderChkTestResp.setCanFree(1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
default: segchkServiceOrderChkTestResp.setCanFree(0);break;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return new AjaxResult(400, "核销异常");
|
||||
}
|
||||
// 结合卡片信息,及运营商管理,判断是否具备赠卡条件
|
||||
// 结合赠卡决定,判断是否需要查询该商家可以赠送的卡
|
||||
Object cacheObject = redisService.getCacheObject(RedisCahceKey.PROVIDER_INFO + ":FIRST_CHECK_REWARD:" + segchkUserLikego.getProviderId());
|
||||
Boolean stoRewardWithChk = ObjectUtils.isEmpty(cacheObject) ? false : new Boolean(String.valueOf(cacheObject));
|
||||
|
||||
// 进行核销
|
||||
int ret = segchkUserIndexService.OrderCheckTransaction(segchkServiceOrderChkTestResp, segchkUserLikego.getLikegoId(), stoRewardWithChk);
|
||||
|
||||
if(segchkServiceOrderChkTestResp.getCanFree() == 0){
|
||||
segchkServiceOrderChkTestResp.setSegchkRecommenderStoreLableWebList(null);
|
||||
// 不能赠卡,则从redis中删除订单信息
|
||||
redisService.deleteObject(orderKey);
|
||||
}
|
||||
else {
|
||||
SegchkRecommenderStoreLableWeb lable = new SegchkRecommenderStoreLableWeb();
|
||||
lable.setLableId(0);
|
||||
lable.setLableTypeId(1);
|
||||
lable.setLableName("本店尊享");
|
||||
segchkServiceOrderChkTestResp.setSegchkRecommenderStoreLableWebList(Arrays.asList(lable));
|
||||
// 在redis中缓存可以赠卡的订单号
|
||||
redisService.setCacheObject(RedisCahceKey.GIVE_FREE_CARD + "::" + segchkServiceOrderChkTestResp.getLikegoId(), olikegoId);
|
||||
// 如果可以赠卡,则将订单状态进行更新,同时订单允许赠卡
|
||||
segchkUserLikego.setMgtState(2);
|
||||
segchkUserLikego.setCanGiveSelf(1);
|
||||
redisService.setCacheObject(orderKey, segchkUserLikego);
|
||||
}
|
||||
|
||||
return ret == 3 ? new AjaxResult(200, "核销成功", segchkServiceOrderChkTestResp) : new AjaxResult(500, "核销失败");
|
||||
}
|
||||
|
||||
private void lostOrder(SegchkUserLikego segchkUserLikego) {
|
||||
segchkUserLikego.setMgtState(1);
|
||||
int ret = segchkUserIndexService.updateSegchkUserLikego(segchkUserLikego);
|
||||
if(ret == 1){
|
||||
String orderKey = RedisCahceKey.ORDER_INFO + "::" + segchkUserLikego.getLikegoId();
|
||||
redisService.deleteObject(orderKey);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 商家赠卡操作
|
||||
*
|
||||
* @param storeSelfCard 赠卡信息 likegoId, cardtype, ..
|
||||
* @return AjaxResult 操作结果
|
||||
*/
|
||||
@Override
|
||||
public int giveStoreCard(StoreSelfCard storeSelfCard) {
|
||||
if(ObjectUtils.isEmpty(storeSelfCard) || !storeSelfCard.isValidate()){
|
||||
// 请求参数异常
|
||||
logger.error("giveStoreCard request params is wrong with {}", storeSelfCard.toString());
|
||||
return -1;
|
||||
}
|
||||
// 根据likegoid获取是否可赠卡标识,及订单信息
|
||||
Long reqlikegoId = storeSelfCard.getLikegoId();
|
||||
Object cacheObject = redisService.getCacheObject(RedisCahceKey.GIVE_FREE_CARD + "::" + reqlikegoId);
|
||||
if(ObjectUtils.isEmpty(cacheObject)) {
|
||||
if(segchkUserIndexService.wetherCanGiveFree(reqlikegoId) != 1) return -2;
|
||||
cacheObject = reqlikegoId;
|
||||
redisService.setCacheObject(RedisCahceKey.GIVE_FREE_CARD + "::" + reqlikegoId, cacheObject);
|
||||
}
|
||||
Long likeGoId = Long.valueOf(String.valueOf(cacheObject));
|
||||
|
||||
String orderKey = RedisCahceKey.ORDER_INFO + "::" + reqlikegoId;
|
||||
Object userLikeGoO = redisService.getCacheObject(orderKey);
|
||||
if(ObjectUtils.isEmpty(userLikeGoO)) {
|
||||
return -3;
|
||||
}
|
||||
|
||||
SegchkUserLikego segchkUserLikego = (SegchkUserLikego)userLikeGoO;
|
||||
|
||||
if(segchkUserLikego.getStoreId() != storeSelfCard.getStoreId()){
|
||||
return -4;
|
||||
}
|
||||
|
||||
SegchkStoreSelfMgt segchkStoreSelfMgt = new SegchkStoreSelfMgt();
|
||||
segchkStoreSelfMgt.setStoreId(storeSelfCard.getStoreId());
|
||||
segchkStoreSelfMgt.setCardId(segchkUserLikego.getCardId());
|
||||
segchkStoreSelfMgt.setUserId(segchkUserLikego.getUserId());
|
||||
segchkStoreSelfMgt.setTypeId(storeSelfCard.getTypeId());
|
||||
segchkStoreSelfMgt.setFreeCount(storeSelfCard.getTotalCount());
|
||||
segchkStoreSelfMgt.setLableId(storeSelfCard.getTypeId() == 2 ? storeSelfCard.getLableId() : 0L);
|
||||
segchkStoreSelfMgt.setFreeName(storeSelfCard.getTypeId() == 2 ? null : "赠卡");
|
||||
segchkStoreSelfMgt.setFreeContent(storeSelfCard.getFreeContent());
|
||||
segchkStoreSelfMgt.setLeftCount(storeSelfCard.getTotalCount());
|
||||
segchkStoreSelfMgt.setProviderId(segchkUserLikego.getProviderId());
|
||||
Integer ret = addStoreSelfCard(segchkStoreSelfMgt);
|
||||
if(ret != 1){
|
||||
logger.error("giveStoreCard failed with --- {}", segchkStoreSelfMgt.toString());
|
||||
}
|
||||
redisService.deleteObject(RedisCahceKey.GIVE_FREE_CARD + "::" + reqlikegoId);
|
||||
redisService.deleteObject(orderKey);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,9 @@
|
|||
package com.ruoyi.segchk.service.impl;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.ruoyi.common.core.redis.RedisCache;
|
||||
import com.ruoyi.common.utils.RedisCahceKey;
|
||||
import com.ruoyi.common.utils.RedisUtil;
|
||||
import com.ruoyi.order.service.impl.PaySupplier;
|
||||
//import com.ruoyi.order.service.impl.WechatWithdrawSupplier;
|
||||
import com.ruoyi.segchk.domain.*;
|
||||
|
|
@ -22,12 +25,14 @@ import org.springframework.transaction.annotation.Transactional;
|
|||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
import org.springframework.util.StringUtils;
|
||||
import org.springframework.web.bind.annotation.ExceptionHandler;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.math.BigDecimal;
|
||||
import java.net.URLEncoder;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
|
@ -113,12 +118,21 @@ public class SegchkUserIndexServiceImpl implements ISegchkUserIndexService
|
|||
@Autowired
|
||||
private ISegchkUserAccountService segchkUserAccountService;
|
||||
|
||||
|
||||
@Autowired
|
||||
private ISegchkUserLikegoService segchkUserLikegoService;
|
||||
/**
|
||||
* 注入支付设置服务
|
||||
*/
|
||||
@Autowired
|
||||
private ILsPaySettingService paySetService;
|
||||
|
||||
@Autowired
|
||||
private RedisUtil redisUtil;
|
||||
|
||||
@Autowired
|
||||
private RedisCache redisService;
|
||||
|
||||
@Value("${segchk.cash.store_threshold:#{0.0}}")
|
||||
private BigDecimal storeThreshold;
|
||||
|
||||
|
|
@ -255,11 +269,18 @@ public class SegchkUserIndexServiceImpl implements ISegchkUserIndexService
|
|||
*/
|
||||
@Override
|
||||
public List<SegchkServiceOrderWebReq> selectUserOrderPredCardListWebInfo(SegchkServiceOrderWebReq segchkServiceOrderWebReq) {
|
||||
SegchkStoreStatus status = segchkStoreIndexService.getStatus(segchkServiceOrderWebReq.getProviderId(), segchkServiceOrderWebReq.getStoreId());
|
||||
|
||||
SegchkProviderMgt segchkProviderMgt = (SegchkProviderMgt)redisService.getCacheObject(RedisCahceKey.PROVIDER_INFO + "::" + status.getProviderId());
|
||||
logger.debug("get store status {}", status.toString());
|
||||
AtomicInteger a = new AtomicInteger(-1);
|
||||
/*
|
||||
|
||||
List<SegchkServiceOrderWebReq> segchkServiceOrderWebReqs = segchkUserIndexMapper.selectUserOrderPredCardListWebInfo(segchkServiceOrderWebReq);
|
||||
// 如果返回结果是空,则说明无会员卡或赠卡或用,如果返回的结果中没有会员卡,说明无可用卡;如果返回的结果中,存在会员卡的store_id为空的情况:说明该赠卡可用,但是该会员卡在该商家不可用;如果是会员卡的时候并且card_id也是空的情况:说明该赠卡可用,但是该会员卡在该商家已经超过了商家的核销次数
|
||||
AtomicInteger a = new AtomicInteger(-1);
|
||||
|
||||
if(CollectionUtils.isEmpty(segchkServiceOrderWebReqs)
|
||||
|| segchkServiceOrderWebReqs.stream().noneMatch(v -> v.getTypeId() == 0)){
|
||||
|| (status.getUseSelfCardWithNovip() == 0 && segchkServiceOrderWebReqs.stream().noneMatch(v -> v.getTypeId() == 0))){
|
||||
logger.debug("selectUserOrderPredCardListWebInfo with: {} --- {}", segchkServiceOrderWebReq.toString(), "this user no card can use in this store");
|
||||
return new ArrayList<SegchkServiceOrderWebReq>();
|
||||
}
|
||||
|
|
@ -286,6 +307,30 @@ public class SegchkUserIndexServiceImpl implements ISegchkUserIndexService
|
|||
logger.debug("selectUserOrderPredCardListWebInfo with: {} --- {}{}", segchkServiceOrderWebReq.toString(), sb.toString(), segchkServiceOrderWebReqs1.size());
|
||||
|
||||
return segchkServiceOrderWebReqs1;
|
||||
|
||||
*/
|
||||
// 拼接查询参数
|
||||
Map<String, Object> parmMap = new HashMap<>();
|
||||
parmMap.put("storeId", segchkServiceOrderWebReq.getStoreId());
|
||||
parmMap.put("userId", segchkServiceOrderWebReq.getUserId());
|
||||
parmMap.put("providerId", segchkServiceOrderWebReq.getProviderId());
|
||||
parmMap.put("testFlag", null);
|
||||
|
||||
// 分别查询该用户在该商家可用的会员卡和赠卡
|
||||
List<SegchkServiceOrderWebReq> userCanUseVIPforStore = segchkUserIndexMapper.getUserCanUseVIPforStore(parmMap);
|
||||
List<SegchkServiceOrderWebReq> userCanUseSelfCardforStore = segchkUserIndexMapper.getUserCanUseSelfCardforStore(parmMap);
|
||||
boolean no_vip = CollectionUtils.isEmpty(userCanUseVIPforStore);
|
||||
boolean no_self = CollectionUtils.isEmpty(userCanUseSelfCardforStore);
|
||||
if(no_vip && ( no_self || (!no_self && status.getUseSelfCardWithNovip() == 0 && segchkProviderMgt.getUseSelfCardWithNovip() == 0))){
|
||||
logger.debug("selectUserOrderPredCardListWebInfo with: {} --- {}{}{}", parmMap.entrySet().parallelStream().map(v -> v.getKey() + ":" + v.getValue()).collect(Collectors.joining(",")), no_vip, no_self, "this user no card can use in this store");
|
||||
return new ArrayList<SegchkServiceOrderWebReq>();
|
||||
}
|
||||
// 如果会员卡中的商家信息空,说明该商家不支持该会员卡;
|
||||
// 如果该会员卡在该商家核销次数超过该商家针对该卡支持次数;
|
||||
List<SegchkServiceOrderWebReq> userCanUseVIPforStore1 = userCanUseVIPforStore.parallelStream().filter(v -> !ObjectUtils.isEmpty(v.getStoreId()) && v.getHadChkCount() < v.getStoreChkCount()).collect(Collectors.toList());
|
||||
|
||||
CollectionUtils.mergeArrayIntoCollection((no_self ? new ArrayList<SegchkServiceOrderWebReq>().toArray() : userCanUseSelfCardforStore.toArray()), userCanUseVIPforStore1);
|
||||
return userCanUseVIPforStore1;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -313,9 +358,9 @@ public class SegchkUserIndexServiceImpl implements ISegchkUserIndexService
|
|||
}
|
||||
|
||||
@Override
|
||||
public SegchkServiceOrderChkTestResp selectUserOrderPredInfo(Long likegoId) {
|
||||
logger.debug("selectUserOrderPredInfo with: {}", likegoId.toString());
|
||||
return segchkUserIndexMapper.selectUserOrderPredInfo(likegoId);
|
||||
public SegchkServiceOrderChkTestResp selectUserOrderPredInfo(Map<String, Object> params) {
|
||||
logger.debug("selectUserOrderPredInfo with: {}", params.get("likegoId").toString());
|
||||
return segchkUserIndexMapper.selectUserOrderPredInfo((Long)params.get("likegoId"));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -393,7 +438,9 @@ public class SegchkUserIndexServiceImpl implements ISegchkUserIndexService
|
|||
SegchkUserLikego segchkUserLikego = new SegchkUserLikego();
|
||||
segchkUserLikego.setLikegoId(likegoId);
|
||||
segchkUserLikego.setMgtState(2);
|
||||
|
||||
// 针对该订单设置赠卡标识
|
||||
segchkUserLikego.setCanGiveSelf(segchkServiceOrderChkTestResp.getCanFree());
|
||||
// 更新订单状态
|
||||
ret += segchkUserLikegoMapper.updateSegchkUserLikego(segchkUserLikego);
|
||||
logger.debug("OrderCheckTransaction update({}) likego({})"
|
||||
, (ret == 3 ? "successed" : "failed")
|
||||
|
|
@ -1307,6 +1354,130 @@ public class SegchkUserIndexServiceImpl implements ISegchkUserIndexService
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户新增预约
|
||||
*
|
||||
* @param segchkUserLikego 包含预约单id
|
||||
* @return 成功数量
|
||||
*/
|
||||
@Override
|
||||
public int insertSegchkUserLikego(SegchkUserLikego segchkUserLikego) {
|
||||
int ret = segchkUserLikegoService.insertSegchkUserLikego(segchkUserLikego);
|
||||
if(ret > 0){
|
||||
segchkUserLikego = segchkUserLikegoService.selectSegchkUserLikegoByLikegoId(segchkUserLikego.getLikegoId());
|
||||
Object cacheObject = redisService.getCacheObject(RedisCahceKey.PROVIDER_INFO + "::" + segchkUserLikego.getProviderId());
|
||||
int ttl = -1;
|
||||
if(!ObjectUtils.isEmpty(cacheObject) && !ObjectUtils.isEmpty(((SegchkProviderMgt)cacheObject).getBookLiveHour())) {
|
||||
int tmpttl = ((SegchkProviderMgt)cacheObject).getBookLiveHour();
|
||||
ttl = tmpttl > 0 ? tmpttl : -1;
|
||||
}
|
||||
|
||||
if(ttl > 0){
|
||||
redisService.setCacheObject(RedisCahceKey.ORDER_INFO + "::" + segchkUserLikego.getLikegoId(), segchkUserLikego, ttl, TimeUnit.HOURS);
|
||||
}
|
||||
else {
|
||||
redisService.setCacheObject(RedisCahceKey.ORDER_INFO + "::" + segchkUserLikego.getLikegoId(), segchkUserLikego);
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户删除预约
|
||||
*
|
||||
* @param likegoIds 包含预约单id
|
||||
* @return 成功数量
|
||||
*/
|
||||
@Override
|
||||
public int deleteSegchkUserLikegoByLikegoIds(Long[] likegoIds) {
|
||||
return segchkUserLikegoService.deleteSegchkUserLikegoByLikegoIds(likegoIds);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据预约单信息查询用户预约卡信息
|
||||
*
|
||||
* @param segchkUserLikego 预约单信息
|
||||
* @return SegchkServiceOrderChkTestResp
|
||||
*/
|
||||
@Override
|
||||
public SegchkServiceOrderChkTestResp getOrderPreInfo(SegchkUserLikego segchkUserLikego) throws Exception{
|
||||
Integer cardType = segchkUserLikego.getCardType();
|
||||
switch (cardType) {
|
||||
case 0: {
|
||||
// 如果用户使用会员卡预约,则查询该会员卡相关信息
|
||||
return getOrderPreInfoWithVIP(segchkUserLikego);
|
||||
}
|
||||
case 1: {
|
||||
// 如果用户使用赠卡预约,则查询该卡相关信息
|
||||
return getOrderPreInfoWithSelf(segchkUserLikego);
|
||||
}
|
||||
case 2: {
|
||||
// 如果用户使用赠卡预约,则查询该卡相关信息
|
||||
return getOrderPreInfoWithCoupon(segchkUserLikego);
|
||||
}
|
||||
default:
|
||||
throw new IllegalStateException("Unexpected value: " + cardType);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据预约单信息查询用户会员卡信息
|
||||
*
|
||||
* @param segchkUserLikego 预约单信息
|
||||
* @return SegchkServiceOrderChkTestResp
|
||||
*/
|
||||
@Override
|
||||
public SegchkServiceOrderChkTestResp getOrderPreInfoWithVIP(SegchkUserLikego segchkUserLikego) {
|
||||
return segchkUserIndexMapper.getOrderPreInfoWithVip(segchkUserLikego);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据预约单信息查询用户优惠券信息
|
||||
*
|
||||
* @param segchkUserLikego 预约单信息
|
||||
* @return SegchkServiceOrderChkTestResp
|
||||
*/
|
||||
@Override
|
||||
public SegchkServiceOrderChkTestResp getOrderPreInfoWithCoupon(SegchkUserLikego segchkUserLikego) {
|
||||
return segchkUserIndexMapper.getOrderPreInfoWithCoupon(segchkUserLikego);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据预约单信息查询用户使用的赠卡信息
|
||||
*
|
||||
* @param segchkUserLikego 预约单信息
|
||||
* @return SegchkServiceOrderChkTestResp
|
||||
*/
|
||||
@Override
|
||||
public SegchkServiceOrderChkTestResp getOrderPreInfoWithSelf(SegchkUserLikego segchkUserLikego) {
|
||||
return segchkUserIndexMapper.getOrderPreInfoWithSelf(segchkUserLikego);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SegchkUserLikego selectSegchkUserLikegoByLikegoId(Long likeGoId) {
|
||||
return segchkUserLikegoService.selectSegchkUserLikegoByLikegoId(likeGoId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int wetherCanGiveFree(Long reqlikegoId) {
|
||||
SegchkUserLikego segchkUserLikego = segchkUserLikegoService.selectSegchkUserLikegoByLikegoId(reqlikegoId);
|
||||
if(ObjectUtils.isEmpty(segchkUserLikego) || segchkUserLikego.getCanGiveSelf() == null || segchkUserLikego.getCanGiveSelf() != 1) {
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据预约单信息更新信息
|
||||
*
|
||||
* @param segchkUserLikego 预约单信息
|
||||
* @return int
|
||||
*/
|
||||
@Override
|
||||
public int updateSegchkUserLikego(SegchkUserLikego segchkUserLikego) {
|
||||
return segchkUserLikegoService.updateSegchkUserLikego(segchkUserLikego);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 微信支付回调
|
||||
|
|
|
|||
|
|
@ -1,96 +0,0 @@
|
|||
package com.ruoyi.segchk.service.impl;
|
||||
|
||||
import com.ruoyi.segchk.domain.SegchkUserLikego;
|
||||
import com.ruoyi.segchk.mapper.SegchkUserLikegoMapper;
|
||||
import com.ruoyi.segchk.service.ISegchkUserLikegoService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* seg用户想去记录Service业务层处理
|
||||
*
|
||||
* @author yinzhiying
|
||||
* @date 2021-08-23
|
||||
*/
|
||||
@Service
|
||||
public class SegchkUserLikegoServiceImpl implements ISegchkUserLikegoService
|
||||
{
|
||||
@Autowired
|
||||
private SegchkUserLikegoMapper segchkUserLikegoMapper;
|
||||
|
||||
/**
|
||||
* 查询seg用户想去记录
|
||||
*
|
||||
* @param likegoId seg用户想去记录主键
|
||||
* @return seg用户想去记录
|
||||
*/
|
||||
@Override
|
||||
public SegchkUserLikego selectSegchkUserLikegoByLikegoId(Long likegoId)
|
||||
{
|
||||
return segchkUserLikegoMapper.selectSegchkUserLikegoByLikegoId(likegoId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询seg用户想去记录列表
|
||||
*
|
||||
* @param segchkUserLikego seg用户想去记录
|
||||
* @return seg用户想去记录
|
||||
*/
|
||||
@Override
|
||||
public List<SegchkUserLikego> selectSegchkUserLikegoList(SegchkUserLikego segchkUserLikego)
|
||||
{
|
||||
return segchkUserLikegoMapper.selectSegchkUserLikegoList(segchkUserLikego);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增seg用户想去记录
|
||||
*
|
||||
* @param segchkUserLikego seg用户想去记录
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int insertSegchkUserLikego(SegchkUserLikego segchkUserLikego)
|
||||
{
|
||||
// 此处根据用户id,卡id,卡类型,卡标签,商户id,及运营商id,生成预约二维码
|
||||
segchkUserLikego.setQrCode(String.format("qrcode-%s-%s-%s-%s-%s", segchkUserLikego.getProviderId(), segchkUserLikego.getStoreId(), segchkUserLikego.getUserId(), segchkUserLikego.getCardId(), segchkUserLikego.getCardType()));
|
||||
return segchkUserLikegoMapper.insertSegchkUserLikego(segchkUserLikego);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改seg用户想去记录
|
||||
*
|
||||
* @param segchkUserLikego seg用户想去记录
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int updateSegchkUserLikego(SegchkUserLikego segchkUserLikego)
|
||||
{
|
||||
return segchkUserLikegoMapper.updateSegchkUserLikego(segchkUserLikego);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除seg用户想去记录
|
||||
*
|
||||
* @param likegoIds 需要删除的seg用户想去记录主键
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int deleteSegchkUserLikegoByLikegoIds(Long[] likegoIds)
|
||||
{
|
||||
return segchkUserLikegoMapper.deleteSegchkUserLikegoByLikegoIds(likegoIds);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除seg用户想去记录信息
|
||||
*
|
||||
* @param likegoId seg用户想去记录主键
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int deleteSegchkUserLikegoByLikegoId(Long likegoId)
|
||||
{
|
||||
return segchkUserLikegoMapper.deleteSegchkUserLikegoByLikegoId(likegoId);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,63 @@
|
|||
package com.ruoyi.util.bean;
|
||||
|
||||
import com.ruoyi.common.core.redis.RedisCache;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.core.Ordered;
|
||||
import org.springframework.core.annotation.Order;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import javax.annotation.PreDestroy;
|
||||
|
||||
@Component
|
||||
@Order(Ordered.HIGHEST_PRECEDENCE)
|
||||
public class AppListenHandler {
|
||||
private Logger logger = LoggerFactory.getLogger(this.getClass());
|
||||
|
||||
@Autowired
|
||||
private RedisCache redisCache;
|
||||
|
||||
@Autowired
|
||||
|
||||
|
||||
public AppListenHandler() {
|
||||
logger.info("开始进行计数缓存!");
|
||||
}
|
||||
|
||||
@PostConstruct
|
||||
public void init() throws Exception {
|
||||
//将数据库中的数据写入redis
|
||||
/*List<Article> articleList = articleService.queryAll();
|
||||
articleList.forEach(article -> {
|
||||
//将浏览量写入redis
|
||||
//分别有浏览量,点赞数,评论数
|
||||
HashMap<String, Object> h1 = new HashMap<>();
|
||||
h1.put("viewNum",article.getViewNum());
|
||||
h1.put("likeNum",article.getLikeNum());
|
||||
h1.put("commentNum",article.getCommentNum());
|
||||
redisUtil.zsAdd("commentNum",article.getArticleId().toString(),h1);
|
||||
redisUtil.zsAdd("viewNum",article.getArticleId().toString(),h1);
|
||||
redisUtil.zsAdd("likeNum",article.getArticleId().toString(),h1);
|
||||
});*/
|
||||
|
||||
this.logger.info("已写入redis");
|
||||
}
|
||||
|
||||
//关闭时操作
|
||||
@PreDestroy
|
||||
public void afterDestroy(){
|
||||
System.out.println("关闭====================================");
|
||||
//将redis中的数据一次性写入数据库
|
||||
/*Set<DefaultTypedTuple> viewNum = redisUtil.zsReverseRangeWithScores("viewNum");
|
||||
Set<DefaultTypedTuple> commentNum = redisUtil.zsReverseRangeWithScores("commentNum");
|
||||
Set<DefaultTypedTuple> likeNum = redisUtil.zsReverseRangeWithScores("likeNum");
|
||||
this.writeNum(viewNum,"viewNum");
|
||||
this.writeNum(commentNum,"commentNum");
|
||||
this.writeNum(likeNum,"likeNum");*/
|
||||
|
||||
this.logger.info("数据库拿出到redis完毕");
|
||||
System.out.println("系统关闭===========reids->数据库更新完毕=================");
|
||||
}
|
||||
}
|
||||
|
|
@ -141,6 +141,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<result property="providerId" column="provider_id"/>
|
||||
</resultMap>
|
||||
|
||||
<resultMap id="SegchkStoreStatusResult" type="SegchkStoreStatus">
|
||||
<result property="providerId" column="provider_id"/>
|
||||
<result property="storeId" column="store_id"/>
|
||||
<result property="serviceState" column="service_state"/>
|
||||
<result property="withMsg" column="with_msg"/>
|
||||
<result property="stateFlag" column="state_flag"/>
|
||||
<result property="useSelfCardWithNovip" column="use_self_card_with_novip"/>
|
||||
</resultMap>
|
||||
|
||||
<sql id="selectSegchkCarouseMgtVo1">
|
||||
select provider_id, store_id, store_carousel, sort_id from segchk_carouse_mgt
|
||||
</sql>
|
||||
|
|
@ -553,6 +562,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
(select provider_id, store_id, store_name, store_phone, service_state, saler_id, store_addr, store_lon, store_lat, on_service, detail from segchk_store_basic_info where provider_id = #{providerId} and store_id = #{storeId}) basic
|
||||
left join
|
||||
(select provider_id, store_id, vr_url, thumb_path, service_state from segchk_store_vr_info where provider_id = #{providerId} and store_id = #{storeId} and service_state = 0) vrinfo on vrinfo.store_id = basic.store_id and vrinfo.provider_id = basic.provider_id
|
||||
left join
|
||||
(select provider_id, store_id, store_carousel1, store_carousel2, store_carousel3, store_carousel4, store_carousel5, store_carousel6 from segchk_store_image where provider_id = #{providerId} and store_id = #{storeId}) img on img.store_id = basic.store_id and img.provider_id = basic.provider_id
|
||||
left join (
|
||||
<!-- # 查询商户的累积核消次数-->
|
||||
|
|
@ -798,4 +808,24 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<select id="getVipCardFromLikego" resultType="java.lang.Long">
|
||||
select if(card_type = 0, card_id, (select segchk_store_self_mgt.card_id from segchk_store_self_mgt where segchk_store_self_mgt.free_card_id = segchk_user_likego.card_id) ) from segchk_user_likego where likego_id = #{likegoId};
|
||||
</select>
|
||||
<select id="getStatus" parameterType="java.util.Map" resultMap="SegchkStoreStatusResult">
|
||||
select provider_id
|
||||
, store_id
|
||||
, service_state
|
||||
, with_msg
|
||||
, state_flag
|
||||
, use_self_card_with_novip
|
||||
from segchk_store_basic_info
|
||||
where store_id = ${storeId}
|
||||
<if test="providerId != '' and providerId != null">and provider_id = ${providerId}</if>
|
||||
</select>
|
||||
<select id="getAllStatus" resultMap="SegchkStoreStatusResult">
|
||||
select provider_id
|
||||
, store_id
|
||||
, service_state
|
||||
, with_msg
|
||||
, state_flag
|
||||
, use_self_card_with_novip
|
||||
from segchk_store_basic_info
|
||||
</select>
|
||||
</mapper>
|
||||
|
|
@ -131,6 +131,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<result property="lableId" column="lable_id"/>
|
||||
<result property="typeId" column="type_id"/>
|
||||
<result property="cardName" column="card_name"/>
|
||||
<result property="storeChkCount" column="store_chk_count"/>
|
||||
<result property="hadChkCount" column="had_chk_count"/>
|
||||
<result property="leftCount" column="left_count"/>
|
||||
</resultMap>
|
||||
|
||||
<resultMap type="SegchkServiceOrderChkResp" id="SegchkServiceOrderChkRespResult">
|
||||
|
|
@ -155,6 +158,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<result property="cardName" column="card_name"/>
|
||||
<result property="totalCount" column="total_count"/>
|
||||
<result property="hasLeftCount" column="has_left_count"/>
|
||||
<result property="vipLeftCount" column="vip_left_count"/>
|
||||
<result property="cardStatus" column="card_status"/>
|
||||
<result property="canFree" column="can_free"/>
|
||||
<result property="isExpire" column="is_expire"/>
|
||||
|
|
@ -782,6 +786,101 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
left join
|
||||
(select * from segchk_store_chk_mgt where store_id = #{storeId}) sscm on suv.card_type_id = sscm.card_type_id;
|
||||
</select>
|
||||
<select id="getUserCanUseVIPforStore" parameterType="java.util.Map" resultMap="SegchkServiceOrderWebRespResult">
|
||||
select
|
||||
suv.card_id
|
||||
, suv.card_type_id as lable_id
|
||||
, suv.user_id
|
||||
, suv.provider_id
|
||||
, suv.left_count
|
||||
, ifnull(sscm.chk_count, 0) as store_chk_count
|
||||
, sscm.store_id
|
||||
, ifnull(ssc.had_check_cnt, 0) as had_chk_count
|
||||
, 0 as type_id
|
||||
, concat(scc.card_type_name, '会员卡') as card_name
|
||||
from
|
||||
(select * from segchk_user_vip where provider_id = #{providerId} and user_id = #{userId} and left_count > 0 and status = 0
|
||||
<if test="testFlag == null"> and effective_time <![CDATA[ > ]]> now() </if>
|
||||
) suv
|
||||
left join
|
||||
-- # 查询该商家是否支持该会员卡,如果不支持,则相关的数据为null
|
||||
(select * from segchk_store_chk_mgt where provider_id = #{providerId} and store_id = #{storeId}) sscm on sscm.provider_id = suv.provider_id and sscm.card_type_id = suv.card_type_id
|
||||
left join
|
||||
-- # 查询该用户在该商家每张卡的核销次数,如果没有。则返回为null
|
||||
(select count(1) as had_check_cnt, any_value(provider_id) as provider_id, any_value(user_id) as user_id, card_id, card_type_id from segchk_service_chk where provider_id = #{providerId} and store_id = #{storeId} and user_id = #{userId} group by card_id, card_type_id) ssc on ssc.provider_id = suv.provider_id and ssc.user_id = suv.user_id and ssc.card_id = suv.card_id and ssc.card_type_id = suv.card_type_id
|
||||
left join
|
||||
(select * from segchk_charge_card where provider_id = #{providerId}) scc on scc.provider_id = suv.provider_id and scc.card_type_id = suv.card_type_id
|
||||
</select>
|
||||
<select id="getUserCanUseSelfCardforStore" parameterType="java.util.Map" resultMap="SegchkServiceOrderWebRespResult">
|
||||
select free_card_id as card_id, provider_id, user_id, lable_id, type_id, free_name as card_name, left_count, store_id, free_count as store_chk_count, (free_count - left_count) as had_chk_count
|
||||
from segchk_store_self_mgt
|
||||
where provider_id = #{providerId} and store_id = #{storeId}
|
||||
and user_id = #{userId} and left_count <![CDATA[ > ]]> 0
|
||||
and status = 0
|
||||
</select>
|
||||
<select id="getOrderPreInfoWithVip" parameterType="SegchkUserLikego" resultMap="SegchkServiceOrderChkTestRespResult">
|
||||
select
|
||||
suv.card_id
|
||||
, suv.card_type_id
|
||||
, suv.user_id
|
||||
, suv.provider_id
|
||||
, suv.is_expire
|
||||
, suv.left_count as vip_left_count
|
||||
, (sscm.total_count - ifnull(ssc.use_count, 0)) as has_left_count
|
||||
, sscm.total_count
|
||||
, suv.status as card_status
|
||||
, scc.card_name
|
||||
, ifnull(sssm.can_free, 0) as can_free
|
||||
-- 临时用 mgt_state 返回该用户其他会员卡数量,一般情况下只有一张有效的会员卡
|
||||
, suv1.oth_count as mgt_state
|
||||
-- , sssm.total_card_count
|
||||
from
|
||||
(select card_id, card_type_id, user_id, provider_id, if(effective_time <![CDATA[ >= ]]> now(), 0, 1) as is_expire, use_count, left_count, (use_count + segchk_user_vip.left_count) as total_count, status from segchk_user_vip where card_id = #{cardId} and user_id = #{userId} and card_type_id = #{lableId}) suv
|
||||
left join
|
||||
(select provider_id, card_type_id, concat(card_type_name, '会员卡') as card_name from segchk_charge_card where provider_id = #{providerId} and card_type_id = #{lableId}) scc on scc.provider_id = suv.provider_id and scc.card_type_id = suv.card_type_id
|
||||
left join
|
||||
(select card_type_id, ifnull(chk_count, 0) as total_count from segchk_store_chk_mgt where store_id = #{storeId} and card_type_id = #{lableId}) sscm on sscm.card_type_id = suv.card_type_id
|
||||
left join
|
||||
(select count(1) as use_count, card_id from segchk_service_chk where provider_id = #{providerId} and card_id = #{cardId} and user_id = #{userId} and card_type_id = #{lableId} and store_id = #{storeId}) ssc on ssc.card_id = suv.card_id
|
||||
left join
|
||||
(select #{userId} as user_id, #{storeId} as store_id
|
||||
-- , count(1) as total_card_count
|
||||
, count(if(store_id = #{storeId}, true, null)) as can_free from segchk_store_self_mgt where provider_id = #{providerId} and user_id = #{userId} and status = 0 and left_count <![CDATA[ > ]]> 0) sssm on sssm.user_id = suv.user_id
|
||||
left join
|
||||
(select #{userId} as user_id, count(1) as oth_count from segchk_user_vip where provider_id = #{providerId} and user_id = #{userId} and status = 0 and left_count <![CDATA[ > ]]> 0 and card_id != #{cardId} and effective_time <![CDATA[ >= ]]> now()) suv1 on suv.user_id = suv1.user_id
|
||||
</select>
|
||||
<select id="getOrderPreInfoWithSelf" parameterType="SegchkUserLikego" resultMap="SegchkServiceOrderChkTestRespResult">
|
||||
select
|
||||
sssm.card_id, sssm.is_expire, sssm.store_id
|
||||
, sssm.provider_id, sssm.user_id, sssm.vip_card
|
||||
, sssm.total_count, sssm.card_name, sssm.has_left_count
|
||||
, sssm.card_status
|
||||
, sssm1.oth_count, sssm1.can_free
|
||||
-- 临时使用mgt_state返回用户的有效会员卡数量
|
||||
, ifnull(suv.vip_count, 0) as mgt_state
|
||||
from
|
||||
(select free_card_id as card_id, if(expiration_date <![CDATA[ >= ]]> now(), 0, 1) as is_expire, store_id, provider_id, user_id, card_id as vip_card, lable_id as card_type_id, free_count as total_count, free_name as card_name, left_count as has_left_count, status as card_status from segchk_store_self_mgt where free_card_id = #{cardId}) sssm
|
||||
left join
|
||||
(select user_id, count(if(store_id != #{storeId}, true, null)) as oth_count, count(if(#{storeId} = store_id and free_card_id != #{cardId}, true, null)) as can_free from segchk_store_self_mgt where user_id = #{userId} and status = 0 and left_count <![CDATA[ > ]]> 0) sssm1 on sssm1.user_id = sssm.user_id
|
||||
left join
|
||||
(select user_id, count(1) as vip_count from segchk_user_vip where user_id = #{userId} and status = 0 and left_count <![CDATA[ > ]]> 0) suv on suv.user_id = sssm.user_id
|
||||
</select>
|
||||
<select id="getOrderPreInfoWithCoupon" parameterType="SegchkUserLikego" resultMap="SegchkServiceOrderChkTestRespResult">
|
||||
select
|
||||
sssm.card_id, sssm.is_expire, sssm.store_id
|
||||
, sssm.provider_id, sssm.user_id, sssm.vip_card
|
||||
, sssm.total_count, sssm.card_name, sssm.has_left_count
|
||||
, sssm.card_status
|
||||
, sssm1.oth_count, sssm1.can_free
|
||||
-- 临时使用mgt_state返回用户的有效会员卡数量
|
||||
, ifnull(suv.vip_count, 0) as mgt_state
|
||||
from
|
||||
(select free_card_id as card_id, if(expiration_date <![CDATA[ >= ]]> now(), 0, 1) as is_expire, store_id, provider_id, user_id, card_id as vip_card, lable_id as card_type_id, free_count as total_count, free_name as card_name, left_count as has_left_count, status as card_status from segchk_store_self_mgt where free_card_id = #{cardId}) sssm
|
||||
left join
|
||||
(select user_id, count(if(store_id != #{storeId}, true, null)) as oth_count, count(if(#{storeId} = store_id and free_card_id != #{cardId}, true, null)) as can_free from segchk_store_self_mgt where user_id = #{userId} and status = 0 and left_count <![CDATA[ > ]]> 0) sssm1 on sssm1.user_id = sssm.user_id
|
||||
left join
|
||||
(select user_id, count(1) as vip_count from segchk_user_vip where user_id = #{userId} and status = 0 and left_count <![CDATA[ > ]]> 0) suv on suv.user_id = sssm.user_id
|
||||
</select>
|
||||
|
||||
<insert id="updateSegchkUserWechat" parameterType="SegchkUserWechat">
|
||||
insert into segchk_user_wechat
|
||||
|
|
|
|||
|
|
@ -0,0 +1,332 @@
|
|||
package com.ruoyi.segchk;
|
||||
|
||||
import com.ruoyi.common.utils.StringUtils;
|
||||
import com.ruoyi.segchk.domain.SegchkFlushCnt;
|
||||
import com.ruoyi.segchk.domain.SegchkStoreCntCtrl;
|
||||
import com.ruoyi.segchk.domain.StoreSelfCard;
|
||||
import com.ruoyi.segchk.utils.RateRandomNumber;
|
||||
import com.weixin.pay.util.AESUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.junit.jupiter.api.DisplayName;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.context.annotation.Import;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
import test.core.ut.BaseDbAndRedisUnitTest;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.ConcurrentMap;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
@Slf4j
|
||||
public class TmpTest extends BaseDbAndRedisUnitTest {
|
||||
|
||||
@Test
|
||||
@DisplayName("测试赠卡验证")
|
||||
public void test1(){
|
||||
StoreSelfCard a = new StoreSelfCard();
|
||||
a.setLikegoId(1L);
|
||||
a.setTypeId(2);
|
||||
a.setLableId(3L);
|
||||
a.setTotalCount(10);
|
||||
a.setFreeContent("aaaaa");
|
||||
boolean validate = a.isValidate();
|
||||
System.out.println(validate);
|
||||
// this.likegoId != null && this.typeId != null && (this.typeId == 2 && this.lableId != null) && this.totalCount != null && (this.typeId == 1 && this.freeContent != null);
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("测试加密")
|
||||
public void test2() throws Exception {
|
||||
String encryptData = AESUtil.encryptData("432871");
|
||||
System.out.println(encryptData);
|
||||
|
||||
String decryptData = AESUtil.decryptData(encryptData);
|
||||
System.out.println(decryptData);
|
||||
System.out.println(decryptData.equals("432871"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test3() throws Exception {
|
||||
String a = null;
|
||||
Map map = JSON.parseObject(null, Map.class);
|
||||
String b = "";
|
||||
Map map1 = JSON.parseObject(b, Map.class);
|
||||
String c = "{'a': 'qweqweqw'}";
|
||||
Map map2 = JSON.parseObject(c, Map.class);
|
||||
|
||||
System.out.println(StringUtils.format("over {}{}{}", map, map1, map2));
|
||||
String params = "{\"providerId\":2,\"storeIds\":\"2,3,5\",\"probability\":1.6,\"step\":2L}";
|
||||
String params1 = "{\"providerId\":2,\"probability\":1.6,\"step\":2}";
|
||||
String params2 = "{\"probability\":1.6,\"step\":2}";
|
||||
String params3 = "{\"providerId\":2,\"storeIds\":\"2,3,5\",\"probability\":1.6,\"step\":2,\"field\":[1,2]}";
|
||||
String params4 = "{}";
|
||||
Map map3 = JSON.parseObject(params2, Map.class);
|
||||
Long providerId = Long.valueOf(String.valueOf(map3.getOrDefault("providerId", 0)));
|
||||
String storeIds = String.valueOf(map3.getOrDefault("storeId", null));
|
||||
Double probability = Double.valueOf(String.valueOf(map3.getOrDefault("probability", 1.0)));
|
||||
Long step = Long.valueOf(String.valueOf(map3.getOrDefault("step", 1)));
|
||||
System.out.println(map3);
|
||||
System.out.println(StringUtils.format("provider {}, stores {}, probability {}, step {}", providerId, storeIds, probability, step));
|
||||
|
||||
SegchkFlushCnt segchkFlushCnt = JSON.parseObject(params4, SegchkFlushCnt.class);
|
||||
System.out.println(StringUtils.format("ret SegchkFlushCnt {}", segchkFlushCnt.toString()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test4(){
|
||||
List<Double> separates = new ArrayList<Double>();
|
||||
separates.add(1.0);
|
||||
separates.add(10.0);
|
||||
List<Integer> percents = new ArrayList<Integer>();
|
||||
percents.add(90);
|
||||
percents.add(9);
|
||||
percents.add(1);
|
||||
for(int i=0;i<100;i++) {
|
||||
double number = RateRandomNumber.produceRateRandomNumber(0.1, 100, separates, percents);
|
||||
System.out.println(String.format("%.2f",number));
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test5(){
|
||||
//Map<String,List<Integer>>
|
||||
Map<String, List<Integer>> collect = Stream.of(-6, -7, -8, -9, 1, 2, 3, 4, 5, 6)
|
||||
.collect(Collectors.groupingBy(integer -> {
|
||||
if (integer < 0) {
|
||||
return "小于";
|
||||
} else if (integer == 0) {
|
||||
return "等于";
|
||||
} else {
|
||||
return "大于";
|
||||
}
|
||||
}
|
||||
));
|
||||
//Map<String,Set<Integer>>
|
||||
//自定义下游收集器
|
||||
Map<String, Set<Integer>> collect1 = Stream.of(-6, -7, -8, -9, 1, 2, 3, 4, 5, 6)
|
||||
.collect(Collectors.groupingBy(integer -> {
|
||||
if (integer < 0) {
|
||||
return "小于";
|
||||
} else if (integer == 0) {
|
||||
return "等于";
|
||||
} else {
|
||||
return "大于";
|
||||
}
|
||||
}
|
||||
, Collectors.toSet()));
|
||||
//Map<String,Set<Integer>>
|
||||
//自定义map容器 和 下游收集器
|
||||
LinkedHashMap<String, Set<Integer>> collect2 = Stream.of(-6, -7, -8, -9, 1, 2, 3, 4, 5, 6)
|
||||
.collect(Collectors.groupingBy(integer -> {
|
||||
if (integer < 0) {
|
||||
return "小于";
|
||||
} else if (integer == 0) {
|
||||
return "等于";
|
||||
} else {
|
||||
return "大于";
|
||||
}
|
||||
}
|
||||
, LinkedHashMap::new, Collectors.toSet()));
|
||||
System.out.println(collect);
|
||||
System.out.println(collect1);
|
||||
System.out.println(collect2);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test6(){
|
||||
HashMap<Object, Object> map = new HashMap();
|
||||
map.put("a:2:1",9);
|
||||
map.put("a:2:2",6);
|
||||
map.put("a:2:3",15);
|
||||
map.put("a:3:4",18);
|
||||
map.put("a:3:5",16);
|
||||
map.put("b:2:1",15);
|
||||
map.put("b:2:3",54);
|
||||
map.put("b:3:6",54);
|
||||
|
||||
HashMap<Object, Object> map1 = new HashMap();
|
||||
map1.put("c:3:5",4);
|
||||
map1.put("c:2:1",5);
|
||||
map1.put("d:2:3",357);
|
||||
map1.put("d:3:6",57);
|
||||
ConcurrentMap<Long, List<SegchkStoreCntCtrl>> collect = map.entrySet().parallelStream().map(v -> {
|
||||
String[] split = v.getKey().toString().split(":");
|
||||
SegchkStoreCntCtrl tmp = new SegchkStoreCntCtrl();
|
||||
tmp.setStoreId(Long.valueOf(split[2]));
|
||||
tmp.setProviderId(Long.valueOf(split[1]));
|
||||
if (split[0].equalsIgnoreCase("a")) {
|
||||
tmp.setBrowseCnt((Integer) v.getValue());
|
||||
} else if (split[0].equalsIgnoreCase("b")) {
|
||||
tmp.setCollectCnt((Integer) v.getValue());
|
||||
}
|
||||
return tmp;
|
||||
}).collect(Collectors.groupingByConcurrent(SegchkStoreCntCtrl::getStoreId
|
||||
, Collectors.toList()
|
||||
/*, Collectors.reducing(new SegchkStoreCntCtrl(), (a, item) -> {
|
||||
SegchkStoreCntCtrl tmp = ObjectUtils.isEmpty(a) ? new SegchkStoreCntCtrl() : a;
|
||||
if (!ObjectUtils.isEmpty(item.getProviderId())) {
|
||||
tmp.setProviderId(item.getProviderId());
|
||||
}
|
||||
if (!ObjectUtils.isEmpty(item.getStoreId())) {
|
||||
tmp.setStoreId(item.getStoreId());
|
||||
}
|
||||
if (!ObjectUtils.isEmpty(item.getProviderId())) {
|
||||
tmp.setProviderId(item.getProviderId());
|
||||
}
|
||||
if (!ObjectUtils.isEmpty(item.getBrowseCnt())) {
|
||||
tmp.setBrowseCnt(item.getBrowseCnt());
|
||||
}
|
||||
if (!ObjectUtils.isEmpty(item.getCollectCnt())) {
|
||||
tmp.setCollectCnt(item.getCollectCnt());
|
||||
}
|
||||
return tmp;
|
||||
}*/
|
||||
));
|
||||
/*collect.forEach((storeId, o) -> {
|
||||
SegchkStoreCntCtrl segchkStoreCntCtrl = o.parallelStream().reduce((a, item) -> {
|
||||
SegchkStoreCntCtrl tmp = ObjectUtils.isEmpty(a) ? new SegchkStoreCntCtrl() : a;
|
||||
if (!ObjectUtils.isEmpty(item.getProviderId())) {
|
||||
tmp.setProviderId(item.getProviderId());
|
||||
}
|
||||
if (!ObjectUtils.isEmpty(item.getStoreId())) {
|
||||
tmp.setStoreId(item.getStoreId());
|
||||
}
|
||||
if (!ObjectUtils.isEmpty(item.getProviderId())) {
|
||||
tmp.setProviderId(item.getProviderId());
|
||||
}
|
||||
if (!ObjectUtils.isEmpty(item.getBrowseCnt())) {
|
||||
tmp.setBrowseCnt(item.getBrowseCnt());
|
||||
}
|
||||
if (!ObjectUtils.isEmpty(item.getCollectCnt())) {
|
||||
tmp.setCollectCnt(item.getCollectCnt());
|
||||
}
|
||||
return tmp;
|
||||
}).get();
|
||||
return;
|
||||
});*/
|
||||
System.out.println(collect);
|
||||
List<SegchkStoreCntCtrl> collect1 = collect.entrySet().parallelStream().map(entry -> {
|
||||
Optional<SegchkStoreCntCtrl> reduce = entry.getValue().stream().reduce((ret, item) -> {
|
||||
SegchkStoreCntCtrl tmp = ObjectUtils.isEmpty(ret) ? new SegchkStoreCntCtrl() : ret;
|
||||
if (!ObjectUtils.isEmpty(item.getProviderId())) {
|
||||
tmp.setProviderId(item.getProviderId());
|
||||
}
|
||||
if (!ObjectUtils.isEmpty(item.getStoreId())) {
|
||||
tmp.setStoreId(item.getStoreId());
|
||||
}
|
||||
if (!ObjectUtils.isEmpty(item.getProviderId())) {
|
||||
tmp.setProviderId(item.getProviderId());
|
||||
}
|
||||
if (!ObjectUtils.isEmpty(item.getBrowseCnt())) {
|
||||
tmp.setBrowseCnt(item.getBrowseCnt());
|
||||
}
|
||||
if (!ObjectUtils.isEmpty(item.getCollectCnt())) {
|
||||
tmp.setCollectCnt(item.getCollectCnt());
|
||||
}
|
||||
return tmp;
|
||||
});
|
||||
return reduce;
|
||||
}).filter(opt -> opt.isPresent()).map(opt -> opt.get()).collect(Collectors.toList());
|
||||
System.out.println(collect1);
|
||||
|
||||
ConcurrentMap<Long, List<SegchkStoreCntCtrl>> collect2 = Stream.concat(map.entrySet().stream(), map1.entrySet().stream()).map(v -> {
|
||||
String[] split = v.getKey().toString().split(":", -1);
|
||||
Integer cnt = (Integer) v.getValue();
|
||||
Long providerId = Long.valueOf(split[1]);
|
||||
Long storeId = Long.valueOf(split[2]);
|
||||
SegchkStoreCntCtrl tmp = new SegchkStoreCntCtrl();
|
||||
tmp.setProviderId(providerId);
|
||||
tmp.setStoreId(storeId);
|
||||
if (split[0].equalsIgnoreCase("a")) {
|
||||
tmp.setBrowseCnt(cnt);
|
||||
} else if (split[0].equalsIgnoreCase("b")) {
|
||||
tmp.setCollectCnt(cnt);
|
||||
} else if (split[0].equalsIgnoreCase("c")) {
|
||||
tmp.setBrowseCnt1(cnt);
|
||||
} else if (split[0].equalsIgnoreCase("d")) {
|
||||
tmp.setCollectCnt1(cnt);
|
||||
}
|
||||
return tmp;
|
||||
}).parallel().collect(Collectors.groupingByConcurrent(v -> v.getStoreId(), Collectors.toList()));
|
||||
|
||||
System.out.println(collect2);
|
||||
List<SegchkStoreCntCtrl> collect3 = collect2.entrySet().parallelStream().map(entry -> {
|
||||
Optional<SegchkStoreCntCtrl> reduce = entry.getValue().stream().reduce((ret, item) -> {
|
||||
SegchkStoreCntCtrl tmp = ObjectUtils.isEmpty(ret) ? new SegchkStoreCntCtrl() : ret;
|
||||
if (!ObjectUtils.isEmpty(item.getProviderId())) {
|
||||
tmp.setProviderId(item.getProviderId());
|
||||
}
|
||||
if (!ObjectUtils.isEmpty(item.getStoreId())) {
|
||||
tmp.setStoreId(item.getStoreId());
|
||||
}
|
||||
if (!ObjectUtils.isEmpty(item.getProviderId())) {
|
||||
tmp.setProviderId(item.getProviderId());
|
||||
}
|
||||
if (!ObjectUtils.isEmpty(item.getBrowseCnt())) {
|
||||
tmp.setBrowseCnt(item.getBrowseCnt());
|
||||
}
|
||||
if (!ObjectUtils.isEmpty(item.getCollectCnt())) {
|
||||
tmp.setCollectCnt(item.getCollectCnt());
|
||||
}
|
||||
return tmp;
|
||||
});
|
||||
return reduce;
|
||||
}).filter(opt -> opt.isPresent()).map(opt -> opt.get()).collect(Collectors.toList());
|
||||
System.out.println(collect3);
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("测试对象map聚合")
|
||||
public void test7(){
|
||||
SegchkStoreCntCtrl a = new SegchkStoreCntCtrl();
|
||||
a.setProviderId(1L);
|
||||
a.setStoreId(1L);
|
||||
a.setBookCnt(2);
|
||||
a.setBookCnt1(3);
|
||||
a.setCollectCnt(3);
|
||||
a.setCollectCnt1(4);
|
||||
a.setBrowseCnt(5);
|
||||
|
||||
SegchkStoreCntCtrl b = new SegchkStoreCntCtrl();
|
||||
b.setProviderId(1L);
|
||||
b.setStoreId(2L);
|
||||
b.setBookCnt(6);
|
||||
b.setBookCnt1(7);
|
||||
b.setCollectCnt(8);
|
||||
b.setCollectCnt1(9);
|
||||
b.setBrowseCnt1(10);
|
||||
|
||||
List<SegchkStoreCntCtrl> list = new ArrayList<SegchkStoreCntCtrl>();
|
||||
list.add(a);
|
||||
list.add(b);
|
||||
List<Map> mapList = list.parallelStream().map(v -> v.getRedisMap(0)).collect(Collectors.toList());
|
||||
Map<String, Integer> tmpmap = new HashMap<String, Integer>();
|
||||
tmpmap.put("collect_cnt:1:2", 11);
|
||||
mapList.add(tmpmap);
|
||||
|
||||
Map<String, Integer> collect = (Map<String, Integer>) mapList
|
||||
.stream()
|
||||
.flatMap(v -> v.entrySet().stream())
|
||||
.map(v -> (Map.Entry<String, Integer>) v)
|
||||
.collect(Collectors.toMap(
|
||||
v1 -> ((Map.Entry<String, Integer>) v1).getKey()
|
||||
, v1 -> ((Map.Entry<String, Integer>) v1).getValue()
|
||||
, (m, n) -> m >= n ? m : n));
|
||||
/*.collect(Collectors.toConcurrentMap(v1 -> ((Map.Entry<String, Integer>) v1).getKey()
|
||||
, v1 -> ((Map.Entry<String, Integer>) v1).getValue()));*/
|
||||
/*.collect(HashMap::new, (x, y) -> {
|
||||
Map.Entry<String, Integer> entry = (Map.Entry<String, Integer>) y;
|
||||
((HashMap<String, Integer>) x).put(entry.getKey(), entry.getValue());
|
||||
}, HashMap::putAll);*/
|
||||
System.out.println(collect);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,67 @@
|
|||
package com.ruoyi.segchk.mapper;
|
||||
|
||||
import com.ruoyi.framework.config.MyBatisConfig;
|
||||
import com.ruoyi.segchk.domain.SegchkUserWebReq;
|
||||
import org.junit.jupiter.api.AfterEach;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.DisplayName;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.ComponentScan;
|
||||
import org.springframework.context.annotation.Import;
|
||||
import org.springframework.test.context.ActiveProfiles;
|
||||
import test.core.ut.BaseDbAndRedisUnitTest;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
@Import({SegchkProviderIndexMapper.class, SegchkUserWebReq.class, MyBatisConfig.class})
|
||||
//@ActiveProfiles("unit-test")
|
||||
@ComponentScan(basePackages = "com.ruoyi.segchk.**.*Mapper")
|
||||
class SegchkProviderIndexMapperTest extends BaseDbAndRedisUnitTest {
|
||||
|
||||
@Autowired
|
||||
private SegchkProviderIndexMapper segchkProviderIndexMapper;
|
||||
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
|
||||
}
|
||||
|
||||
@AfterEach
|
||||
void tearDown() {
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("selectSegchkProviderWebInfo")
|
||||
void selectSegchkProviderWebInfo() {
|
||||
SegchkUserWebReq segchkUserWebReq = new SegchkUserWebReq();
|
||||
segchkUserWebReq.setProviderId(3L);
|
||||
segchkProviderIndexMapper.selectSegchkProviderWebInfo(segchkUserWebReq);
|
||||
}
|
||||
|
||||
@Test
|
||||
void selectSegchkStoreServiceList() {
|
||||
}
|
||||
|
||||
@Test
|
||||
void selectSegchkStoreSaleList() {
|
||||
}
|
||||
|
||||
@Test
|
||||
void selectSegchkStoreServiceDetails() {
|
||||
}
|
||||
|
||||
@Test
|
||||
void selectSegchkStoreSaleDetails() {
|
||||
}
|
||||
|
||||
@Test
|
||||
void selectProviderOpenIdById() {
|
||||
}
|
||||
|
||||
@Test
|
||||
void selectSegchkProviderName() {
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
package com.ruoyi.segchk.service.impl;
|
||||
|
||||
import com.ruoyi.common.core.redis.RedisCache;
|
||||
import com.ruoyi.segchk.domain.SegchkStoreStatus;
|
||||
import com.ruoyi.segchk.mapper.SegchkStoreIndexMapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.mybatis.spring.annotation.MapperScan;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.ComponentScan;
|
||||
import org.springframework.context.annotation.Import;
|
||||
import test.core.ut.BaseDbAndRedisUnitTest;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
@Slf4j
|
||||
@Import({ISegchkStoreIndexServiceImpl.class, RedisCache.class})
|
||||
@ComponentScan(basePackages = {"com.ruoyi.segchk.mapper"})
|
||||
class ISegchkStoreIndexServiceImplTest extends BaseDbAndRedisUnitTest {
|
||||
|
||||
// @Resource
|
||||
// private ISegchkStoreIndexServiceImpl segchkStoreIndexService;
|
||||
|
||||
@Resource
|
||||
private RedisCache redisService;
|
||||
|
||||
@Test
|
||||
void testRediswithBoolean() {
|
||||
Boolean aaa = true;
|
||||
redisService.setCacheObject("test:boolean:true", aaa);
|
||||
}
|
||||
|
||||
@Test
|
||||
void orderCheckTransaction() {
|
||||
System.out.println("adsfadf");
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
package com.ruoyi.segchk.service.impl;
|
||||
|
||||
import com.ruoyi.common.core.redis.RedisCache;
|
||||
|
||||
import org.junit.jupiter.api.AfterAll;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.context.annotation.Import;
|
||||
import test.core.ut.BaseDbAndRedisUnitTest;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
@Import({RedisCache.class})
|
||||
public class SegchkProviderIndexServiceImplTest extends BaseDbAndRedisUnitTest {
|
||||
|
||||
@Resource
|
||||
private RedisCache redisService;
|
||||
|
||||
|
||||
@Test
|
||||
public void test1(){
|
||||
System.out.println("adfsd");
|
||||
Boolean aaa = true;
|
||||
redisService.setCacheObject("test:boolean:true", aaa);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test2() throws ClassNotFoundException {
|
||||
String type = "java.lang.Boolean";
|
||||
Object a = true;
|
||||
|
||||
Class cast = Class.forName(type).getClass().cast(a);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
spring:
|
||||
main:
|
||||
lazy-initialization: true # 开启懒加载,加快速度
|
||||
banner-mode: off # 单元测试,禁用 Banner
|
||||
|
||||
--- #################### 数据库相关配置 ####################
|
||||
|
||||
spring:
|
||||
# 数据源配置项
|
||||
datasource:
|
||||
name: ruoyi-vue-pro
|
||||
url: jdbc:mysql://192.168.2.30:8306/kaletest?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&allowMultiQueries=true
|
||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||
username: kaletest_yinzy
|
||||
password: XMG2-Rel.2
|
||||
druid:
|
||||
async-init: true # 单元测试,异步初始化 Druid 连接池,提升启动速度
|
||||
initial-size: 1 # 单元测试,配置为 1,提升启动速度
|
||||
# sql:
|
||||
# init:
|
||||
# schema-locations: classpath:/sql/create_tables.sql
|
||||
|
||||
# Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优
|
||||
redis:
|
||||
host: 192.168.2.40 # 地址
|
||||
port: 63795 # 端口(单元测试,使用 16379 端口)
|
||||
database: 3 # 数据库索引
|
||||
# 密码
|
||||
password: seg_123456
|
||||
# 连接超时时间
|
||||
timeout: 10s
|
||||
|
||||
mybatis:
|
||||
lazy-initialization: true # 单元测试,设置 MyBatis Mapper 延迟加载,加速每个单元测试
|
||||
|
||||
# 搜索指定包别名
|
||||
typeAliasesPackage: com.ruoyi.**.domain
|
||||
# 配置mapper的扫描,找到所有的mapper.xml映射文件
|
||||
mapperLocations: classpath*:mapper/**/*Mapper.xml
|
||||
# 加载全局的配置文件
|
||||
configLocation: classpath:mybatis/mybatis-config.xml
|
||||
--- #################### 定时任务相关配置 ####################
|
||||
|
||||
--- #################### 配置中心相关配置 ####################
|
||||
|
||||
--- #################### 服务保障相关配置 ####################
|
||||
|
||||
# Lock4j 配置项(单元测试,禁用 Lock4j)
|
||||
|
||||
# Resilience4j 配置项
|
||||
|
||||
--- #################### 监控相关配置 ####################
|
||||
|
||||
--- #################### 芋道相关配置 ####################
|
||||
|
||||
# 芋道配置项,设置当前项目所有自定义的配置
|
||||
yudao:
|
||||
info:
|
||||
base-package: cn.iocoder.yudao.module
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
<configuration>
|
||||
<!-- 引用 Spring Boot 的 logback 基础配置 -->
|
||||
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
|
||||
</configuration>
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE configuration
|
||||
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-config.dtd">
|
||||
<configuration>
|
||||
|
||||
<settings>
|
||||
<setting name="cacheEnabled" value="true"/> <!-- 全局映射器启用缓存 -->
|
||||
<setting name="useGeneratedKeys" value="true"/> <!-- 允许 JDBC 支持自动生成主键 -->
|
||||
<setting name="defaultExecutorType" value="REUSE"/> <!-- 配置默认的执行器 -->
|
||||
<setting name="logImpl" value="SLF4J"/> <!-- 指定 MyBatis 所用日志的具体实现 -->
|
||||
<!-- <setting name="mapUnderscoreToCamelCase" value="true"/> 驼峰式命名 -->
|
||||
</settings>
|
||||
|
||||
</configuration>
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
package com.ruoyi.segchk.core;
|
||||
|
||||
public @interface TestImpl {
|
||||
}
|
||||
|
|
@ -0,0 +1,63 @@
|
|||
package com.ruoyi.segchk.domain;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class SegchkFlushCnt {
|
||||
private Long providerId = 0L;
|
||||
private String storeIds = null;
|
||||
private Double probability = 1.0;
|
||||
private Integer step = 1;
|
||||
private ArrayList<Long> field = null;
|
||||
|
||||
public String getStoreIds() {
|
||||
return storeIds;
|
||||
}
|
||||
|
||||
public ArrayList<Long> getField() {
|
||||
return field;
|
||||
}
|
||||
|
||||
public void setField(ArrayList<Long> field) {
|
||||
this.field = field;
|
||||
}
|
||||
|
||||
|
||||
public Long getProviderId() {
|
||||
return providerId;
|
||||
}
|
||||
|
||||
public void setProviderId(Long providerId) {
|
||||
this.providerId = providerId;
|
||||
}
|
||||
|
||||
public Double getProbability() {
|
||||
return probability;
|
||||
}
|
||||
|
||||
public void setProbability(Double probability) {
|
||||
this.probability = probability;
|
||||
}
|
||||
|
||||
public Integer getStep() {
|
||||
return step;
|
||||
}
|
||||
|
||||
public void setStep(Integer step) {
|
||||
this.step = step;
|
||||
}
|
||||
|
||||
public void setStoreIds(String storeIds) {
|
||||
this.storeIds = storeIds;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "SegchkFlushCnt{" +
|
||||
"providerId=" + providerId +
|
||||
", storeIds='" + storeIds + '\'' +
|
||||
", probability=" + probability +
|
||||
", step=" + step +
|
||||
", field=" + field +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
|
|
@ -1,91 +0,0 @@
|
|||
package com.ruoyi.segchk.domain;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.ruoyi.common.annotation.Excel;
|
||||
import com.ruoyi.common.core.domain.BaseEntity;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* seg用户奖励对象 segchk_user_reward
|
||||
*
|
||||
* @author yinzhiying
|
||||
* @date 2021-07-01
|
||||
*/
|
||||
public class SegchkMsgWebResp extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 消息类型,0系统消息,1交易消息,2提醒消息,3评价消息,4核消消息 */
|
||||
@Excel(name = "消息类型,0系统消息,1交易消息,2提醒消息,3评价消息,4核消消息")
|
||||
private String msgType;
|
||||
|
||||
/** 消息内容 */
|
||||
@Excel(name = "消息内容")
|
||||
private String msgContent;
|
||||
|
||||
/** 消息标题 */
|
||||
@Excel(name = "消息标题")
|
||||
private String msgTitle;
|
||||
|
||||
|
||||
/** 消息状态,0未发送,1,未读,2已读,3删除 */
|
||||
@Excel(name = "消息状态,0未发送,1,未读,2已读,3删除")
|
||||
private String msgFlag;
|
||||
|
||||
/** 接收时间 */
|
||||
@JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss")
|
||||
@Excel(name = "接收时间", width = 30, dateFormat = "yyyy-MM-dd hh:mm:ss")
|
||||
private Date fromTime;
|
||||
|
||||
public String getMsgType() {
|
||||
return msgType;
|
||||
}
|
||||
|
||||
public void setMsgType(String msgType) {
|
||||
this.msgType = msgType;
|
||||
}
|
||||
|
||||
public String getMsgContent() {
|
||||
return msgContent;
|
||||
}
|
||||
|
||||
public void setMsgContent(String msgContent) {
|
||||
this.msgContent = msgContent;
|
||||
}
|
||||
|
||||
public String getMsgTitle() {
|
||||
return msgTitle;
|
||||
}
|
||||
|
||||
public void setMsgTitle(String msgTitle) {
|
||||
this.msgTitle = msgTitle;
|
||||
}
|
||||
|
||||
public String getMsgFlag() {
|
||||
return msgFlag;
|
||||
}
|
||||
|
||||
public void setMsgFlag(String msgFlag) {
|
||||
this.msgFlag = msgFlag;
|
||||
}
|
||||
|
||||
public Date getFromTime() {
|
||||
return fromTime;
|
||||
}
|
||||
|
||||
public void setFromTime(Date fromTime) {
|
||||
this.fromTime = fromTime;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "SegchkMsgWebResp{" +
|
||||
"msgType='" + msgType + '\'' +
|
||||
", msgContent='" + msgContent + '\'' +
|
||||
", msgTitle='" + msgTitle + '\'' +
|
||||
", msgFlag='" + msgFlag + '\'' +
|
||||
", fromTime=" + fromTime +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,124 @@
|
|||
package com.ruoyi.segchk.domain;
|
||||
|
||||
import java.util.Date;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||
import org.apache.commons.lang3.builder.ToStringStyle;
|
||||
import com.ruoyi.common.annotation.Excel;
|
||||
import com.ruoyi.common.core.domain.BaseEntity;
|
||||
|
||||
/**
|
||||
* seg运营商流量管控对象 segchk_provider_cnt_ctrl
|
||||
*
|
||||
* @author yinzhiying
|
||||
* @date 2022-06-26
|
||||
*/
|
||||
public class SegchkProviderCntCtrl extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** vr标识,全局唯一 */
|
||||
private Long cntId;
|
||||
|
||||
/** 运营商id,全局唯一 */
|
||||
@Excel(name = "运营商id,全局唯一")
|
||||
private Long providerId;
|
||||
|
||||
/** 浏览量,大于0表示生效 */
|
||||
@Excel(name = "浏览量,大于0表示生效")
|
||||
private Integer browseCnt;
|
||||
|
||||
/** 收藏次数,大于0表示生效 */
|
||||
@Excel(name = "收藏次数,大于0表示生效")
|
||||
private Integer collectCnt;
|
||||
|
||||
/** 预约次数,0无效,1有效 */
|
||||
@Excel(name = "预约次数,0无效,1有效")
|
||||
private Integer bookCnt;
|
||||
|
||||
/** 管理状态,0有效,1失效 */
|
||||
@Excel(name = "管理状态,0有效,1失效")
|
||||
private String mgtState;
|
||||
|
||||
/** 创建或修改时间 */
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@Excel(name = "创建或修改时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date modTime;
|
||||
|
||||
public void setCntId(Long cntId)
|
||||
{
|
||||
this.cntId = cntId;
|
||||
}
|
||||
|
||||
public Long getCntId()
|
||||
{
|
||||
return cntId;
|
||||
}
|
||||
public void setProviderId(Long providerId)
|
||||
{
|
||||
this.providerId = providerId;
|
||||
}
|
||||
|
||||
public Long getProviderId()
|
||||
{
|
||||
return providerId;
|
||||
}
|
||||
public void setBrowseCnt(Integer browseCnt)
|
||||
{
|
||||
this.browseCnt = browseCnt;
|
||||
}
|
||||
|
||||
public Integer getBrowseCnt()
|
||||
{
|
||||
return browseCnt;
|
||||
}
|
||||
public void setCollectCnt(Integer collectCnt)
|
||||
{
|
||||
this.collectCnt = collectCnt;
|
||||
}
|
||||
|
||||
public Integer getCollectCnt()
|
||||
{
|
||||
return collectCnt;
|
||||
}
|
||||
public void setBookCnt(Integer bookCnt)
|
||||
{
|
||||
this.bookCnt = bookCnt;
|
||||
}
|
||||
|
||||
public Integer getBookCnt()
|
||||
{
|
||||
return bookCnt;
|
||||
}
|
||||
public void setMgtState(String mgtState)
|
||||
{
|
||||
this.mgtState = mgtState;
|
||||
}
|
||||
|
||||
public String getMgtState()
|
||||
{
|
||||
return mgtState;
|
||||
}
|
||||
public void setModTime(Date modTime)
|
||||
{
|
||||
this.modTime = modTime;
|
||||
}
|
||||
|
||||
public Date getModTime()
|
||||
{
|
||||
return modTime;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
|
||||
.append("cntId", getCntId())
|
||||
.append("providerId", getProviderId())
|
||||
.append("browseCnt", getBrowseCnt())
|
||||
.append("collectCnt", getCollectCnt())
|
||||
.append("bookCnt", getBookCnt())
|
||||
.append("mgtState", getMgtState())
|
||||
.append("modTime", getModTime())
|
||||
.toString();
|
||||
}
|
||||
}
|
||||
|
|
@ -2,6 +2,9 @@ package com.ruoyi.segchk.domain;
|
|||
|
||||
import java.util.List;
|
||||
import java.util.Date;
|
||||
import java.util.StringJoiner;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||
import org.apache.commons.lang3.builder.ToStringStyle;
|
||||
|
|
@ -50,6 +53,18 @@ public class SegchkProviderMgt extends BaseEntity
|
|||
@Excel(name = "状态,0正常,1失效,2删除")
|
||||
private Integer flagId;
|
||||
|
||||
/** 非会员能否使用赠卡,默认否0;能1 */
|
||||
@Excel(name = "默认否0;能1")
|
||||
private Integer useSelfCardWithNovip;
|
||||
|
||||
/** 是否允许商家赠卡,0否1一个用户只能持有一张2用户可持有多张 */
|
||||
@Excel(name = "商家赠卡用户")
|
||||
private Integer canGiveSelf;
|
||||
|
||||
/** 用户预约的有效时长(小时)0长期,正数有效 */
|
||||
@Excel(name = "用户预约的有效时长")
|
||||
private Integer bookLiveHour;
|
||||
|
||||
/** 区县行政代码 */
|
||||
@Excel(name = "区县行政代码")
|
||||
private Integer districtId;
|
||||
|
|
@ -162,6 +177,14 @@ public class SegchkProviderMgt extends BaseEntity
|
|||
this.wechatId = wechatId;
|
||||
}
|
||||
|
||||
public Integer getUseSelfCardWithNovip() {
|
||||
return useSelfCardWithNovip;
|
||||
}
|
||||
|
||||
public void setUseSelfCardWithNovip(Integer useSelfCardWithNovip) {
|
||||
this.useSelfCardWithNovip = useSelfCardWithNovip;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "SegchkProviderMgt{" +
|
||||
|
|
@ -173,9 +196,26 @@ public class SegchkProviderMgt extends BaseEntity
|
|||
", iconUrl='" + iconUrl + '\'' +
|
||||
", phoneNo='" + phoneNo + '\'' +
|
||||
", flagId=" + flagId +
|
||||
", useSelfCardWithNovip=" + useSelfCardWithNovip +
|
||||
", districtId=" + districtId +
|
||||
", delTime=" + delTime +
|
||||
", segchkLableMgtList=" + segchkLableMgtList +
|
||||
", segchkLableMgtList=" + segchkLableMgtList.stream().map(x -> x.getCardTypeName()).collect(Collectors.joining(",")) +
|
||||
'}';
|
||||
}
|
||||
|
||||
public Integer getCanGiveSelf() {
|
||||
return canGiveSelf;
|
||||
}
|
||||
|
||||
public void setCanGiveSelf(Integer canGiveSelf) {
|
||||
this.canGiveSelf = canGiveSelf;
|
||||
}
|
||||
|
||||
public Integer getBookLiveHour() {
|
||||
return bookLiveHour;
|
||||
}
|
||||
|
||||
public void setBookLiveHour(Integer bookLiveHour) {
|
||||
this.bookLiveHour = bookLiveHour;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,182 +0,0 @@
|
|||
package com.ruoyi.segchk.domain;
|
||||
|
||||
import com.ruoyi.common.annotation.Excel;
|
||||
import com.ruoyi.common.core.domain.BaseEntity;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* seg返回首页推荐商户对象 segchk_recommender_storeweb
|
||||
*
|
||||
* @author yinzhiying
|
||||
* @date 2021-07-01
|
||||
*/
|
||||
public class SegchkRecommenderStoreWebResp extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 运营商id,全局唯一 */
|
||||
@Excel(name = "运营商id,全局唯一")
|
||||
private Long providerId;
|
||||
|
||||
/** 商家id,全局唯一 */
|
||||
@Excel(name = "商家id,全局唯一")
|
||||
private Long storeId;
|
||||
|
||||
/** 商家名称 */
|
||||
@Excel(name = "商家名称")
|
||||
private String storeName;
|
||||
|
||||
/** 商户显示序号 */
|
||||
@Excel(name = "商户显示序号")
|
||||
private Integer storeSort;
|
||||
|
||||
/** 商户列表模式时的图标 */
|
||||
@Excel(name = "商户列表模式时的图标")
|
||||
private String storeIcon;
|
||||
|
||||
/** 商户的大图标 */
|
||||
@Excel(name = "商户的大图标")
|
||||
private String storeGificon;
|
||||
|
||||
/** 商户经度 */
|
||||
@Excel(name = "商户经度")
|
||||
private BigDecimal storeLon;
|
||||
|
||||
/** 商户纬度 */
|
||||
@Excel(name = "商户纬度")
|
||||
private BigDecimal storeLat;
|
||||
|
||||
/** 商户累积核消次数 */
|
||||
@Excel(name = "商户累积核消次数")
|
||||
private Integer chkCount;
|
||||
|
||||
/** 商户平均星评 */
|
||||
@Excel(name = "商户平均星评")
|
||||
private BigDecimal starAvg;
|
||||
|
||||
/** 用户距离 */
|
||||
@Excel(name = "用户距离")
|
||||
private BigDecimal userDist;
|
||||
|
||||
|
||||
/** 商户标签列表 */
|
||||
@Valid
|
||||
private List<SegchkRecommenderStoreLableWeb> lables;
|
||||
|
||||
public Long getProviderId() {
|
||||
return providerId;
|
||||
}
|
||||
|
||||
public void setProviderId(Long providerId) {
|
||||
this.providerId = providerId;
|
||||
}
|
||||
|
||||
public Long getStoreId() {
|
||||
return storeId;
|
||||
}
|
||||
|
||||
public void setStoreId(Long storeId) {
|
||||
this.storeId = storeId;
|
||||
}
|
||||
|
||||
public Integer getStoreSort() {
|
||||
return storeSort;
|
||||
}
|
||||
|
||||
public void setStoreSort(Integer storeSort) {
|
||||
this.storeSort = storeSort;
|
||||
}
|
||||
|
||||
public String getStoreIcon() {
|
||||
return storeIcon;
|
||||
}
|
||||
|
||||
public void setStoreIcon(String storeIcon) {
|
||||
this.storeIcon = storeIcon;
|
||||
}
|
||||
|
||||
public String getStoreGificon() {
|
||||
return storeGificon;
|
||||
}
|
||||
|
||||
public void setStoreGificon(String storeGificon) {
|
||||
this.storeGificon = storeGificon;
|
||||
}
|
||||
|
||||
public BigDecimal getStoreLon() {
|
||||
return storeLon;
|
||||
}
|
||||
|
||||
public void setStoreLon(BigDecimal storeLon) {
|
||||
this.storeLon = storeLon;
|
||||
}
|
||||
|
||||
public BigDecimal getStoreLat() {
|
||||
return storeLat;
|
||||
}
|
||||
|
||||
public void setStoreLat(BigDecimal storeLat) {
|
||||
this.storeLat = storeLat;
|
||||
}
|
||||
|
||||
public Integer getChkCount() {
|
||||
return chkCount;
|
||||
}
|
||||
|
||||
public void setChkCount(Integer chkCount) {
|
||||
this.chkCount = chkCount;
|
||||
}
|
||||
|
||||
public BigDecimal getStarAvg() {
|
||||
return starAvg;
|
||||
}
|
||||
|
||||
public void setStarAvg(BigDecimal starAvg) {
|
||||
this.starAvg = starAvg;
|
||||
}
|
||||
|
||||
public List<SegchkRecommenderStoreLableWeb> getLables() {
|
||||
return lables;
|
||||
}
|
||||
|
||||
public void setLables(List<SegchkRecommenderStoreLableWeb> lables) {
|
||||
this.lables = lables;
|
||||
}
|
||||
|
||||
public String getStoreName() {
|
||||
return storeName;
|
||||
}
|
||||
|
||||
public void setStoreName(String storeName) {
|
||||
this.storeName = storeName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "SegchkRecommenderStoreWebResp{" +
|
||||
"providerId=" + providerId +
|
||||
", storeId=" + storeId +
|
||||
", storeName=" + storeName +
|
||||
", storeSort=" + storeSort +
|
||||
", storeIcon='" + storeIcon + '\'' +
|
||||
", storeGificon='" + storeGificon + '\'' +
|
||||
", storeLon=" + storeLon +
|
||||
", storeLat=" + storeLat +
|
||||
", chkCount=" + chkCount +
|
||||
", starAvg=" + starAvg +
|
||||
", lables=" + lables +
|
||||
", userDist=" + userDist +
|
||||
'}';
|
||||
}
|
||||
|
||||
public BigDecimal getUserDist() {
|
||||
return userDist;
|
||||
}
|
||||
|
||||
public void setUserDist(BigDecimal userDist) {
|
||||
this.userDist = userDist;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,90 +0,0 @@
|
|||
package com.ruoyi.segchk.domain;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.ruoyi.common.annotation.Excel;
|
||||
import com.ruoyi.common.core.domain.BaseEntity;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* seg用户基本信息对象 segchk_user_basic_info
|
||||
*
|
||||
* @author yinzhiying
|
||||
* @date 2021-07-01
|
||||
*/
|
||||
public class SegchkServiceAndSaleDetailWebResp extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 创建或修改时间 */
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@Excel(name = "创建或修改时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date modTime;
|
||||
|
||||
/** 会员卡号 */
|
||||
@Excel(name = "会员卡号")
|
||||
private Long cardId;
|
||||
|
||||
/** 卡类型名称 */
|
||||
@Excel(name = "卡类型名称")
|
||||
private String cardName;
|
||||
|
||||
/** 商家名称 */
|
||||
@Excel(name = "商家名称")
|
||||
private String storeName;
|
||||
|
||||
/** 统计结果 */
|
||||
@Excel(name = "统计结果")
|
||||
private Long staticCount;
|
||||
|
||||
public Date getModTime() {
|
||||
return modTime;
|
||||
}
|
||||
|
||||
public void setModTime(Date modTime) {
|
||||
this.modTime = modTime;
|
||||
}
|
||||
|
||||
public Long getCardId() {
|
||||
return cardId;
|
||||
}
|
||||
|
||||
public void setCardId(Long cardId) {
|
||||
this.cardId = cardId;
|
||||
}
|
||||
|
||||
public String getCardName() {
|
||||
return cardName;
|
||||
}
|
||||
|
||||
public void setCardName(String cardName) {
|
||||
this.cardName = cardName;
|
||||
}
|
||||
|
||||
public String getStoreName() {
|
||||
return storeName;
|
||||
}
|
||||
|
||||
public void setStoreName(String storeName) {
|
||||
this.storeName = storeName;
|
||||
}
|
||||
|
||||
public Long getStaticCount() {
|
||||
return staticCount;
|
||||
}
|
||||
|
||||
public void setStaticCount(Long staticCount) {
|
||||
this.staticCount = staticCount;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "SegchkServiceAndSaleDetailWebResp{" +
|
||||
"modTime=" + modTime +
|
||||
", cardId=" + cardId +
|
||||
", cardName='" + cardName + '\'' +
|
||||
", storeName='" + storeName + '\'' +
|
||||
", staticCount=" + staticCount +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
|
|
@ -1,98 +0,0 @@
|
|||
package com.ruoyi.segchk.domain;
|
||||
|
||||
import com.ruoyi.common.annotation.Excel;
|
||||
import com.ruoyi.common.core.domain.BaseEntity;
|
||||
|
||||
/**
|
||||
* seg用户基本信息对象 segchk_user_basic_info
|
||||
*
|
||||
* @author yinzhiying
|
||||
* @date 2021-07-01
|
||||
*/
|
||||
public class SegchkServiceAndSaleWebReq extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 运营商id,全局唯一 */
|
||||
@Excel(name = "运营商id,全局唯一")
|
||||
private Long providerId;
|
||||
|
||||
/** 商户id */
|
||||
@Excel(name = "商户id")
|
||||
private Long storeId;
|
||||
|
||||
/** 统计等级,0按月统计,1按月查询统计 */
|
||||
@Excel(name = "统计等级")
|
||||
private Integer staticLevel;
|
||||
|
||||
/** 统计月份,只在staticLevel为1时有效,0时为统计的月数 */
|
||||
@Excel(name = "统计月份")
|
||||
private String staticMonth;
|
||||
|
||||
/** 用户身份,0运营商,1商家 */
|
||||
@Excel(name = "用户身份")
|
||||
private Integer userLevel;
|
||||
|
||||
/** 数据源选择,0核消,1售卡 */
|
||||
@Excel(name = "数据源选择")
|
||||
private Integer srcFlag;
|
||||
|
||||
public Long getProviderId() {
|
||||
return providerId;
|
||||
}
|
||||
|
||||
public void setProviderId(Long providerId) {
|
||||
this.providerId = providerId;
|
||||
}
|
||||
|
||||
public Long getStoreId() {
|
||||
return storeId;
|
||||
}
|
||||
|
||||
public void setStoreId(Long storeId) {
|
||||
this.storeId = storeId;
|
||||
}
|
||||
|
||||
public Integer getStaticLevel() {
|
||||
return staticLevel;
|
||||
}
|
||||
|
||||
public void setStaticLevel(Integer staticLevel) {
|
||||
this.staticLevel = staticLevel;
|
||||
}
|
||||
|
||||
public String getStaticMonth() {
|
||||
return staticMonth;
|
||||
}
|
||||
|
||||
public void setStaticMonth(String staticMonth) {
|
||||
this.staticMonth = staticMonth;
|
||||
}
|
||||
|
||||
public Integer getUserLevel() {
|
||||
return userLevel;
|
||||
}
|
||||
|
||||
public void setUserLevel(Integer userLevel) {
|
||||
this.userLevel = userLevel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "SegchkServiceAndSaleWebReq{" +
|
||||
"providerId=" + providerId +
|
||||
", storeId=" + storeId +
|
||||
", staticLevel='" + staticLevel + '\'' +
|
||||
", staticMonth='" + staticMonth + '\'' +
|
||||
", userLevel=" + userLevel +
|
||||
'}';
|
||||
}
|
||||
|
||||
public Integer getSrcFlag() {
|
||||
return srcFlag;
|
||||
}
|
||||
|
||||
public void setSrcFlag(Integer srcFlag) {
|
||||
this.srcFlag = srcFlag;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,61 +0,0 @@
|
|||
package com.ruoyi.segchk.domain;
|
||||
|
||||
import com.ruoyi.common.annotation.Excel;
|
||||
import com.ruoyi.common.core.domain.BaseEntity;
|
||||
|
||||
/**
|
||||
* seg用户基本信息对象 segchk_user_basic_info
|
||||
*
|
||||
* @author yinzhiying
|
||||
* @date 2021-07-01
|
||||
*/
|
||||
public class SegchkServiceAndSaleWebResp extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
|
||||
/** 统计月份,只在staticLevel为1时有效 */
|
||||
@Excel(name = "统计月份")
|
||||
private String staticMonth;
|
||||
|
||||
/** staticMonth与staticMonth同义,只是为yyyy-mm-01使用查询具备详单时使用 */
|
||||
@Excel(name = "统计月份")
|
||||
private String queryMon;
|
||||
|
||||
/** 统计结果 */
|
||||
@Excel(name = "统计结果")
|
||||
private Long staticCount;
|
||||
|
||||
public String getStaticMonth() {
|
||||
return staticMonth;
|
||||
}
|
||||
|
||||
public void setStaticMonth(String staticMonth) {
|
||||
this.staticMonth = staticMonth;
|
||||
}
|
||||
|
||||
public Long getStaticCount() {
|
||||
return staticCount;
|
||||
}
|
||||
|
||||
public void setStaticCount(Long staticCount) {
|
||||
this.staticCount = staticCount;
|
||||
}
|
||||
|
||||
public String getQueryMon() {
|
||||
return queryMon;
|
||||
}
|
||||
|
||||
public void setQueryMon(String queryMon) {
|
||||
this.queryMon = queryMon;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "SegchkServiceAndSaleWebResp{" +
|
||||
"staticMonth='" + staticMonth + '\'' +
|
||||
", queryMon='" + queryMon + '\'' +
|
||||
", staticCount=" + staticCount +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
|
|
@ -1,116 +0,0 @@
|
|||
package com.ruoyi.segchk.domain;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.ruoyi.common.annotation.Excel;
|
||||
import com.ruoyi.common.core.domain.BaseEntity;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* seg评价记录对象 segchk_service_comment
|
||||
*
|
||||
* @author yinzhiying
|
||||
* @date 2021-07-01
|
||||
*/
|
||||
public class SegchkServiceCommentWebResp extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 商家id,全局唯一 */
|
||||
@Excel(name = "商家id,全局唯一")
|
||||
private Long storeId;
|
||||
|
||||
/** 星级评价 */
|
||||
@Excel(name = "星级评价")
|
||||
private Integer starLevel;
|
||||
|
||||
/** 评价内容 */
|
||||
@Excel(name = "评价内容")
|
||||
private String contentText;
|
||||
|
||||
/** 创建或修改时间 */
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@Excel(name = "创建或修改时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date modTime;
|
||||
|
||||
/** 运营商id,全局唯一 */
|
||||
@Excel(name = "运营商id,全局唯一")
|
||||
private Long providerId;
|
||||
|
||||
/** 充值卡id */
|
||||
@Excel(name = "充值卡名称")
|
||||
private String cardName;
|
||||
|
||||
/** 用户id,全局唯一 */
|
||||
@Excel(name = "用户id,全局唯一")
|
||||
private String userName;
|
||||
|
||||
public Long getStoreId() {
|
||||
return storeId;
|
||||
}
|
||||
|
||||
public void setStoreId(Long storeId) {
|
||||
this.storeId = storeId;
|
||||
}
|
||||
|
||||
public Integer getStarLevel() {
|
||||
return starLevel;
|
||||
}
|
||||
|
||||
public void setStarLevel(Integer starLevel) {
|
||||
this.starLevel = starLevel;
|
||||
}
|
||||
|
||||
public String getContentText() {
|
||||
return contentText;
|
||||
}
|
||||
|
||||
public void setContentText(String contentText) {
|
||||
this.contentText = contentText;
|
||||
}
|
||||
|
||||
public Date getModTime() {
|
||||
return modTime;
|
||||
}
|
||||
|
||||
public void setModTime(Date modTime) {
|
||||
this.modTime = modTime;
|
||||
}
|
||||
|
||||
public Long getProviderId() {
|
||||
return providerId;
|
||||
}
|
||||
|
||||
public void setProviderId(Long providerId) {
|
||||
this.providerId = providerId;
|
||||
}
|
||||
|
||||
public String getCardName() {
|
||||
return cardName;
|
||||
}
|
||||
|
||||
public void setCardName(String cardName) {
|
||||
this.cardName = cardName;
|
||||
}
|
||||
|
||||
public String getUserName() {
|
||||
return userName;
|
||||
}
|
||||
|
||||
public void setUserName(String userName) {
|
||||
this.userName = userName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "SegchkServiceCommentWebResp{" +
|
||||
"storeId=" + storeId +
|
||||
", starLevel=" + starLevel +
|
||||
", contentText='" + contentText + '\'' +
|
||||
", modTime=" + modTime +
|
||||
", providerId=" + providerId +
|
||||
", cardName='" + cardName + '\'' +
|
||||
", userName='" + userName + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
|
|
@ -50,14 +50,18 @@ public class SegchkServiceOrderChkTestResp extends BaseEntity
|
|||
@Excel(name = "我想去订单核消卡名称")
|
||||
private String cardName;
|
||||
|
||||
/** 我想去订单核消卡可使用次数 */
|
||||
/** 我想去订单核消卡针对该商家可使用次数 */
|
||||
@Excel(name = "我想去订单核消卡可使用次数")
|
||||
private Integer totalCount;
|
||||
|
||||
/** 我想去订单核消卡剩余次数 */
|
||||
/** 我想去订单核消卡针对该商家剩余次数 */
|
||||
@Excel(name = "我想去订单核消卡剩余次数")
|
||||
private Integer hasLeftCount;
|
||||
|
||||
/** 我想去订单会员卡剩余次数 */
|
||||
@Excel(name = "会员卡剩余次数")
|
||||
private Integer vipLeftCount;
|
||||
|
||||
/** 我想去订单核消卡状态 */
|
||||
@Excel(name = "我想去订单核消卡状态")
|
||||
private Integer cardStatus;
|
||||
|
|
@ -204,6 +208,7 @@ public class SegchkServiceOrderChkTestResp extends BaseEntity
|
|||
", cardName='" + cardName + '\'' +
|
||||
", totalCount=" + totalCount +
|
||||
", hasLeftCount=" + hasLeftCount +
|
||||
", vipLeftCount=" + vipLeftCount +
|
||||
", cardStatus=" + cardStatus +
|
||||
", canFree=" + canFree +
|
||||
", isExpire=" + isExpire +
|
||||
|
|
@ -219,4 +224,12 @@ public class SegchkServiceOrderChkTestResp extends BaseEntity
|
|||
public void setLikegoId(Long likegoId) {
|
||||
this.likegoId = likegoId;
|
||||
}
|
||||
|
||||
public Integer getVipLeftCount() {
|
||||
return vipLeftCount;
|
||||
}
|
||||
|
||||
public void setVipLeftCount(Integer vipLeftCount) {
|
||||
this.vipLeftCount = vipLeftCount;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,112 +0,0 @@
|
|||
package com.ruoyi.segchk.domain;
|
||||
|
||||
import com.ruoyi.common.annotation.Excel;
|
||||
import com.ruoyi.common.core.domain.BaseEntity;
|
||||
|
||||
/**
|
||||
* seg用户基本信息对象 segchk_user_basic_info
|
||||
*
|
||||
* @author yinzhiying
|
||||
* @date 2021-07-01
|
||||
*/
|
||||
public class SegchkServiceOrderWebReq extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 运营商id */
|
||||
@Excel(name = "运营商id")
|
||||
private Long providerId;
|
||||
|
||||
/** 商户id */
|
||||
@Excel(name = "商户id")
|
||||
private Long storeId;
|
||||
|
||||
/** 用户id */
|
||||
@Excel(name = "用户id")
|
||||
private Long userId;
|
||||
|
||||
/** 卡id */
|
||||
@Excel(name = "卡id")
|
||||
private Long cardId;
|
||||
|
||||
/** 会员卡或优惠券下的标签id */
|
||||
@Excel(name = "会员卡或优惠券下的标签id")
|
||||
private Integer lableId;
|
||||
|
||||
/** 卡类型 0 会员卡,1赠卡,2优惠券 */
|
||||
@Excel(name = "卡类型")
|
||||
private Integer typeId;
|
||||
|
||||
/** 卡名称 */
|
||||
@Excel(name = "卡名称")
|
||||
private String cardName;
|
||||
|
||||
public Long getProviderId() {
|
||||
return providerId;
|
||||
}
|
||||
|
||||
public void setProviderId(Long providerId) {
|
||||
this.providerId = providerId;
|
||||
}
|
||||
|
||||
public Long getStoreId() {
|
||||
return storeId;
|
||||
}
|
||||
|
||||
public void setStoreId(Long storeId) {
|
||||
this.storeId = storeId;
|
||||
}
|
||||
|
||||
public Long getUserId() {
|
||||
return userId;
|
||||
}
|
||||
|
||||
public void setUserId(Long userId) {
|
||||
this.userId = userId;
|
||||
}
|
||||
|
||||
public Long getCardId() {
|
||||
return cardId;
|
||||
}
|
||||
|
||||
public void setCardId(Long cardId) {
|
||||
this.cardId = cardId;
|
||||
}
|
||||
|
||||
public Integer getLableId() {
|
||||
return lableId;
|
||||
}
|
||||
|
||||
public void setLableId(Integer lableId) {
|
||||
this.lableId = lableId;
|
||||
}
|
||||
|
||||
public Integer getTypeId() {
|
||||
return typeId;
|
||||
}
|
||||
|
||||
public void setTypeId(Integer typeId) {
|
||||
this.typeId = typeId;
|
||||
}
|
||||
|
||||
public String getCardName() {
|
||||
return cardName;
|
||||
}
|
||||
|
||||
public void setCardName(String cardName) {
|
||||
this.cardName = cardName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "SegchkServiceOrderWebReq{" +
|
||||
"providerId=" + providerId +
|
||||
", storeId=" + storeId +
|
||||
", userId=" + userId +
|
||||
", cardId=" + cardId +
|
||||
", lableId=" + lableId +
|
||||
", typeId=" + typeId +
|
||||
", cardName='" + cardName + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
|
|
@ -3,6 +3,8 @@ package com.ruoyi.segchk.domain;
|
|||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
import java.util.Date;
|
||||
import java.util.Map;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||
import org.apache.commons.lang3.builder.ToStringStyle;
|
||||
|
|
@ -95,6 +97,10 @@ public class SegchkStoreBasicInfo extends BaseEntity
|
|||
@Excel(name = "是否人工干预,0自动,1人工")
|
||||
private String stateFlag;
|
||||
|
||||
/** 非会员能否使用赠卡,默认否0;能1 */
|
||||
@Excel(name = "默认否0;能1")
|
||||
private Integer useSelfCardWithNovip;
|
||||
|
||||
/** 商家经度 */
|
||||
@Excel(name = "商家经度")
|
||||
private BigDecimal storeLon;
|
||||
|
|
@ -111,11 +117,17 @@ public class SegchkStoreBasicInfo extends BaseEntity
|
|||
@Excel(name = "商家描述详情")
|
||||
private String detail;
|
||||
|
||||
/** 商家VR地址 */
|
||||
@Excel(name = "商家VR地址")
|
||||
private String vrPath;
|
||||
|
||||
/** 创建或修改时间 */
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@Excel(name = "创建或修改时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date modTime;
|
||||
|
||||
private SegchkStoreCntCtrl segchkStoreCntCtrl = null;
|
||||
|
||||
/** seg商家图片信息信息 */
|
||||
private List<SegchkStoreImage> segchkStoreImageList;
|
||||
|
||||
|
|
@ -400,15 +412,51 @@ public class SegchkStoreBasicInfo extends BaseEntity
|
|||
", cashDay=" + cashDay +
|
||||
", serviceDownThreshold=" + serviceDownThreshold +
|
||||
", stateFlag='" + stateFlag + '\'' +
|
||||
", useSelfCardWithNovip='" + useSelfCardWithNovip + '\'' +
|
||||
", storeLon=" + storeLon +
|
||||
", storeLat=" + storeLat +
|
||||
", onService='" + onService + '\'' +
|
||||
", detail='" + detail + '\'' +
|
||||
", modTime=" + modTime +
|
||||
", segchkStoreImageList=" + segchkStoreImageList +
|
||||
", segchkStoreChkMgtList=" + segchkStoreChkMgtList +
|
||||
", segchkStoreLableMgtList=" + segchkStoreLableMgtList +
|
||||
", segchkStoreSecurityList=" + segchkStoreSecurityList +
|
||||
'}';
|
||||
}
|
||||
|
||||
public String getVrPath() {
|
||||
return vrPath;
|
||||
}
|
||||
|
||||
public void setVrPath(String vrPath) {
|
||||
this.vrPath = vrPath;
|
||||
}
|
||||
|
||||
public String getVRInfo(){
|
||||
return "SegchkStoreVRInfo{" +
|
||||
"providerId=" + providerId +
|
||||
", storeId=" + storeId +
|
||||
", vrPath='" + vrPath +
|
||||
'}';
|
||||
}
|
||||
|
||||
public Integer getUseSelfCardWithNovip() {
|
||||
return useSelfCardWithNovip;
|
||||
}
|
||||
|
||||
public void setUseSelfCardWithNovip(Integer useSelfCardWithNovip) {
|
||||
this.useSelfCardWithNovip = useSelfCardWithNovip;
|
||||
}
|
||||
|
||||
public SegchkStoreCntCtrl getSegchkStoreCntCtrl() {
|
||||
return segchkStoreCntCtrl;
|
||||
}
|
||||
|
||||
public void setSegchkStoreCntCtrl(SegchkStoreCntCtrl segchkStoreCntCtrl) {
|
||||
this.segchkStoreCntCtrl = segchkStoreCntCtrl;
|
||||
}
|
||||
|
||||
public void setStoreCount(Long providerId, SegchkProviderCntCtrl segchkProviderCntCtrl, Map<Object, Object> wechatCount, Map<Object, Object> wechatCount1) {
|
||||
this.segchkStoreCntCtrl = new SegchkStoreCntCtrl();
|
||||
this.segchkStoreCntCtrl.setProviderId(providerId);
|
||||
this.segchkStoreCntCtrl.setStoreId(this.storeId);
|
||||
this.segchkStoreCntCtrl.setAllCnt(segchkProviderCntCtrl, wechatCount, wechatCount1);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,240 @@
|
|||
package com.ruoyi.segchk.domain;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.ruoyi.common.utils.StringUtils;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||
import org.apache.commons.lang3.builder.ToStringStyle;
|
||||
import com.ruoyi.common.annotation.Excel;
|
||||
import com.ruoyi.common.core.domain.BaseEntity;
|
||||
|
||||
/**
|
||||
* seg商家流量管控对象 segchk_store_cnt_ctrl
|
||||
*
|
||||
* @author yinzhiying
|
||||
* @date 2022-06-26
|
||||
*/
|
||||
public class SegchkStoreCntCtrl extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** vr标识,全局唯一 */
|
||||
private Long cntId;
|
||||
|
||||
/** 运营商id,全局唯一 */
|
||||
@Excel(name = "运营商id,全局唯一")
|
||||
private Long providerId;
|
||||
|
||||
/** 商家ID,全局唯一 */
|
||||
@Excel(name = "商家ID,全局唯一")
|
||||
private Long storeId;
|
||||
|
||||
/** 浏览量,大于0表示生效 */
|
||||
@Excel(name = "浏览量,大于0表示生效")
|
||||
private Integer browseCnt;
|
||||
|
||||
/** 浏览备份 */
|
||||
@Excel(name = "浏览备份")
|
||||
private Integer browseCnt1;
|
||||
|
||||
/** 收藏次数,大于0表示生效 */
|
||||
@Excel(name = "收藏次数,大于0表示生效")
|
||||
private Integer collectCnt;
|
||||
|
||||
/** 收藏备份 */
|
||||
@Excel(name = "收藏备份")
|
||||
private Integer collectCnt1;
|
||||
|
||||
/** 预约次数 */
|
||||
@Excel(name = "预约次数")
|
||||
private Integer bookCnt;
|
||||
|
||||
/** 预约次数 */
|
||||
@Excel(name = "预约次数")
|
||||
private Integer bookCnt1;
|
||||
|
||||
/** 管理状态,0有效,1失效 */
|
||||
@Excel(name = "管理状态,0有效,1失效")
|
||||
private String mgtState;
|
||||
|
||||
/** 创建或修改时间 */
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@Excel(name = "创建或修改时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date modTime;
|
||||
|
||||
public static Integer getRedisStoreCnt(String key, Long providerId, int segchkProviderCntCtrl, Map<Object, Object> wechatCount, Map<Object, Object> wechatCount1) {
|
||||
return null;
|
||||
}
|
||||
|
||||
protected static Integer getRedisStoreCnt(String key, Long providerId, Long storeId, Map<Object, Object> map) {
|
||||
return ObjectUtils.isEmpty(map) ? 0 : (Integer) map.getOrDefault(StringUtils.format("{}:{}:{}", key, providerId, storeId), 0);
|
||||
}
|
||||
|
||||
public void setCntId(Long cntId)
|
||||
{
|
||||
this.cntId = cntId;
|
||||
}
|
||||
|
||||
public Long getCntId()
|
||||
{
|
||||
return cntId;
|
||||
}
|
||||
public void setProviderId(Long providerId)
|
||||
{
|
||||
this.providerId = providerId;
|
||||
}
|
||||
|
||||
public Long getProviderId()
|
||||
{
|
||||
return providerId;
|
||||
}
|
||||
public void setStoreId(Long storeId)
|
||||
{
|
||||
this.storeId = storeId;
|
||||
}
|
||||
|
||||
public Long getStoreId()
|
||||
{
|
||||
return storeId;
|
||||
}
|
||||
public void setBrowseCnt(Integer browseCnt)
|
||||
{
|
||||
this.browseCnt = browseCnt;
|
||||
}
|
||||
|
||||
public Integer getBrowseCnt()
|
||||
{
|
||||
return browseCnt;
|
||||
}
|
||||
public void setBrowseCnt1(Integer browseCnt1)
|
||||
{
|
||||
this.browseCnt1 = browseCnt1;
|
||||
}
|
||||
|
||||
public Integer getBrowseCnt1()
|
||||
{
|
||||
return browseCnt1;
|
||||
}
|
||||
public void setCollectCnt(Integer collectCnt)
|
||||
{
|
||||
this.collectCnt = collectCnt;
|
||||
}
|
||||
|
||||
public Integer getCollectCnt()
|
||||
{
|
||||
return collectCnt;
|
||||
}
|
||||
public void setCollectCnt1(Integer collectCnt1)
|
||||
{
|
||||
this.collectCnt1 = collectCnt1;
|
||||
}
|
||||
|
||||
public Integer getCollectCnt1()
|
||||
{
|
||||
return collectCnt1;
|
||||
}
|
||||
public void setBookCnt(Integer bookCnt)
|
||||
{
|
||||
this.bookCnt = bookCnt;
|
||||
}
|
||||
|
||||
public Integer getBookCnt()
|
||||
{
|
||||
return bookCnt;
|
||||
}
|
||||
public void setBookCnt1(Integer bookCnt1)
|
||||
{
|
||||
this.bookCnt1 = bookCnt1;
|
||||
}
|
||||
|
||||
public Integer getBookCnt1()
|
||||
{
|
||||
return bookCnt1;
|
||||
}
|
||||
public void setMgtState(String mgtState)
|
||||
{
|
||||
this.mgtState = mgtState;
|
||||
}
|
||||
|
||||
public String getMgtState()
|
||||
{
|
||||
return mgtState;
|
||||
}
|
||||
public void setModTime(Date modTime)
|
||||
{
|
||||
this.modTime = modTime;
|
||||
}
|
||||
|
||||
public Date getModTime()
|
||||
{
|
||||
return modTime;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
|
||||
.append("cntId", getCntId())
|
||||
.append("providerId", getProviderId())
|
||||
.append("storeId", getStoreId())
|
||||
.append("browseCnt", getBrowseCnt())
|
||||
.append("browseCnt1", getBrowseCnt1())
|
||||
.append("collectCnt", getCollectCnt())
|
||||
.append("collectCnt1", getCollectCnt1())
|
||||
.append("bookCnt", getBookCnt())
|
||||
.append("bookCnt1", getBookCnt1())
|
||||
.append("mgtState", getMgtState())
|
||||
.append("modTime", getModTime())
|
||||
.toString();
|
||||
}
|
||||
|
||||
public Map getRedisMap(int flag){
|
||||
Map map = new HashMap<>();
|
||||
if(flag == 0){
|
||||
if (!ObjectUtils.isEmpty(this.bookCnt)) {
|
||||
map.put("book_cnt" + ":" + this.providerId + ":" + this.storeId, this.bookCnt);
|
||||
}
|
||||
if (!ObjectUtils.isEmpty(this.browseCnt)) {
|
||||
map.put("browse_cnt" + ":" + this.providerId + ":" + this.storeId, this.browseCnt);
|
||||
}
|
||||
if (!ObjectUtils.isEmpty(this.collectCnt)) {
|
||||
map.put("collect_cnt" + ":" + this.providerId + ":" + this.storeId, this.collectCnt);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (!ObjectUtils.isEmpty(this.bookCnt1)) {
|
||||
map.put("book_cnt1" + ":" + this.providerId + ":" + this.storeId, this.bookCnt1);
|
||||
}
|
||||
if (!ObjectUtils.isEmpty(this.browseCnt1)) {
|
||||
map.put("browse_cnt1" + ":" + this.providerId + ":" + this.storeId, this.browseCnt1);
|
||||
}
|
||||
if (!ObjectUtils.isEmpty(this.collectCnt1)) {
|
||||
map.put("collect_cnt1" + ":" + this.providerId + ":" + this.storeId, this.collectCnt1);
|
||||
}
|
||||
}
|
||||
|
||||
return map;
|
||||
}
|
||||
|
||||
public void setAllCnt(SegchkProviderCntCtrl segchkProviderCntCtrl, Map<Object, Object> wechatCount, Map<Object, Object> wechatCount1) {
|
||||
this.setBrowseCnt(getRedisStoreCnt("browse_cnt", this.providerId, this.storeId, wechatCount));
|
||||
this.setCollectCnt(getRedisStoreCnt("collect_cnt", this.providerId, this.storeId, wechatCount));
|
||||
this.setBookCnt(getRedisStoreCnt("book_cnt", this.providerId, this.storeId, wechatCount));
|
||||
this.setBrowseCnt1(getRedisStoreCnt("browse_cnt1", this.providerId, this.storeId, wechatCount1));
|
||||
this.setCollectCnt1(getRedisStoreCnt("collect_cnt1", this.providerId, this.storeId, wechatCount1));
|
||||
this.setBookCnt1(getRedisStoreCnt("book_cnt1", this.providerId, this.storeId, wechatCount1));
|
||||
}
|
||||
|
||||
public long updateBrowse() {
|
||||
return this.browseCnt - this.browseCnt1;
|
||||
}
|
||||
public long updateCollect() {
|
||||
return this.collectCnt - this.collectCnt1;
|
||||
}
|
||||
public long updateBook() {
|
||||
return this.bookCnt - this.bookCnt1;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,123 @@
|
|||
package com.ruoyi.segchk.domain;
|
||||
|
||||
import com.ruoyi.common.annotation.Excel;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* seg商家流量管控对象 segchk_store_cnt_ctrl
|
||||
*
|
||||
* @author yinzhiying
|
||||
* @date 2022-06-26
|
||||
*/
|
||||
public class SegchkStoreCntResp extends SegchkStoreCntCtrl {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* vr标识,全局唯一
|
||||
*/
|
||||
private Long cntId;
|
||||
|
||||
/**
|
||||
* 运营商id,全局唯一
|
||||
*/
|
||||
@Excel(name = "运营商id,全局唯一")
|
||||
private Long providerId;
|
||||
|
||||
/**
|
||||
* 商家ID,全局唯一
|
||||
*/
|
||||
@Excel(name = "商家ID,全局唯一")
|
||||
private Long storeId;
|
||||
|
||||
/**
|
||||
* 浏览量,大于0表示生效
|
||||
*/
|
||||
@Excel(name = "浏览量,大于0表示生效")
|
||||
private Integer browseCnt = 0;
|
||||
|
||||
/**
|
||||
* 收藏次数,大于0表示生效
|
||||
*/
|
||||
@Excel(name = "收藏次数,大于0表示生效")
|
||||
private Integer collectCnt = 0;
|
||||
|
||||
/**
|
||||
* 预约次数
|
||||
*/
|
||||
@Excel(name = "预约次数")
|
||||
private Integer bookCnt = 0;
|
||||
|
||||
public Long getCntId() {
|
||||
return this.cntId;
|
||||
}
|
||||
|
||||
public void setCntId(Long cntId) {
|
||||
this.cntId = cntId;
|
||||
}
|
||||
|
||||
public Long getProviderId() {
|
||||
return this.providerId;
|
||||
}
|
||||
|
||||
public void setProviderId(Long providerId) {
|
||||
this.providerId = providerId;
|
||||
}
|
||||
|
||||
public Long getStoreId() {
|
||||
return this.storeId;
|
||||
}
|
||||
|
||||
public void setStoreId(Long storeId) {
|
||||
this.storeId = storeId;
|
||||
}
|
||||
|
||||
public Integer getBrowseCnt() {
|
||||
return this.browseCnt;
|
||||
}
|
||||
|
||||
public void setBrowseCnt(Integer browseCnt) {
|
||||
this.browseCnt = browseCnt;
|
||||
}
|
||||
|
||||
public Integer getCollectCnt() {
|
||||
return this.collectCnt;
|
||||
}
|
||||
|
||||
public void setCollectCnt(Integer collectCnt) {
|
||||
this.collectCnt = collectCnt;
|
||||
}
|
||||
|
||||
public Integer getBookCnt() {
|
||||
return this.bookCnt;
|
||||
}
|
||||
|
||||
public void setBookCnt(Integer bookCnt) {
|
||||
this.bookCnt = bookCnt;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "SegchkStoreCntResp{{" + super.toString() + "}, "
|
||||
+ "serialVersionUID=" + serialVersionUID + ", "
|
||||
+ "cntId=" + cntId + ", "
|
||||
+ "providerId=" + providerId + ", "
|
||||
+ "storeId=" + storeId + ", "
|
||||
+ "browseCnt=" + browseCnt + ", "
|
||||
+ "collectCnt=" + collectCnt + ", "
|
||||
+ "bookCnt=" + bookCnt + "}";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setAllCnt(SegchkProviderCntCtrl segchkProviderCntCtrl, Map<Object, Object> wechatCount, Map<Object, Object> wechatCount1) {
|
||||
this.setBrowseCnt(SegchkStoreCntCtrl.getRedisStoreCnt("browse_cnt", this.providerId, this.storeId, wechatCount)
|
||||
+ ((ObjectUtils.isEmpty(segchkProviderCntCtrl) || segchkProviderCntCtrl.getBrowseCnt() == 0) ? 0 : SegchkStoreCntCtrl.getRedisStoreCnt("browse_cnt1", this.providerId, this.storeId, wechatCount1)));
|
||||
|
||||
this.setCollectCnt(SegchkStoreCntCtrl.getRedisStoreCnt("collect_cnt", this.providerId, this.storeId, wechatCount)
|
||||
+ ((ObjectUtils.isEmpty(segchkProviderCntCtrl) || segchkProviderCntCtrl.getCollectCnt() == 0) ? 0 : SegchkStoreCntCtrl.getRedisStoreCnt("collect_cnt1", this.providerId, this.storeId, wechatCount1)));
|
||||
|
||||
this.setBookCnt(SegchkStoreCntCtrl.getRedisStoreCnt("book_cnt", this.providerId, this.storeId, wechatCount)
|
||||
+ ((ObjectUtils.isEmpty(segchkProviderCntCtrl) || segchkProviderCntCtrl.getBookCnt() == 0) ? 0 : SegchkStoreCntCtrl.getRedisStoreCnt("book_cnt1", this.providerId, this.storeId, wechatCount1)));
|
||||
}
|
||||
}
|
||||
|
|
@ -1,209 +0,0 @@
|
|||
package com.ruoyi.segchk.domain;
|
||||
|
||||
import com.ruoyi.common.annotation.Excel;
|
||||
import com.ruoyi.common.core.domain.BaseEntity;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* seg返回首页推荐商户对象 segchk_recommender_storeweb
|
||||
*
|
||||
* @author yinzhiying
|
||||
* @date 2021-07-01
|
||||
*/
|
||||
public class SegchkStoreIndexWebResp extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 运营商id,全局唯一 */
|
||||
@Excel(name = "运营商id,全局唯一")
|
||||
private Long providerId;
|
||||
|
||||
/** 商家id,全局唯一 */
|
||||
@Excel(name = "商家id,全局唯一")
|
||||
private Long storeId;
|
||||
|
||||
/** 商家名称 */
|
||||
@Excel(name = "商家名称")
|
||||
private String storeName;
|
||||
|
||||
/** 商家状态 */
|
||||
@Excel(name = "商家状态")
|
||||
private String serviceState;
|
||||
|
||||
/** 商户显示序号 */
|
||||
@Excel(name = "商户显示序号")
|
||||
private Integer storeSort;
|
||||
|
||||
/** 商户列表模式时的图标 */
|
||||
@Excel(name = "商户列表模式时的图标")
|
||||
private String storeIcon;
|
||||
|
||||
/** 商户的大图标 */
|
||||
@Excel(name = "商户的大图标")
|
||||
private String storeGificon;
|
||||
|
||||
/** 商户经度 */
|
||||
@Excel(name = "商户经度")
|
||||
private BigDecimal storeLon;
|
||||
|
||||
/** 商户纬度 */
|
||||
@Excel(name = "商户纬度")
|
||||
private BigDecimal storeLat;
|
||||
|
||||
/** 用户距离 */
|
||||
@Excel(name = "用户距离")
|
||||
private BigDecimal userDist;
|
||||
|
||||
/** 商户累积核消次数 */
|
||||
@Excel(name = "商户累积核消次数")
|
||||
private Integer chkCount;
|
||||
|
||||
/** 商户平均星评 */
|
||||
@Excel(name = "商户平均星评")
|
||||
private BigDecimal starAvg;
|
||||
|
||||
/** 在线状态 */
|
||||
@Excel(name = "对应的销售id")
|
||||
private Integer salerId;
|
||||
|
||||
|
||||
/** 商户标签列表 */
|
||||
@Valid
|
||||
private List<SegchkRecommenderStoreLableWeb> lables;
|
||||
|
||||
public Long getProviderId() {
|
||||
return providerId;
|
||||
}
|
||||
|
||||
public void setProviderId(Long providerId) {
|
||||
this.providerId = providerId;
|
||||
}
|
||||
|
||||
public Long getStoreId() {
|
||||
return storeId;
|
||||
}
|
||||
|
||||
public void setStoreId(Long storeId) {
|
||||
this.storeId = storeId;
|
||||
}
|
||||
|
||||
public Integer getStoreSort() {
|
||||
return storeSort;
|
||||
}
|
||||
|
||||
public void setStoreSort(Integer storeSort) {
|
||||
this.storeSort = storeSort;
|
||||
}
|
||||
|
||||
public String getStoreIcon() {
|
||||
return storeIcon;
|
||||
}
|
||||
|
||||
public void setStoreIcon(String storeIcon) {
|
||||
this.storeIcon = storeIcon;
|
||||
}
|
||||
|
||||
public String getStoreGificon() {
|
||||
return storeGificon;
|
||||
}
|
||||
|
||||
public void setStoreGificon(String storeGificon) {
|
||||
this.storeGificon = storeGificon;
|
||||
}
|
||||
|
||||
public BigDecimal getStoreLon() {
|
||||
return storeLon;
|
||||
}
|
||||
|
||||
public void setStoreLon(BigDecimal storeLon) {
|
||||
this.storeLon = storeLon;
|
||||
}
|
||||
|
||||
public BigDecimal getStoreLat() {
|
||||
return storeLat;
|
||||
}
|
||||
|
||||
public void setStoreLat(BigDecimal storeLat) {
|
||||
this.storeLat = storeLat;
|
||||
}
|
||||
|
||||
public Integer getChkCount() {
|
||||
return chkCount;
|
||||
}
|
||||
|
||||
public void setChkCount(Integer chkCount) {
|
||||
this.chkCount = chkCount;
|
||||
}
|
||||
|
||||
public BigDecimal getStarAvg() {
|
||||
return starAvg;
|
||||
}
|
||||
|
||||
public void setStarAvg(BigDecimal starAvg) {
|
||||
this.starAvg = starAvg;
|
||||
}
|
||||
|
||||
public List<SegchkRecommenderStoreLableWeb> getLables() {
|
||||
return lables;
|
||||
}
|
||||
|
||||
public void setLables(List<SegchkRecommenderStoreLableWeb> lables) {
|
||||
this.lables = lables;
|
||||
}
|
||||
|
||||
public String getStoreName() {
|
||||
return storeName;
|
||||
}
|
||||
|
||||
public void setStoreName(String storeName) {
|
||||
this.storeName = storeName;
|
||||
}
|
||||
|
||||
|
||||
public String getServiceState() {
|
||||
return serviceState;
|
||||
}
|
||||
|
||||
public void setServiceState(String serviceState) {
|
||||
this.serviceState = serviceState;
|
||||
}
|
||||
|
||||
public Integer getSalerId() {
|
||||
return salerId;
|
||||
}
|
||||
|
||||
public void setSalerId(Integer salerId) {
|
||||
this.salerId = salerId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "SegchkStoreIndexWebResp{" +
|
||||
"providerId=" + providerId +
|
||||
", storeId=" + storeId +
|
||||
", storeName='" + storeName + '\'' +
|
||||
", serviceState='" + serviceState + '\'' +
|
||||
", storeSort=" + storeSort +
|
||||
", storeIcon='" + storeIcon + '\'' +
|
||||
", storeGificon='" + storeGificon + '\'' +
|
||||
", storeLon=" + storeLon +
|
||||
", storeLat=" + storeLat +
|
||||
", chkCount=" + chkCount +
|
||||
", starAvg=" + starAvg +
|
||||
", salerId=" + salerId +
|
||||
", lables=" + lables +
|
||||
", userDist=" + userDist +
|
||||
'}';
|
||||
}
|
||||
|
||||
public BigDecimal getUserDist() {
|
||||
return userDist;
|
||||
}
|
||||
|
||||
public void setUserDist(BigDecimal userDist) {
|
||||
this.userDist = userDist;
|
||||
}
|
||||
}
|
||||
|
|
@ -26,6 +26,11 @@ public class SegchkStoreSelfMgt extends BaseEntity
|
|||
@Excel(name = "创建或修改时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date modTime;
|
||||
|
||||
/** 截止时间 */
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@Excel(name = "截止时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date expirationDate;
|
||||
|
||||
/** 商家id,全局唯一 */
|
||||
@Excel(name = "商家id,全局唯一")
|
||||
private Long storeId;
|
||||
|
|
@ -193,6 +198,7 @@ public class SegchkStoreSelfMgt extends BaseEntity
|
|||
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
|
||||
.append("freeCardId", getFreeCardId())
|
||||
.append("modTime", getModTime())
|
||||
.append("expirationDate", getExpirationDate())
|
||||
.append("storeId", getStoreId())
|
||||
.append("providerId", getProviderId())
|
||||
.append("userId", getUserId())
|
||||
|
|
@ -206,4 +212,12 @@ public class SegchkStoreSelfMgt extends BaseEntity
|
|||
.append("status", getStatus())
|
||||
.toString();
|
||||
}
|
||||
|
||||
public Date getExpirationDate() {
|
||||
return expirationDate;
|
||||
}
|
||||
|
||||
public void setExpirationDate(Date expirationDate) {
|
||||
this.expirationDate = expirationDate;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,103 @@
|
|||
package com.ruoyi.segchk.domain;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.ruoyi.common.annotation.Excel;
|
||||
import com.ruoyi.common.core.domain.BaseEntity;
|
||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||
import org.apache.commons.lang3.builder.ToStringStyle;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* seg商家状态信息
|
||||
*
|
||||
* @author yinzhiying
|
||||
* @date 2021-08-23
|
||||
*/
|
||||
public class SegchkStoreStatus extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 运营商id,全局唯一 */
|
||||
@Excel(name = "运营商id,全局唯一")
|
||||
private Long providerId;
|
||||
|
||||
/** 商家id,全局唯一 */
|
||||
private Long storeId;
|
||||
|
||||
/** 服务状态,0在线,1下线 */
|
||||
@Excel(name = "服务状态,0在线,1下线")
|
||||
private String serviceState;
|
||||
|
||||
/** 是否发送通知消息,0发送,1不发送 */
|
||||
@Excel(name = "是否发送通知消息,0发送,1不发送")
|
||||
private String withMsg;
|
||||
|
||||
/** 是否人工干预,0自动,1人工 */
|
||||
@Excel(name = "是否人工干预,0自动,1人工")
|
||||
private String stateFlag;
|
||||
|
||||
/** 非会员能否使用赠卡,默认否0;能1 */
|
||||
@Excel(name = "默认否0;能1")
|
||||
private Integer useSelfCardWithNovip;
|
||||
|
||||
public Long getProviderId() {
|
||||
return providerId;
|
||||
}
|
||||
|
||||
public void setProviderId(Long providerId) {
|
||||
this.providerId = providerId;
|
||||
}
|
||||
|
||||
public Long getStoreId() {
|
||||
return storeId;
|
||||
}
|
||||
|
||||
public void setStoreId(Long storeId) {
|
||||
this.storeId = storeId;
|
||||
}
|
||||
|
||||
public String getServiceState() {
|
||||
return serviceState;
|
||||
}
|
||||
|
||||
public void setServiceState(String serviceState) {
|
||||
this.serviceState = serviceState;
|
||||
}
|
||||
|
||||
public String getWithMsg() {
|
||||
return withMsg;
|
||||
}
|
||||
|
||||
public void setWithMsg(String withMsg) {
|
||||
this.withMsg = withMsg;
|
||||
}
|
||||
|
||||
public String getStateFlag() {
|
||||
return stateFlag;
|
||||
}
|
||||
|
||||
public void setStateFlag(String stateFlag) {
|
||||
this.stateFlag = stateFlag;
|
||||
}
|
||||
|
||||
public Integer getUseSelfCardWithNovip() {
|
||||
return useSelfCardWithNovip;
|
||||
}
|
||||
|
||||
public void setUseSelfCardWithNovip(Integer useSelfCardWithNovip) {
|
||||
this.useSelfCardWithNovip = useSelfCardWithNovip;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "SegchkStoreStatus{" +
|
||||
"providerId=" + providerId +
|
||||
", storeId=" + storeId +
|
||||
", serviceState='" + serviceState + '\'' +
|
||||
", withMsg='" + withMsg + '\'' +
|
||||
", stateFlag='" + stateFlag + '\'' +
|
||||
", useSelfCardWithNovip=" + useSelfCardWithNovip +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,123 @@
|
|||
package com.ruoyi.segchk.domain;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.ruoyi.common.annotation.Excel;
|
||||
import com.ruoyi.common.core.domain.BaseEntity;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.StringJoiner;
|
||||
|
||||
/**
|
||||
* seg商家基础信息对象 segchk_store_basic_info
|
||||
*
|
||||
* @author yinzhiying
|
||||
* @date 2021-08-23
|
||||
*/
|
||||
public class SegchkStoreVrInfo extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 运营商id,全局唯一 */
|
||||
@Excel(name = "运营商id,全局唯一")
|
||||
private Long providerId;
|
||||
|
||||
/** 商家id,全局唯一 */
|
||||
private Long storeId;
|
||||
|
||||
/** VR id,全局唯一 */
|
||||
private Long vrId;
|
||||
|
||||
/** VR地址 */
|
||||
@Excel(name = "VR地址")
|
||||
private String vrUrl;
|
||||
|
||||
/** 图标地址 */
|
||||
@Excel(name = "图标地址")
|
||||
private String thumbPath;
|
||||
|
||||
/** 服务状态,0在线,1下线 */
|
||||
@Excel(name = "服务状态,0在线,1下线")
|
||||
private String serviceState;
|
||||
|
||||
/** 创建或修改时间 */
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@Excel(name = "创建或修改时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date modTime;
|
||||
|
||||
public void getfromBasic(SegchkStoreBasicInfo segchkStoreBasicInfo) {
|
||||
this.providerId = segchkStoreBasicInfo.getProviderId();
|
||||
this.storeId = segchkStoreBasicInfo.getStoreId();
|
||||
this.vrUrl = segchkStoreBasicInfo.getVrPath();
|
||||
}
|
||||
|
||||
public Long getProviderId() {
|
||||
return providerId;
|
||||
}
|
||||
|
||||
public void setProviderId(Long providerId) {
|
||||
this.providerId = providerId;
|
||||
}
|
||||
|
||||
public Long getStoreId() {
|
||||
return storeId;
|
||||
}
|
||||
|
||||
public void setStoreId(Long storeId) {
|
||||
this.storeId = storeId;
|
||||
}
|
||||
|
||||
public Long getVrId() {
|
||||
return vrId;
|
||||
}
|
||||
|
||||
public void setVrId(Long vrId) {
|
||||
this.vrId = vrId;
|
||||
}
|
||||
|
||||
public String getVrUrl() {
|
||||
return vrUrl;
|
||||
}
|
||||
|
||||
public void setVrUrl(String vrUrl) {
|
||||
this.vrUrl = vrUrl;
|
||||
}
|
||||
|
||||
public String getThumbPath() {
|
||||
return thumbPath;
|
||||
}
|
||||
|
||||
public void setThumbPath(String thumbPath) {
|
||||
this.thumbPath = thumbPath;
|
||||
}
|
||||
|
||||
public String getServiceState() {
|
||||
return serviceState;
|
||||
}
|
||||
|
||||
public void setServiceState(String serviceState) {
|
||||
this.serviceState = serviceState;
|
||||
}
|
||||
|
||||
public Date getModTime() {
|
||||
return modTime;
|
||||
}
|
||||
|
||||
public void setModTime(Date modTime) {
|
||||
this.modTime = modTime;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return new StringJoiner(", ", SegchkStoreVrInfo.class.getSimpleName() + "[", "]")
|
||||
.add("providerId=" + providerId)
|
||||
.add("storeId=" + storeId)
|
||||
.add("vrId=" + vrId)
|
||||
.add("vrUrl='" + vrUrl + "'")
|
||||
.add("thumbPath='" + thumbPath + "'")
|
||||
.add("serviceState='" + serviceState + "'")
|
||||
.add("modTime=" + modTime)
|
||||
.toString();
|
||||
}
|
||||
}
|
||||
|
|
@ -1,66 +0,0 @@
|
|||
package com.ruoyi.segchk.domain;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.ruoyi.common.annotation.Excel;
|
||||
import com.ruoyi.common.core.domain.BaseEntity;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* seg用户奖励对象 segchk_user_reward
|
||||
*
|
||||
* @author yinzhiying
|
||||
* @date 2021-07-01
|
||||
*/
|
||||
public class SegchkUserCashWebResp extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 用户id,全局唯一 */
|
||||
@Excel(name = "用户id,全局唯一")
|
||||
private BigDecimal cash;
|
||||
|
||||
/** 奖励卡号 */
|
||||
@Excel(name = "奖励卡号")
|
||||
private String retFlag;
|
||||
|
||||
/** 创建或修改时间 */
|
||||
@JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss")
|
||||
@Excel(name = "创建或修改时间", width = 30, dateFormat = "yyyy-MM-dd hh:mm:ss")
|
||||
private Date modTime;
|
||||
|
||||
|
||||
public BigDecimal getCash() {
|
||||
return cash;
|
||||
}
|
||||
|
||||
public void setCash(BigDecimal cash) {
|
||||
this.cash = cash;
|
||||
}
|
||||
|
||||
public String getRetFlag() {
|
||||
return retFlag;
|
||||
}
|
||||
|
||||
public void setRetFlag(String retFlag) {
|
||||
this.retFlag = retFlag;
|
||||
}
|
||||
|
||||
public Date getModTime() {
|
||||
return modTime;
|
||||
}
|
||||
|
||||
public void setModTime(Date modTime) {
|
||||
this.modTime = modTime;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "SegchkUserCashWebResp{" +
|
||||
"cash=" + cash +
|
||||
", retFlag='" + retFlag + '\'' +
|
||||
", modTime=" + modTime +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
|
|
@ -1,153 +0,0 @@
|
|||
package com.ruoyi.segchk.domain;
|
||||
|
||||
import com.ruoyi.common.annotation.Excel;
|
||||
import com.ruoyi.common.core.domain.BaseEntity;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* seg用户充值可选卡对象 SegchkUserChargeCard
|
||||
*
|
||||
* @author yinzhiying
|
||||
* @date 2021-07-30
|
||||
*/
|
||||
public class SegchkUserChargeCard extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 运营商id */
|
||||
@Excel(name = "运营商id")
|
||||
private Long providerId;
|
||||
|
||||
/** 卡类型id */
|
||||
@Excel(name = "卡类型id")
|
||||
private Long cardTypeId;
|
||||
|
||||
/** 会员卡id */
|
||||
@Excel(name = "会员卡id")
|
||||
private Long cardId;
|
||||
|
||||
/** 会员卡名称 */
|
||||
@Excel(name = "会员卡名称")
|
||||
private String cardTypeName;
|
||||
|
||||
/** 已购买次数 */
|
||||
@Excel(name = "已购买次数")
|
||||
private Integer hadBuy;
|
||||
|
||||
/** 可购买次数 */
|
||||
@Excel(name = "可购买次数")
|
||||
private Integer buyCount;
|
||||
|
||||
/** 会员卡面值 */
|
||||
@Excel(name = "会员卡面值")
|
||||
private BigDecimal cardTypeValue;
|
||||
|
||||
/** 是否可以购买,0可,1有卡正在使用,2购买次数超限 */
|
||||
@Excel(name = "是否可以购买")
|
||||
private Integer canBuy;
|
||||
|
||||
/** 会员卡权益次数 */
|
||||
@Excel(name = "会员卡权益次数")
|
||||
private Integer cardTypeChkcount;
|
||||
|
||||
/** 会员卡有效天数 */
|
||||
@Excel(name = "会员卡有效天数")
|
||||
private Integer effectiveTime;
|
||||
|
||||
public Long getProviderId() {
|
||||
return providerId;
|
||||
}
|
||||
|
||||
public void setProviderId(Long providerId) {
|
||||
this.providerId = providerId;
|
||||
}
|
||||
|
||||
public Long getCardTypeId() {
|
||||
return cardTypeId;
|
||||
}
|
||||
|
||||
public void setCardTypeId(Long cardTypeId) {
|
||||
this.cardTypeId = cardTypeId;
|
||||
}
|
||||
|
||||
public Long getCardId() {
|
||||
return cardId;
|
||||
}
|
||||
|
||||
public void setCardId(Long cardId) {
|
||||
this.cardId = cardId;
|
||||
}
|
||||
|
||||
public String getCardTypeName() {
|
||||
return cardTypeName;
|
||||
}
|
||||
|
||||
public void setCardTypeName(String cardTypeName) {
|
||||
this.cardTypeName = cardTypeName;
|
||||
}
|
||||
|
||||
public Integer getHadBuy() {
|
||||
return hadBuy;
|
||||
}
|
||||
|
||||
public void setHadBuy(Integer hadBuy) {
|
||||
this.hadBuy = hadBuy;
|
||||
}
|
||||
|
||||
public Integer getBuyCount() {
|
||||
return buyCount;
|
||||
}
|
||||
|
||||
public void setBuyCount(Integer buyCount) {
|
||||
this.buyCount = buyCount;
|
||||
}
|
||||
|
||||
public BigDecimal getCardTypeValue() {
|
||||
return cardTypeValue;
|
||||
}
|
||||
|
||||
public void setCardTypeValue(BigDecimal cardTypeValue) {
|
||||
this.cardTypeValue = cardTypeValue;
|
||||
}
|
||||
|
||||
public Integer getCanBuy() {
|
||||
return canBuy;
|
||||
}
|
||||
|
||||
public void setCanBuy(Integer canBuy) {
|
||||
this.canBuy = canBuy;
|
||||
}
|
||||
|
||||
public Integer getCardTypeChkcount() {
|
||||
return cardTypeChkcount;
|
||||
}
|
||||
|
||||
public void setCardTypeChkcount(Integer cardTypeChkcount) {
|
||||
this.cardTypeChkcount = cardTypeChkcount;
|
||||
}
|
||||
|
||||
public Integer getEffectiveTime() {
|
||||
return effectiveTime;
|
||||
}
|
||||
|
||||
public void setEffectiveTime(Integer effectiveTime) {
|
||||
this.effectiveTime = effectiveTime;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "SegchkUserChargeCard{" +
|
||||
"providerId=" + providerId +
|
||||
", cardTypeId=" + cardTypeId +
|
||||
", cardId=" + cardId +
|
||||
", cardTypeName='" + cardTypeName + '\'' +
|
||||
", hadBuy=" + hadBuy +
|
||||
", buyCount=" + buyCount +
|
||||
", cardTypeValue=" + cardTypeValue +
|
||||
", canBuy=" + canBuy +
|
||||
", cardTypeChkcount=" + cardTypeChkcount +
|
||||
", effectiveTime=" + effectiveTime +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
|
|
@ -1,78 +0,0 @@
|
|||
package com.ruoyi.segchk.domain;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.ruoyi.common.annotation.Excel;
|
||||
import com.ruoyi.common.core.domain.BaseEntity;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* seg用户奖励对象 segchk_user_reward
|
||||
*
|
||||
* @author yinzhiying
|
||||
* @date 2021-07-01
|
||||
*/
|
||||
public class SegchkUserChargeWebResp extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 用户id,全局唯一 */
|
||||
@Excel(name = "用户id,全局唯一")
|
||||
private BigDecimal charge;
|
||||
|
||||
/** 奖励类型 */
|
||||
@Excel(name = "奖励类型")
|
||||
private String cardName;
|
||||
|
||||
/** 奖励卡号 */
|
||||
@Excel(name = "奖励卡号")
|
||||
private String retFlag;
|
||||
|
||||
/** 创建或修改时间 */
|
||||
@JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss")
|
||||
@Excel(name = "创建或修改时间", width = 30, dateFormat = "yyyy-MM-dd hh:mm:ss")
|
||||
private Date modTime;
|
||||
|
||||
public BigDecimal getCharge() {
|
||||
return charge;
|
||||
}
|
||||
|
||||
public void setCharge(BigDecimal charge) {
|
||||
this.charge = charge;
|
||||
}
|
||||
|
||||
public String getCardName() {
|
||||
return cardName;
|
||||
}
|
||||
|
||||
public void setCardName(String cardName) {
|
||||
this.cardName = cardName;
|
||||
}
|
||||
|
||||
public String getRetFlag() {
|
||||
return retFlag;
|
||||
}
|
||||
|
||||
public void setRetFlag(String retFlag) {
|
||||
this.retFlag = retFlag;
|
||||
}
|
||||
|
||||
public Date getModTime() {
|
||||
return modTime;
|
||||
}
|
||||
|
||||
public void setModTime(Date modTime) {
|
||||
this.modTime = modTime;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "SegchkUserChargeWebResp{" +
|
||||
"charge=" + charge +
|
||||
", cardName='" + cardName + '\'' +
|
||||
", retFlag=" + retFlag +
|
||||
", modTime=" + modTime +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
|
|
@ -1,185 +0,0 @@
|
|||
package com.ruoyi.segchk.domain;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.ruoyi.common.annotation.Excel;
|
||||
import com.ruoyi.common.core.domain.BaseEntity;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* seg会员卡对象 segchk_user_vip
|
||||
*
|
||||
* @author yinzhiying
|
||||
* @date 2021-07-01
|
||||
*/
|
||||
public class SegchkUserCollectWebResp extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 收藏id */
|
||||
@Excel(name = "收藏id")
|
||||
private Long collectId;
|
||||
|
||||
/** 运营商id,全局唯一 */
|
||||
@Excel(name = "运营商id,全局唯一")
|
||||
private Long providerId;
|
||||
|
||||
/** 商家id */
|
||||
@Excel(name = "商家id,全局惟一")
|
||||
private Long storeId;
|
||||
|
||||
/** 商家名称 */
|
||||
@Excel(name = "商家名称")
|
||||
private String storeName;
|
||||
|
||||
/** 商家图标 */
|
||||
@Excel(name = "会员卡类型,0--9块9,1---99")
|
||||
private String storeIcon;
|
||||
|
||||
/** 用户id,全局唯一 */
|
||||
@Excel(name = "用户id,全局唯一")
|
||||
private Long serviceState;
|
||||
|
||||
/** 用户id,全局唯一 */
|
||||
@Excel(name = "用户id,全局唯一")
|
||||
private BigDecimal storeLon;
|
||||
|
||||
/** 用户id,全局唯一 */
|
||||
@Excel(name = "用户id,全局唯一")
|
||||
private BigDecimal storeLat;
|
||||
|
||||
/** 用户id,全局唯一 */
|
||||
@Excel(name = "用户id,全局唯一")
|
||||
private Long chkCount;
|
||||
|
||||
/** 用户id,全局唯一 */
|
||||
@Excel(name = "用户id,全局唯一")
|
||||
private BigDecimal starAvg;
|
||||
|
||||
|
||||
/** 创建或修改时间 */
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@Excel(name = "创建或修改时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date modTime;
|
||||
|
||||
/** 商户标签列表 */
|
||||
@Valid
|
||||
private List<SegchkRecommenderStoreLableWeb> segchkRecommenderStoreLableWebList;
|
||||
|
||||
public Long getCollectId() {
|
||||
return collectId;
|
||||
}
|
||||
|
||||
public void setCollectId(Long collectId) {
|
||||
this.collectId = collectId;
|
||||
}
|
||||
|
||||
public Long getProviderId() {
|
||||
return providerId;
|
||||
}
|
||||
|
||||
public void setProviderId(Long providerId) {
|
||||
this.providerId = providerId;
|
||||
}
|
||||
|
||||
public Long getStoreId() {
|
||||
return storeId;
|
||||
}
|
||||
|
||||
public void setStoreId(Long storeId) {
|
||||
this.storeId = storeId;
|
||||
}
|
||||
|
||||
public String getStoreName() {
|
||||
return storeName;
|
||||
}
|
||||
|
||||
public void setStoreName(String storeName) {
|
||||
this.storeName = storeName;
|
||||
}
|
||||
|
||||
public String getStoreIcon() {
|
||||
return storeIcon;
|
||||
}
|
||||
|
||||
public void setStoreIcon(String storeIcon) {
|
||||
this.storeIcon = storeIcon;
|
||||
}
|
||||
|
||||
public Long getServiceState() {
|
||||
return serviceState;
|
||||
}
|
||||
|
||||
public void setServiceState(Long serviceState) {
|
||||
this.serviceState = serviceState;
|
||||
}
|
||||
|
||||
public BigDecimal getStoreLon() {
|
||||
return storeLon;
|
||||
}
|
||||
|
||||
public void setStoreLon(BigDecimal storeLon) {
|
||||
this.storeLon = storeLon;
|
||||
}
|
||||
|
||||
public BigDecimal getStoreLat() {
|
||||
return storeLat;
|
||||
}
|
||||
|
||||
public void setStoreLat(BigDecimal storeLat) {
|
||||
this.storeLat = storeLat;
|
||||
}
|
||||
|
||||
public Long getChkCount() {
|
||||
return chkCount;
|
||||
}
|
||||
|
||||
public void setChkCount(Long chkCount) {
|
||||
this.chkCount = chkCount;
|
||||
}
|
||||
|
||||
public BigDecimal getStarAvg() {
|
||||
return starAvg;
|
||||
}
|
||||
|
||||
public void setStarAvg(BigDecimal starAvg) {
|
||||
this.starAvg = starAvg;
|
||||
}
|
||||
|
||||
public Date getModTime() {
|
||||
return modTime;
|
||||
}
|
||||
|
||||
public void setModTime(Date modTime) {
|
||||
this.modTime = modTime;
|
||||
}
|
||||
|
||||
public List<SegchkRecommenderStoreLableWeb> getSegchkRecommenderStoreLableWebList() {
|
||||
return segchkRecommenderStoreLableWebList;
|
||||
}
|
||||
|
||||
public void setSegchkRecommenderStoreLableWebList(List<SegchkRecommenderStoreLableWeb> segchkRecommenderStoreLableWebList) {
|
||||
this.segchkRecommenderStoreLableWebList = segchkRecommenderStoreLableWebList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "SegchkUserCollectWebResp{" +
|
||||
"collectId=" + collectId +
|
||||
", providerId=" + providerId +
|
||||
", storeId=" + storeId +
|
||||
", storeName='" + storeName + '\'' +
|
||||
", storeIcon='" + storeIcon + '\'' +
|
||||
", serviceState=" + serviceState +
|
||||
", storeLon=" + storeLon +
|
||||
", storeLat=" + storeLat +
|
||||
", chkCount=" + chkCount +
|
||||
", starAvg=" + starAvg +
|
||||
", modTime=" + modTime +
|
||||
", segchkRecommenderStoreLableWebList=" + segchkRecommenderStoreLableWebList +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
|
|
@ -1,237 +0,0 @@
|
|||
package com.ruoyi.segchk.domain;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.ruoyi.common.annotation.Excel;
|
||||
import com.ruoyi.common.core.domain.BaseEntity;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* seg会员卡对象 segchk_user_vip
|
||||
*
|
||||
* @author yinzhiying
|
||||
* @date 2021-07-01
|
||||
*/
|
||||
public class SegchkUserLikeGoWebResp extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 想去id */
|
||||
@Excel(name = "想去id")
|
||||
private Long likegoId;
|
||||
|
||||
/** 运营商id,全局唯一 */
|
||||
@Excel(name = "运营商id,全局唯一")
|
||||
private Long providerId;
|
||||
|
||||
/** 商家id */
|
||||
@Excel(name = "商家id,全局惟一")
|
||||
private Long storeId;
|
||||
|
||||
/** 会员卡id */
|
||||
@Excel(name = "会员卡id,充值卡或自定义卡")
|
||||
private Long cardId;
|
||||
|
||||
/** 用户id */
|
||||
@Excel(name = "用户id,全局惟一")
|
||||
private Long userId;
|
||||
|
||||
/** 商家名称 */
|
||||
@Excel(name = "商家名称")
|
||||
private String storeName;
|
||||
|
||||
/** 卡名称 */
|
||||
@Excel(name = "卡名称")
|
||||
private String cardName;
|
||||
|
||||
/** 二维码 */
|
||||
@Excel(name = "二维码")
|
||||
private String qrCode;
|
||||
|
||||
/** 商家小图标 */
|
||||
@Excel(name = "商家小图标")
|
||||
private String storeIcon;
|
||||
|
||||
/** 商家服务状态,是否在线 */
|
||||
@Excel(name = "商家服务状态")
|
||||
private Long serviceState;
|
||||
|
||||
/** 商家经度 */
|
||||
@Excel(name = "商家经度")
|
||||
private BigDecimal storeLon;
|
||||
|
||||
/** 商家纬度 */
|
||||
@Excel(name = "商家纬度")
|
||||
private BigDecimal storeLat;
|
||||
|
||||
/** 商家累积核次数 */
|
||||
@Excel(name = "商家累积核次数")
|
||||
private Long chkCount;
|
||||
|
||||
/** 用户id,全局唯一 */
|
||||
@Excel(name = "用户id,全局唯一")
|
||||
private BigDecimal starAvg;
|
||||
|
||||
|
||||
/** 预约时间 */
|
||||
@JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss")
|
||||
@Excel(name = "预约时间", width = 30, dateFormat = "yyyy-MM-dd hh:mm:ss")
|
||||
private Date modTime;
|
||||
|
||||
/** 商户标签列表 */
|
||||
@Valid
|
||||
private List<SegchkRecommenderStoreLableWeb> segchkRecommenderStoreLableWebList;
|
||||
|
||||
public Long getLikegoId() {
|
||||
return likegoId;
|
||||
}
|
||||
|
||||
public void setLikegoId(Long likegoId) {
|
||||
this.likegoId = likegoId;
|
||||
}
|
||||
|
||||
public Long getProviderId() {
|
||||
return providerId;
|
||||
}
|
||||
|
||||
public void setProviderId(Long providerId) {
|
||||
this.providerId = providerId;
|
||||
}
|
||||
|
||||
public Long getStoreId() {
|
||||
return storeId;
|
||||
}
|
||||
|
||||
public void setStoreId(Long storeId) {
|
||||
this.storeId = storeId;
|
||||
}
|
||||
|
||||
public Long getCardId() {
|
||||
return cardId;
|
||||
}
|
||||
|
||||
public void setCardId(Long cardId) {
|
||||
this.cardId = cardId;
|
||||
}
|
||||
|
||||
public Long getUserId() {
|
||||
return userId;
|
||||
}
|
||||
|
||||
public void setUserId(Long userId) {
|
||||
this.userId = userId;
|
||||
}
|
||||
|
||||
public String getStoreName() {
|
||||
return storeName;
|
||||
}
|
||||
|
||||
public void setStoreName(String storeName) {
|
||||
this.storeName = storeName;
|
||||
}
|
||||
|
||||
public String getCardName() {
|
||||
return cardName;
|
||||
}
|
||||
|
||||
public void setCardName(String cardName) {
|
||||
this.cardName = cardName;
|
||||
}
|
||||
|
||||
public String getQrCode() {
|
||||
return qrCode;
|
||||
}
|
||||
|
||||
public void setQrCode(String qrCode) {
|
||||
this.qrCode = qrCode;
|
||||
}
|
||||
|
||||
public String getStoreIcon() {
|
||||
return storeIcon;
|
||||
}
|
||||
|
||||
public void setStoreIcon(String storeIcon) {
|
||||
this.storeIcon = storeIcon;
|
||||
}
|
||||
|
||||
public Long getServiceState() {
|
||||
return serviceState;
|
||||
}
|
||||
|
||||
public void setServiceState(Long serviceState) {
|
||||
this.serviceState = serviceState;
|
||||
}
|
||||
|
||||
public BigDecimal getStoreLon() {
|
||||
return storeLon;
|
||||
}
|
||||
|
||||
public void setStoreLon(BigDecimal storeLon) {
|
||||
this.storeLon = storeLon;
|
||||
}
|
||||
|
||||
public BigDecimal getStoreLat() {
|
||||
return storeLat;
|
||||
}
|
||||
|
||||
public void setStoreLat(BigDecimal storeLat) {
|
||||
this.storeLat = storeLat;
|
||||
}
|
||||
|
||||
public Long getChkCount() {
|
||||
return chkCount;
|
||||
}
|
||||
|
||||
public void setChkCount(Long chkCount) {
|
||||
this.chkCount = chkCount;
|
||||
}
|
||||
|
||||
public BigDecimal getStarAvg() {
|
||||
return starAvg;
|
||||
}
|
||||
|
||||
public void setStarAvg(BigDecimal starAvg) {
|
||||
this.starAvg = starAvg;
|
||||
}
|
||||
|
||||
public Date getModTime() {
|
||||
return modTime;
|
||||
}
|
||||
|
||||
public void setModTime(Date modTime) {
|
||||
this.modTime = modTime;
|
||||
}
|
||||
|
||||
public List<SegchkRecommenderStoreLableWeb> getSegchkRecommenderStoreLableWebList() {
|
||||
return segchkRecommenderStoreLableWebList;
|
||||
}
|
||||
|
||||
public void setSegchkRecommenderStoreLableWebList(List<SegchkRecommenderStoreLableWeb> segchkRecommenderStoreLableWebList) {
|
||||
this.segchkRecommenderStoreLableWebList = segchkRecommenderStoreLableWebList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "SegchkUserLikeGoWebResp{" +
|
||||
"likegoId=" + likegoId +
|
||||
", providerId=" + providerId +
|
||||
", storeId=" + storeId +
|
||||
", cardId=" + cardId +
|
||||
", userId=" + userId +
|
||||
", storeName='" + storeName + '\'' +
|
||||
", cardName='" + cardName + '\'' +
|
||||
", qrCode='" + qrCode + '\'' +
|
||||
", storeIcon='" + storeIcon + '\'' +
|
||||
", serviceState=" + serviceState +
|
||||
", storeLon=" + storeLon +
|
||||
", storeLat=" + storeLat +
|
||||
", chkCount=" + chkCount +
|
||||
", starAvg=" + starAvg +
|
||||
", modTime=" + modTime +
|
||||
", segchkRecommenderStoreLableWebList=" + segchkRecommenderStoreLableWebList +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
|
|
@ -41,6 +41,10 @@ public class SegchkUserLikego extends BaseEntity
|
|||
@Excel(name = "卡类型id,0充值卡,1商家赠卡,2优惠券卡")
|
||||
private Integer cardType;
|
||||
|
||||
/** 子标签id, cardType为1时为0无效,其他有效 */
|
||||
@Excel(name = "子标签id")
|
||||
private Integer lableId;
|
||||
|
||||
/** 预约二维码 */
|
||||
@Excel(name = "预约二维码")
|
||||
private String qrCode;
|
||||
|
|
@ -54,6 +58,10 @@ public class SegchkUserLikego extends BaseEntity
|
|||
@Excel(name = "管理状态,0有效,1失效,2已使用")
|
||||
private Integer mgtState;
|
||||
|
||||
/** 赠卡标识,0否,1可,2已赠,只有在mgtState为2时有效 */
|
||||
@Excel(name = "赠卡标识")
|
||||
private Integer canGiveSelf;
|
||||
|
||||
public void setLikegoId(Long likegoId)
|
||||
{
|
||||
this.likegoId = likegoId;
|
||||
|
|
@ -148,6 +156,23 @@ public class SegchkUserLikego extends BaseEntity
|
|||
.append("qrCode", getQrCode())
|
||||
.append("modTime", getModTime())
|
||||
.append("mgtState", getMgtState())
|
||||
.append("canGiveSelf", getCanGiveSelf())
|
||||
.toString();
|
||||
}
|
||||
|
||||
public Integer getLableId() {
|
||||
return lableId;
|
||||
}
|
||||
|
||||
public void setLableId(Integer lableId) {
|
||||
this.lableId = lableId;
|
||||
}
|
||||
|
||||
public Integer getCanGiveSelf() {
|
||||
return canGiveSelf;
|
||||
}
|
||||
|
||||
public void setCanGiveSelf(Integer canGiveSelf) {
|
||||
this.canGiveSelf = canGiveSelf;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,104 +0,0 @@
|
|||
package com.ruoyi.segchk.domain;
|
||||
|
||||
import com.ruoyi.common.annotation.Excel;
|
||||
import com.ruoyi.common.core.domain.BaseEntity;
|
||||
|
||||
/**
|
||||
* seg用户修改信息对象 SegchkUserSetInfoReq
|
||||
*
|
||||
* @author yinzhiying
|
||||
* @date 2021-07-01
|
||||
*/
|
||||
public class SegchkUserSetInfoReq extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 用户id,全局唯一 */
|
||||
@Excel(name = "用户id,全局唯一")
|
||||
private Long userId;
|
||||
|
||||
/** 密码 */
|
||||
@Excel(name = "密码")
|
||||
private String passwd;
|
||||
|
||||
/** 密码id,全表唯一 */
|
||||
@Excel(name = "密码id,全表唯一")
|
||||
private Long pwdId;
|
||||
|
||||
/** 运营商id,全局唯一 */
|
||||
@Excel(name = "运营商id,全局唯一")
|
||||
private Long providerId;
|
||||
|
||||
/** 用户手机号 */
|
||||
@Excel(name = "用户手机号")
|
||||
private String phoneNo;
|
||||
|
||||
/** 用户等级 */
|
||||
@Excel(name = "用户等级")
|
||||
private Integer userLevel;
|
||||
|
||||
public void setUserId(Long userId)
|
||||
{
|
||||
this.userId = userId;
|
||||
}
|
||||
|
||||
public Long getUserId()
|
||||
{
|
||||
return userId;
|
||||
}
|
||||
public void setPasswd(String passwd)
|
||||
{
|
||||
this.passwd = passwd;
|
||||
}
|
||||
|
||||
public void setPwdId(Long pwdId)
|
||||
{
|
||||
this.pwdId = pwdId;
|
||||
}
|
||||
|
||||
public Long getPwdId()
|
||||
{
|
||||
return pwdId;
|
||||
}
|
||||
public void setProviderId(Long providerId)
|
||||
{
|
||||
this.providerId = providerId;
|
||||
}
|
||||
|
||||
public Long getProviderId()
|
||||
{
|
||||
return providerId;
|
||||
}
|
||||
|
||||
public String getPasswd() {
|
||||
return passwd;
|
||||
}
|
||||
|
||||
public String getPhoneNo() {
|
||||
return phoneNo;
|
||||
}
|
||||
|
||||
public void setPhoneNo(String phoneNo) {
|
||||
this.phoneNo = phoneNo;
|
||||
}
|
||||
|
||||
public Integer getUserLevel() {
|
||||
return userLevel;
|
||||
}
|
||||
|
||||
public void setUserLevel(Integer userLevel) {
|
||||
this.userLevel = userLevel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "SegchkUserSetInfoReq{" +
|
||||
"userId=" + userId +
|
||||
", passwd='" + passwd + '\'' +
|
||||
", pwdId=" + pwdId +
|
||||
", providerId=" + providerId +
|
||||
", phoneNo='" + phoneNo + '\'' +
|
||||
", userLevel=" + userLevel +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
package com.ruoyi.segchk.domain;
|
||||
|
||||
import com.ruoyi.common.core.domain.BaseEntity;
|
||||
|
||||
public class SimpleListObj extends BaseEntity {
|
||||
private String providerId;
|
||||
private String key;
|
||||
private String value;
|
||||
private String imgUrl;
|
||||
|
||||
public String getProviderId() {
|
||||
return providerId;
|
||||
}
|
||||
|
||||
public void setProviderId(String providerId) {
|
||||
this.providerId = providerId;
|
||||
}
|
||||
|
||||
public String getKey() {
|
||||
return key;
|
||||
}
|
||||
|
||||
public void setKey(String key) {
|
||||
this.key = key;
|
||||
}
|
||||
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public void setValue(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public String getImgUrl() {
|
||||
return imgUrl;
|
||||
}
|
||||
|
||||
public void setImgUrl(String imgUrl) {
|
||||
this.imgUrl = imgUrl;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "SimpleListObj{" +
|
||||
"providerId='" + providerId + '\'' +
|
||||
", key='" + key + '\'' +
|
||||
", value='" + value + '\'' +
|
||||
", imgUrl='" + imgUrl + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1,9 +1,6 @@
|
|||
package com.ruoyi.segchk.mapper;
|
||||
|
||||
import com.ruoyi.segchk.domain.SegchkChargeRet;
|
||||
import com.ruoyi.segchk.domain.SegchkUserVip;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* seg会员卡Mapper接口
|
||||
|
|
|
|||
|
|
@ -0,0 +1,63 @@
|
|||
package com.ruoyi.segchk.mapper;
|
||||
|
||||
import java.util.List;
|
||||
import com.ruoyi.segchk.domain.SegchkProviderCntCtrl;
|
||||
|
||||
/**
|
||||
* seg运营商流量管控Mapper接口
|
||||
*
|
||||
* @author yinzhiying
|
||||
* @date 2022-06-26
|
||||
*/
|
||||
public interface SegchkProviderCntCtrlMapper
|
||||
{
|
||||
/**
|
||||
* 查询seg运营商流量管控
|
||||
*
|
||||
* @param cntId seg运营商流量管控主键
|
||||
* @return seg运营商流量管控
|
||||
*/
|
||||
public SegchkProviderCntCtrl selectSegchkProviderCntCtrlByCntId(Long cntId);
|
||||
|
||||
/**
|
||||
* 查询seg运营商流量管控列表
|
||||
*
|
||||
* @param segchkProviderCntCtrl seg运营商流量管控
|
||||
* @return seg运营商流量管控集合
|
||||
*/
|
||||
public List<SegchkProviderCntCtrl> selectSegchkProviderCntCtrlList(SegchkProviderCntCtrl segchkProviderCntCtrl);
|
||||
|
||||
/**
|
||||
* 新增seg运营商流量管控
|
||||
*
|
||||
* @param segchkProviderCntCtrl seg运营商流量管控
|
||||
* @return 结果
|
||||
*/
|
||||
public int insertSegchkProviderCntCtrl(SegchkProviderCntCtrl segchkProviderCntCtrl);
|
||||
|
||||
/**
|
||||
* 修改seg运营商流量管控
|
||||
*
|
||||
* @param segchkProviderCntCtrl seg运营商流量管控
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateSegchkProviderCntCtrl(SegchkProviderCntCtrl segchkProviderCntCtrl);
|
||||
|
||||
/**
|
||||
* 删除seg运营商流量管控
|
||||
*
|
||||
* @param cntId seg运营商流量管控主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteSegchkProviderCntCtrlByCntId(Long cntId);
|
||||
|
||||
/**
|
||||
* 批量删除seg运营商流量管控
|
||||
*
|
||||
* @param cntIds 需要删除的数据主键集合
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteSegchkProviderCntCtrlByCntIds(Long[] cntIds);
|
||||
|
||||
SegchkProviderCntCtrl selectSegchkProviderCntCtrlByProviderId(Long providerId);
|
||||
}
|
||||
|
|
@ -1,8 +1,6 @@
|
|||
package com.ruoyi.segchk.mapper;
|
||||
|
||||
import com.ruoyi.segchk.domain.SegchkRecommenderStore;
|
||||
import com.ruoyi.segchk.domain.SegchkRecommenderStoreWebReq;
|
||||
import com.ruoyi.segchk.domain.SegchkRecommenderStoreWebResp;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
|
|
|||
|
|
@ -157,12 +157,19 @@ public interface SegchkStoreBasicInfoMapper
|
|||
/**
|
||||
* 修改seg商家服务状态
|
||||
*
|
||||
* @param segchkStoreBasicInfo seg商家基础信息
|
||||
* @param segchkStoreStatus seg商家基础信息
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateSegchkStoreServiceStatus(SegchkStoreBasicInfo segchkStoreBasicInfo);
|
||||
public int updateSegchkStoreServiceStatus(SegchkStoreStatus segchkStoreStatus);
|
||||
|
||||
public Long selectStoreIdByPhone(String phone);
|
||||
|
||||
int updateSegchkStoreDetail(SegchkStoreBasicInfo segchkStoreBasicInfo);
|
||||
|
||||
int updateSegchkStoreVr(SegchkStoreVrInfo segchkStoreVrInfo);
|
||||
int addSegchkStoreVr(SegchkStoreVrInfo segchkStoreVrInfo);
|
||||
|
||||
int deleteSegchkStoreVr(SegchkStoreVrInfo segchkStoreVrInfo);
|
||||
|
||||
List<SimpleListObj> selectSegchkStoreSimpleList(Long providerId);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,87 @@
|
|||
package com.ruoyi.segchk.mapper;
|
||||
|
||||
import java.util.List;
|
||||
import com.ruoyi.segchk.domain.SegchkStoreCntCtrl;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
/**
|
||||
* seg商家流量管控Mapper接口
|
||||
*
|
||||
* @author yinzhiying
|
||||
* @date 2022-06-26
|
||||
*/
|
||||
public interface SegchkStoreCntCtrlMapper
|
||||
{
|
||||
/**
|
||||
* 查询seg商家流量管控
|
||||
*
|
||||
* @param cntId seg商家流量管控主键
|
||||
* @return seg商家流量管控
|
||||
*/
|
||||
public SegchkStoreCntCtrl selectSegchkStoreCntCtrlByCntId(Long cntId);
|
||||
|
||||
/**
|
||||
* 查询seg商家流量管控列表
|
||||
*
|
||||
* @param segchkStoreCntCtrl seg商家流量管控
|
||||
* @return seg商家流量管控集合
|
||||
*/
|
||||
public List<SegchkStoreCntCtrl> selectSegchkStoreCntCtrlList(SegchkStoreCntCtrl segchkStoreCntCtrl);
|
||||
|
||||
/**
|
||||
* 新增seg商家流量管控
|
||||
*
|
||||
* @param segchkStoreCntCtrl seg商家流量管控
|
||||
* @return 结果
|
||||
*/
|
||||
public int insertSegchkStoreCntCtrl(SegchkStoreCntCtrl segchkStoreCntCtrl);
|
||||
|
||||
/**
|
||||
* 修改seg商家流量管控
|
||||
*
|
||||
* @param segchkStoreCntCtrl seg商家流量管控
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateSegchkStoreCntCtrl(SegchkStoreCntCtrl segchkStoreCntCtrl);
|
||||
|
||||
/**
|
||||
* 删除seg商家流量管控
|
||||
*
|
||||
* @param cntId seg商家流量管控主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteSegchkStoreCntCtrlByCntId(Long cntId);
|
||||
|
||||
/**
|
||||
* 批量删除seg商家流量管控
|
||||
*
|
||||
* @param cntIds 需要删除的数据主键集合
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteSegchkStoreCntCtrlByCntIds(Long[] cntIds);
|
||||
|
||||
/**
|
||||
* 将商家流量统计刷新进数据库
|
||||
*
|
||||
* @param segchkStoreCntCtrlList 待增加的对象
|
||||
* @return 新增的数量
|
||||
*/
|
||||
int addWechatCntBatch(List<SegchkStoreCntCtrl> segchkStoreCntCtrlList);
|
||||
|
||||
/**
|
||||
* 查询有流量的商家最近一次流量计数
|
||||
*
|
||||
* @return 商家流量计数
|
||||
*/
|
||||
List<SegchkStoreCntCtrl> selectSegchkStoreCntCtrlListByRecent();
|
||||
|
||||
/**
|
||||
* 反转状态
|
||||
*
|
||||
* @param cntIds id list
|
||||
* @return 计数
|
||||
*/
|
||||
int invalidateByOutId(List<Long> cntIds);
|
||||
|
||||
int invalidateByStore(@Param("cntId") Long cntId, @Param("storeId") Long storeId);
|
||||
}
|
||||
|
|
@ -0,0 +1,69 @@
|
|||
package com.ruoyi.segchk.service;
|
||||
|
||||
import java.util.List;
|
||||
import com.ruoyi.segchk.domain.SegchkProviderCntCtrl;
|
||||
|
||||
/**
|
||||
* seg运营商流量管控Service接口
|
||||
*
|
||||
* @author yinzhiying
|
||||
* @date 2022-06-26
|
||||
*/
|
||||
public interface ISegchkProviderCntCtrlService
|
||||
{
|
||||
/**
|
||||
* 查询seg运营商流量管控
|
||||
*
|
||||
* @param cntId seg运营商流量管控主键
|
||||
* @return seg运营商流量管控
|
||||
*/
|
||||
public SegchkProviderCntCtrl selectSegchkProviderCntCtrlByCntId(Long cntId);
|
||||
|
||||
/**
|
||||
* 查询seg运营商流量管控列表
|
||||
*
|
||||
* @param segchkProviderCntCtrl seg运营商流量管控
|
||||
* @return seg运营商流量管控集合
|
||||
*/
|
||||
public List<SegchkProviderCntCtrl> selectSegchkProviderCntCtrlList(SegchkProviderCntCtrl segchkProviderCntCtrl);
|
||||
|
||||
/**
|
||||
* 新增seg运营商流量管控
|
||||
*
|
||||
* @param segchkProviderCntCtrl seg运营商流量管控
|
||||
* @return 结果
|
||||
*/
|
||||
public int insertSegchkProviderCntCtrl(SegchkProviderCntCtrl segchkProviderCntCtrl);
|
||||
|
||||
/**
|
||||
* 修改seg运营商流量管控
|
||||
*
|
||||
* @param segchkProviderCntCtrl seg运营商流量管控
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateSegchkProviderCntCtrl(SegchkProviderCntCtrl segchkProviderCntCtrl);
|
||||
|
||||
/**
|
||||
* 批量删除seg运营商流量管控
|
||||
*
|
||||
* @param cntIds 需要删除的seg运营商流量管控主键集合
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteSegchkProviderCntCtrlByCntIds(Long[] cntIds);
|
||||
|
||||
/**
|
||||
* 删除seg运营商流量管控信息
|
||||
*
|
||||
* @param cntId seg运营商流量管控主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteSegchkProviderCntCtrlByCntId(Long cntId);
|
||||
|
||||
/**
|
||||
* 根据运营商id查询运营商流量控制信息
|
||||
*
|
||||
* @param providerId seg运营商id
|
||||
* @return 结果
|
||||
*/
|
||||
SegchkProviderCntCtrl selectSegchkProviderCntCtrlByProviderId(Long providerId);
|
||||
}
|
||||
|
|
@ -12,6 +12,8 @@ import com.ruoyi.segchk.domain.SegchkProviderMgt;
|
|||
*/
|
||||
public interface ISegchkProviderMgtService
|
||||
{
|
||||
void loadAllProviderInfo();
|
||||
|
||||
/**
|
||||
* 查询seg运营商管理
|
||||
*
|
||||
|
|
|
|||
|
|
@ -1,8 +1,6 @@
|
|||
package com.ruoyi.segchk.service;
|
||||
|
||||
import com.ruoyi.segchk.domain.SegchkRecommenderStore;
|
||||
import com.ruoyi.segchk.domain.SegchkRecommenderStoreWebReq;
|
||||
import com.ruoyi.segchk.domain.SegchkRecommenderStoreWebResp;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
package com.ruoyi.segchk.service;
|
||||
|
||||
import java.util.List;
|
||||
import com.ruoyi.segchk.domain.SegchkStoreBasicInfo;
|
||||
|
||||
import com.ruoyi.segchk.domain.*;
|
||||
|
||||
/**
|
||||
* seg商家基础信息Service接口
|
||||
|
|
@ -27,6 +28,8 @@ public interface ISegchkStoreBasicInfoService
|
|||
*/
|
||||
public List<SegchkStoreBasicInfo> selectSegchkStoreBasicInfoList(SegchkStoreBasicInfo segchkStoreBasicInfo);
|
||||
|
||||
List<SegchkStoreBasicInfo> selectSegchkStoreBasicInfoListWithCnt(SegchkStoreBasicInfo segchkStoreBasicInfo);
|
||||
|
||||
/**
|
||||
* 新增seg商家基础信息
|
||||
*
|
||||
|
|
@ -67,7 +70,56 @@ public interface ISegchkStoreBasicInfoService
|
|||
*/
|
||||
public int updateSegchkStoreServiceStatus(SegchkStoreBasicInfo segchkStoreBasicInfo);
|
||||
|
||||
/**
|
||||
* 修改seg商家状态
|
||||
*
|
||||
* @param segchkStoreStatus seg商家状态
|
||||
* @return 结果
|
||||
*/
|
||||
int updateSegchkStoreStatus(SegchkStoreStatus segchkStoreStatus);
|
||||
|
||||
int updateSegchkStoreDetail(SegchkStoreBasicInfo segchkStoreBasicInfo);
|
||||
|
||||
// int addSegchkStoreVR();
|
||||
/**
|
||||
* 修改seg商家VR路径
|
||||
*
|
||||
* @param segchkStoreVrInfo seg商家基础信息(只包含商家id,运营商id,vr路径)
|
||||
* @return 结果
|
||||
*/
|
||||
int updateSegchkStoreVr(SegchkStoreVrInfo segchkStoreVrInfo);
|
||||
int addSegchkStoreVr(SegchkStoreVrInfo segchkStoreVrInfo);
|
||||
|
||||
int deleteSegchkStoreVr(SegchkStoreVrInfo segchkStoreVrInfo);
|
||||
|
||||
/**
|
||||
* 查找运营商下所有有效商家列表
|
||||
*
|
||||
* @param providerId 运营商id
|
||||
* @return 结果
|
||||
*/
|
||||
List<SimpleListObj> selectSegchkStoreSimpleList(Long providerId);
|
||||
|
||||
/**
|
||||
* 根据商家信息,修改指定商家的流量值
|
||||
*
|
||||
* @param segchkStoreCntCtrl 商家流量信息
|
||||
* @return 结果
|
||||
*/
|
||||
int updateSegchkStoreCnt(SegchkStoreCntCtrl segchkStoreCntCtrl);
|
||||
|
||||
/**
|
||||
* 根据商家信息,修改指定商家的缓存流量值
|
||||
*
|
||||
* @param segchkStoreCntCtrl 商家流量信息
|
||||
* @return 结果
|
||||
*/
|
||||
int updateSegchkStoreCnt2Redis(SegchkStoreCntCtrl segchkStoreCntCtrl);
|
||||
|
||||
/**
|
||||
* 将所有商家流量统计刷新进数据库
|
||||
*
|
||||
* @param segchkStoreCntCtrlList 待增加的对象
|
||||
* @return 新增的数量
|
||||
*/
|
||||
// int addWechatCntBatch(List<SegchkStoreCntCtrl> segchkStoreCntCtrlList);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,103 @@
|
|||
package com.ruoyi.segchk.service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.ruoyi.segchk.domain.SegchkStoreCntCtrl;
|
||||
import javafx.util.Pair;
|
||||
|
||||
/**
|
||||
* seg商家流量管控Service接口
|
||||
*
|
||||
* @author yinzhiying
|
||||
* @date 2022-06-26
|
||||
*/
|
||||
public interface ISegchkStoreCntCtrlService
|
||||
{
|
||||
/**
|
||||
* 查询seg商家流量管控
|
||||
*
|
||||
* @param cntId seg商家流量管控主键
|
||||
* @return seg商家流量管控
|
||||
*/
|
||||
public SegchkStoreCntCtrl selectSegchkStoreCntCtrlByCntId(Long cntId);
|
||||
|
||||
/**
|
||||
* 查询seg商家流量管控列表
|
||||
*
|
||||
* @param segchkStoreCntCtrl seg商家流量管控
|
||||
* @return seg商家流量管控集合
|
||||
*/
|
||||
public List<SegchkStoreCntCtrl> selectSegchkStoreCntCtrlList(SegchkStoreCntCtrl segchkStoreCntCtrl);
|
||||
|
||||
/**
|
||||
* 新增seg商家流量管控
|
||||
*
|
||||
* @param segchkStoreCntCtrl seg商家流量管控
|
||||
* @return 结果
|
||||
*/
|
||||
public int insertSegchkStoreCntCtrl(SegchkStoreCntCtrl segchkStoreCntCtrl);
|
||||
|
||||
/**
|
||||
* 修改seg商家流量管控
|
||||
*
|
||||
* @param segchkStoreCntCtrl seg商家流量管控
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateSegchkStoreCntCtrl(SegchkStoreCntCtrl segchkStoreCntCtrl);
|
||||
|
||||
/**
|
||||
* 批量删除seg商家流量管控
|
||||
*
|
||||
* @param cntIds 需要删除的seg商家流量管控主键集合
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteSegchkStoreCntCtrlByCntIds(Long[] cntIds);
|
||||
|
||||
/**
|
||||
* 删除seg商家流量管控信息
|
||||
*
|
||||
* @param cntId seg商家流量管控主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteSegchkStoreCntCtrlByCntId(Long cntId);
|
||||
|
||||
/**
|
||||
* 将商家流量统计刷新进数据库
|
||||
*
|
||||
* @param segchkStoreCntCtrlList 待增加的对象
|
||||
* @return 新增的数量
|
||||
*/
|
||||
Pair<Integer, Object> addWechatCntBatch(List<SegchkStoreCntCtrl> segchkStoreCntCtrlList);
|
||||
|
||||
/**
|
||||
* 查询有流量的商家最近一次流量计数
|
||||
*
|
||||
* @return 商家流量计数
|
||||
*/
|
||||
List<SegchkStoreCntCtrl> selectSegchkStoreCntCtrlListByRecent();
|
||||
|
||||
/**
|
||||
* 根据id,将非id列表中的所有记录无效
|
||||
*
|
||||
* @param cntIds id list
|
||||
* @return 计数
|
||||
*/
|
||||
int invalidateByOutId(List<Long> cntIds);
|
||||
|
||||
/**
|
||||
* 针对 商家,将其非本id的所有记录无效
|
||||
*
|
||||
* @param entryList store list
|
||||
* @return 计数
|
||||
*/
|
||||
int invalidateByStore(Map<Long, Long> entryList);
|
||||
|
||||
/**
|
||||
* 将redis中的商家流量缓存进数据库
|
||||
*
|
||||
* @param segchkStoreCntCtrlList 商家流量信息
|
||||
* @return 计数
|
||||
*/
|
||||
// int flushCount2DB(List<SegchkStoreCntCtrl> segchkStoreCntCtrlList);
|
||||
}
|
||||
|
|
@ -0,0 +1,104 @@
|
|||
package com.ruoyi.segchk.service.impl;
|
||||
|
||||
import java.util.List;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.ruoyi.segchk.mapper.SegchkProviderCntCtrlMapper;
|
||||
import com.ruoyi.segchk.domain.SegchkProviderCntCtrl;
|
||||
import com.ruoyi.segchk.service.ISegchkProviderCntCtrlService;
|
||||
|
||||
/**
|
||||
* seg运营商流量管控Service业务层处理
|
||||
*
|
||||
* @author yinzhiying
|
||||
* @date 2022-06-26
|
||||
*/
|
||||
@Service
|
||||
public class SegchkProviderCntCtrlServiceImpl implements ISegchkProviderCntCtrlService
|
||||
{
|
||||
@Autowired
|
||||
private SegchkProviderCntCtrlMapper segchkProviderCntCtrlMapper;
|
||||
|
||||
/**
|
||||
* 查询seg运营商流量管控
|
||||
*
|
||||
* @param cntId seg运营商流量管控主键
|
||||
* @return seg运营商流量管控
|
||||
*/
|
||||
@Override
|
||||
public SegchkProviderCntCtrl selectSegchkProviderCntCtrlByCntId(Long cntId)
|
||||
{
|
||||
return segchkProviderCntCtrlMapper.selectSegchkProviderCntCtrlByCntId(cntId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询seg运营商流量管控列表
|
||||
*
|
||||
* @param segchkProviderCntCtrl seg运营商流量管控
|
||||
* @return seg运营商流量管控
|
||||
*/
|
||||
@Override
|
||||
public List<SegchkProviderCntCtrl> selectSegchkProviderCntCtrlList(SegchkProviderCntCtrl segchkProviderCntCtrl)
|
||||
{
|
||||
return segchkProviderCntCtrlMapper.selectSegchkProviderCntCtrlList(segchkProviderCntCtrl);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增seg运营商流量管控
|
||||
*
|
||||
* @param segchkProviderCntCtrl seg运营商流量管控
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int insertSegchkProviderCntCtrl(SegchkProviderCntCtrl segchkProviderCntCtrl)
|
||||
{
|
||||
return segchkProviderCntCtrlMapper.insertSegchkProviderCntCtrl(segchkProviderCntCtrl);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改seg运营商流量管控
|
||||
*
|
||||
* @param segchkProviderCntCtrl seg运营商流量管控
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int updateSegchkProviderCntCtrl(SegchkProviderCntCtrl segchkProviderCntCtrl)
|
||||
{
|
||||
return segchkProviderCntCtrlMapper.updateSegchkProviderCntCtrl(segchkProviderCntCtrl);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除seg运营商流量管控
|
||||
*
|
||||
* @param cntIds 需要删除的seg运营商流量管控主键
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int deleteSegchkProviderCntCtrlByCntIds(Long[] cntIds)
|
||||
{
|
||||
return segchkProviderCntCtrlMapper.deleteSegchkProviderCntCtrlByCntIds(cntIds);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除seg运营商流量管控信息
|
||||
*
|
||||
* @param cntId seg运营商流量管控主键
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int deleteSegchkProviderCntCtrlByCntId(Long cntId)
|
||||
{
|
||||
return segchkProviderCntCtrlMapper.deleteSegchkProviderCntCtrlByCntId(cntId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据运营商id查询运营商流量控制信息
|
||||
*
|
||||
* @param providerId seg运营商id
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public SegchkProviderCntCtrl selectSegchkProviderCntCtrlByProviderId(Long providerId) {
|
||||
return segchkProviderCntCtrlMapper.selectSegchkProviderCntCtrlByProviderId(providerId);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,17 +1,29 @@
|
|||
package com.ruoyi.segchk.service.impl;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import com.ruoyi.common.core.redis.RedisCache;
|
||||
import com.ruoyi.common.utils.DateUtils;
|
||||
import com.ruoyi.common.utils.RedisCahceKey;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.cache.annotation.CacheEvict;
|
||||
import org.springframework.stereotype.Service;
|
||||
import java.util.ArrayList;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import com.ruoyi.common.utils.StringUtils;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import com.ruoyi.segchk.domain.SegchkLableMgt;
|
||||
import com.ruoyi.segchk.mapper.SegchkProviderMgtMapper;
|
||||
import com.ruoyi.segchk.domain.SegchkProviderMgt;
|
||||
import com.ruoyi.segchk.service.ISegchkProviderMgtService;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
|
||||
/**
|
||||
* seg运营商管理Service业务层处理
|
||||
|
|
@ -22,9 +34,26 @@ import com.ruoyi.segchk.service.ISegchkProviderMgtService;
|
|||
@Service
|
||||
public class SegchkProviderMgtServiceImpl implements ISegchkProviderMgtService
|
||||
{
|
||||
private static final Logger logger = LoggerFactory.getLogger(SegchkProviderMgtServiceImpl.class);
|
||||
|
||||
@Autowired
|
||||
private SegchkProviderMgtMapper segchkProviderMgtMapper;
|
||||
|
||||
@Autowired
|
||||
private RedisCache redisService;
|
||||
|
||||
@PostConstruct
|
||||
public void init(){
|
||||
loadAllProviderInfo();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadAllProviderInfo() {
|
||||
SegchkProviderMgt segchkProviderMgt = new SegchkProviderMgt();
|
||||
List<SegchkProviderMgt> segchkProviderMgts = selectSegchkProviderMgtList(segchkProviderMgt);
|
||||
segchkProviderMgts.parallelStream().forEach(v -> redisService.setCacheObject(RedisCahceKey.PROVIDER_INFO + "::" + v.getProviderId(), v));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询seg运营商管理
|
||||
*
|
||||
|
|
@ -34,7 +63,17 @@ public class SegchkProviderMgtServiceImpl implements ISegchkProviderMgtService
|
|||
@Override
|
||||
public SegchkProviderMgt selectSegchkProviderMgtByProviderId(Long providerId)
|
||||
{
|
||||
return segchkProviderMgtMapper.selectSegchkProviderMgtByProviderId(providerId);
|
||||
logger.debug("selectSegchkProviderMgtByProviderId with {}", providerId);
|
||||
Object cacheObject = redisService.getCacheObject(RedisCahceKey.PROVIDER_INFO + "::" + providerId);
|
||||
if(!ObjectUtils.isEmpty(cacheObject)){
|
||||
return (SegchkProviderMgt)cacheObject;
|
||||
}
|
||||
SegchkProviderMgt segchkProviderMgt = segchkProviderMgtMapper.selectSegchkProviderMgtByProviderId(providerId);
|
||||
if(ObjectUtils.isEmpty(segchkProviderMgt)){
|
||||
return null;
|
||||
}
|
||||
redisService.setCacheObject(RedisCahceKey.PROVIDER_INFO + "::" + providerId, segchkProviderMgt);
|
||||
return segchkProviderMgt;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -46,7 +85,9 @@ public class SegchkProviderMgtServiceImpl implements ISegchkProviderMgtService
|
|||
@Override
|
||||
public List<SegchkProviderMgt> selectSegchkProviderMgtList(SegchkProviderMgt segchkProviderMgt)
|
||||
{
|
||||
return segchkProviderMgtMapper.selectSegchkProviderMgtList(segchkProviderMgt);
|
||||
List<SegchkProviderMgt> segchkProviderMgts = segchkProviderMgtMapper.selectSegchkProviderMgtList(segchkProviderMgt);
|
||||
segchkProviderMgts.parallelStream().forEach(v -> redisService.setCacheObject(RedisCahceKey.PROVIDER_INFO + "::" + v.getProviderId(), v));
|
||||
return segchkProviderMgts;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -60,8 +101,10 @@ public class SegchkProviderMgtServiceImpl implements ISegchkProviderMgtService
|
|||
public int insertSegchkProviderMgt(SegchkProviderMgt segchkProviderMgt)
|
||||
{
|
||||
segchkProviderMgt.setCreateTime(DateUtils.getNowDate());
|
||||
redisService.setCacheObject(RedisCahceKey.PROVIDER_INFO + "::" + segchkProviderMgt.getProviderId(), segchkProviderMgt);
|
||||
int rows = segchkProviderMgtMapper.insertSegchkProviderMgt(segchkProviderMgt);
|
||||
insertSegchkLableMgt(segchkProviderMgt);
|
||||
|
||||
return rows;
|
||||
}
|
||||
|
||||
|
|
@ -76,6 +119,7 @@ public class SegchkProviderMgtServiceImpl implements ISegchkProviderMgtService
|
|||
public int updateSegchkProviderMgt(SegchkProviderMgt segchkProviderMgt)
|
||||
{
|
||||
segchkProviderMgt.setUpdateTime(DateUtils.getNowDate());
|
||||
redisService.setCacheObject(RedisCahceKey.PROVIDER_INFO + "::" + segchkProviderMgt.getProviderId(), segchkProviderMgt);
|
||||
// segchkProviderMgtMapper.deleteSegchkLableMgtByProviderId(segchkProviderMgt.getProviderId());
|
||||
// insertSegchkLableMgt(segchkProviderMgt);
|
||||
return segchkProviderMgtMapper.updateSegchkProviderMgt(segchkProviderMgt);
|
||||
|
|
@ -91,6 +135,9 @@ public class SegchkProviderMgtServiceImpl implements ISegchkProviderMgtService
|
|||
@Override
|
||||
public int deleteSegchkProviderMgtByProviderIds(Long[] providerIds)
|
||||
{
|
||||
|
||||
redisService.deleteObject(Arrays.stream(providerIds).map(v -> RedisCahceKey.PROVIDER_INFO + "::" + v).collect(Collectors.toList()));
|
||||
// Arrays.stream(providerIds).parallel().forEach(v -> redisService.deleteObject(RedisCahceKey.PROVIDER_INFO + "::" + v));
|
||||
// segchkProviderMgtMapper.deleteSegchkLableMgtByProviderIds(providerIds);
|
||||
return segchkProviderMgtMapper.deleteSegchkProviderMgtByProviderIds(providerIds);
|
||||
}
|
||||
|
|
@ -104,6 +151,7 @@ public class SegchkProviderMgtServiceImpl implements ISegchkProviderMgtService
|
|||
@Override
|
||||
public int deleteSegchkProviderMgtByProviderId(Long providerId)
|
||||
{
|
||||
redisService.deleteObject(RedisCahceKey.PROVIDER_INFO + "::" + providerId);
|
||||
segchkProviderMgtMapper.deleteSegchkLableMgtByProviderId(providerId);
|
||||
return segchkProviderMgtMapper.deleteSegchkProviderMgtByProviderId(providerId);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,10 +2,7 @@ package com.ruoyi.segchk.service.impl;
|
|||
|
||||
import com.ruoyi.common.core.text.Convert;
|
||||
import com.ruoyi.segchk.domain.SegchkRecommenderStore;
|
||||
import com.ruoyi.segchk.domain.SegchkRecommenderStoreWebReq;
|
||||
import com.ruoyi.segchk.domain.SegchkRecommenderStoreWebResp;
|
||||
import com.ruoyi.segchk.mapper.SegchkRecommenderIndexMapper;
|
||||
import com.ruoyi.segchk.mapper.SegchkRecommenderStoreMapper;
|
||||
import com.ruoyi.segchk.service.ISegchkRecommenderIndexService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
|
|
|||
|
|
@ -2,9 +2,11 @@ package com.ruoyi.segchk.service.impl;
|
|||
|
||||
import java.util.List;
|
||||
|
||||
import com.ruoyi.common.core.redis.RedisCache;
|
||||
import com.ruoyi.common.utils.RedisCahceKey;
|
||||
import com.ruoyi.common.utils.RedisUtil;
|
||||
import com.ruoyi.segchk.domain.*;
|
||||
import com.ruoyi.segchk.service.ISegchkCarouseMgtService;
|
||||
import com.ruoyi.segchk.service.ISegchkRecommenderStoreService;
|
||||
import com.ruoyi.segchk.service.*;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
|
@ -15,7 +17,6 @@ import java.util.ArrayList;
|
|||
import com.ruoyi.common.utils.StringUtils;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import com.ruoyi.segchk.mapper.SegchkStoreBasicInfoMapper;
|
||||
import com.ruoyi.segchk.service.ISegchkStoreBasicInfoService;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
|
||||
/**
|
||||
|
|
@ -35,6 +36,18 @@ public class SegchkStoreBasicInfoServiceImpl implements ISegchkStoreBasicInfoSer
|
|||
@Autowired
|
||||
private ISegchkRecommenderStoreService segchkRecommenderStoreService;
|
||||
|
||||
@Autowired
|
||||
private ISegchkStoreCntCtrlService segchkStoreCntCtrlService;
|
||||
|
||||
@Autowired
|
||||
private ISegchkProviderCntCtrlService segchkProviderCntCtrlService;
|
||||
|
||||
@Autowired
|
||||
private RedisCache redisService;
|
||||
|
||||
@Autowired
|
||||
private RedisUtil redisUtil;
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(SegchkStoreBasicInfoServiceImpl.class);
|
||||
/**
|
||||
* 查询seg商家基础信息
|
||||
|
|
@ -58,6 +71,19 @@ public class SegchkStoreBasicInfoServiceImpl implements ISegchkStoreBasicInfoSer
|
|||
return segchkStoreBasicInfoMapper.selectSegchkStoreBasicInfoList(segchkStoreBasicInfo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SegchkStoreBasicInfo> selectSegchkStoreBasicInfoListWithCnt(SegchkStoreBasicInfo segchkStoreBasicInfo) {
|
||||
List<SegchkStoreBasicInfo> segchkStoreBasicInfos = segchkStoreBasicInfoMapper.selectSegchkStoreBasicInfoList(segchkStoreBasicInfo);
|
||||
if(ObjectUtils.isEmpty(segchkStoreBasicInfos)){
|
||||
return new ArrayList<SegchkStoreBasicInfo>();
|
||||
}
|
||||
segchkStoreBasicInfos.parallelStream().forEachOrdered(v -> v.setStoreCount(v.getProviderId()
|
||||
, segchkProviderCntCtrlService.selectSegchkProviderCntCtrlByProviderId(v.getProviderId())
|
||||
, redisUtil.hmget("wechatCount")
|
||||
, redisUtil.hmget("wechatCount1")));
|
||||
return segchkStoreBasicInfos;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增seg商家基础信息
|
||||
*
|
||||
|
|
@ -154,13 +180,37 @@ public class SegchkStoreBasicInfoServiceImpl implements ISegchkStoreBasicInfoSer
|
|||
*/
|
||||
@Override
|
||||
public int updateSegchkStoreServiceStatus(SegchkStoreBasicInfo segchkStoreBasicInfo) {
|
||||
if(!segchkStoreBasicInfo.getServiceState().equals("0")){
|
||||
if(!ObjectUtils.isEmpty(segchkStoreBasicInfo.getServiceState()) && !segchkStoreBasicInfo.getServiceState().equals("0")){
|
||||
// 商户下线
|
||||
Long[] storeIds = new Long[]{segchkStoreBasicInfo.getStoreId()};
|
||||
segchkCarouseMgtService.deleteSegchkCarouseMgtByStoreIds(storeIds);
|
||||
segchkRecommenderStoreService.deleteSegchkRecommenderStoreByStoreIds(storeIds);
|
||||
}
|
||||
return segchkStoreBasicInfoMapper.updateSegchkStoreServiceStatus(segchkStoreBasicInfo);
|
||||
SegchkStoreStatus segchkStoreStatus = new SegchkStoreStatus();
|
||||
segchkStoreStatus.setProviderId(segchkStoreBasicInfo.getProviderId());
|
||||
segchkStoreStatus.setStoreId(segchkStoreBasicInfo.getStoreId());
|
||||
segchkStoreStatus.setServiceState(segchkStoreBasicInfo.getServiceState());
|
||||
segchkStoreStatus.setStateFlag(segchkStoreBasicInfo.getStateFlag());
|
||||
segchkStoreStatus.setWithMsg(segchkStoreBasicInfo.getWithMsg());
|
||||
segchkStoreStatus.setUseSelfCardWithNovip(segchkStoreBasicInfo.getUseSelfCardWithNovip());
|
||||
int ret = updateSegchkStoreStatus(segchkStoreStatus);
|
||||
if (ret > 0){
|
||||
redisService.setCacheObject(RedisCahceKey.STORE_STATUS + "::" + RedisCahceKey.STORE_STATUS + segchkStoreStatus.getStoreId(), segchkStoreStatus);
|
||||
logger.debug("cache store status update {}", segchkStoreStatus.toString());
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改seg商家状态
|
||||
*
|
||||
* @param segchkStoreStatus seg商家状态
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
// @CachePut(value = RedisCahceKey.STORE_STATUS, key = "'STORE_STATUS' + #segchkStoreStatus.storeId")
|
||||
public int updateSegchkStoreStatus(SegchkStoreStatus segchkStoreStatus) {
|
||||
return segchkStoreBasicInfoMapper.updateSegchkStoreServiceStatus(segchkStoreStatus);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -168,6 +218,74 @@ public class SegchkStoreBasicInfoServiceImpl implements ISegchkStoreBasicInfoSer
|
|||
return segchkStoreBasicInfoMapper.updateSegchkStoreDetail(segchkStoreBasicInfo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改seg商家VR路径
|
||||
*
|
||||
* @param segchkStoreVrInfo seg商家基础信息(只包含商家id,运营商id,vr路径)
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int updateSegchkStoreVr(SegchkStoreVrInfo segchkStoreVrInfo) {
|
||||
return segchkStoreBasicInfoMapper.updateSegchkStoreVr(segchkStoreVrInfo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int addSegchkStoreVr(SegchkStoreVrInfo segchkStoreVrInfo) {
|
||||
return segchkStoreBasicInfoMapper.addSegchkStoreVr(segchkStoreVrInfo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int deleteSegchkStoreVr(SegchkStoreVrInfo segchkStoreVrInfo) {
|
||||
return segchkStoreBasicInfoMapper.deleteSegchkStoreVr(segchkStoreVrInfo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查找运营商下所有有效商家列表
|
||||
*
|
||||
* @param providerId 运营商id
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public List<SimpleListObj> selectSegchkStoreSimpleList(Long providerId) {
|
||||
return segchkStoreBasicInfoMapper.selectSegchkStoreSimpleList(providerId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据商家信息,修改指定商家的流量值
|
||||
*
|
||||
* @param segchkStoreCntCtrl 商家流量信息
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int updateSegchkStoreCnt(SegchkStoreCntCtrl segchkStoreCntCtrl) {
|
||||
SegchkStoreCntCtrl segchkStoreCntCtrl1 = segchkStoreCntCtrlService.selectSegchkStoreCntCtrlByCntId(segchkStoreCntCtrl.getCntId());
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据商家信息,修改指定商家的缓存流量值
|
||||
*
|
||||
* @param segchkStoreCntCtrl 商家流量信息
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int updateSegchkStoreCnt2Redis(SegchkStoreCntCtrl segchkStoreCntCtrl) {
|
||||
Long providerId = segchkStoreCntCtrl.getProviderId();
|
||||
Long storeId = segchkStoreCntCtrl.getStoreId();
|
||||
if (segchkStoreCntCtrl.updateBrowse() != 0L){
|
||||
redisUtil.hset("wechatCount1", "browse_cnt1:" + providerId + ":" + storeId, segchkStoreCntCtrl.getBrowseCnt());
|
||||
}
|
||||
if (segchkStoreCntCtrl.updateCollect() != 0L){
|
||||
redisUtil.hset("wechatCount1", "collect_cnt1:" + providerId + ":" + storeId, segchkStoreCntCtrl.getCollectCnt());
|
||||
}
|
||||
if (segchkStoreCntCtrl.updateBook() != 0L){
|
||||
redisUtil.hset("wechatCount1", "book_cnt1:" + providerId + ":" + storeId, segchkStoreCntCtrl.getBookCnt());
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 新增seg商家图片信息信息
|
||||
*
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue