Commit 2c2693f0 authored by hezhen's avatar hezhen

Merge branch 'base-modify' of http://113.105.137.151:22280/youjj/cloud-platform into base-modify

parents 92797cf8 17a64dc8
...@@ -2,6 +2,7 @@ package com.github.wxiaoqi.security.admin.rest; ...@@ -2,6 +2,7 @@ package com.github.wxiaoqi.security.admin.rest;
import com.github.wxiaoqi.security.admin.biz.BaseUserMemberBiz; import com.github.wxiaoqi.security.admin.biz.BaseUserMemberBiz;
import com.github.wxiaoqi.security.admin.dto.BaseUserMemberVO; import com.github.wxiaoqi.security.admin.dto.BaseUserMemberVO;
import com.github.wxiaoqi.security.admin.dto.UserMemberDTO;
import com.github.wxiaoqi.security.admin.entity.AppUserManage; import com.github.wxiaoqi.security.admin.entity.AppUserManage;
import com.github.wxiaoqi.security.admin.entity.BaseUserMember; import com.github.wxiaoqi.security.admin.entity.BaseUserMember;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse; import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
...@@ -33,13 +34,13 @@ public class BaseUserMemberController extends BaseController<BaseUserMemberBiz, ...@@ -33,13 +34,13 @@ public class BaseUserMemberController extends BaseController<BaseUserMemberBiz,
/** /**
* 设置用户会员 * 设置用户会员
* @param baseUserMemberVO * @param userMemberDTO
* @return * @return
*/ */
@PutMapping("/setUserMember") @PutMapping("/setUserMember")
public ObjectRestResponse UpdateUserMember(@RequestBody BaseUserMemberVO baseUserMemberVO) public ObjectRestResponse UpdateUserMember(@RequestBody UserMemberDTO userMemberDTO)
throws InvocationTargetException, IllegalAccessException { throws Exception {
baseBiz.UpdateUserMember(baseUserMemberVO); baseBiz.updUserMemberByUserId(userMemberDTO);
return ObjectRestResponse.succ(); return ObjectRestResponse.succ();
} }
} }
package com.xxfc.platform.activity.constant;
public enum IntegralRulePeriod {
DAY(0, "天"),
WEEK(1, "周"),
MONTH(2, "月"),
QUARTER(3,"季度"),
YEAR(4,"年");
Integer code;
String msg;
IntegralRulePeriod(Integer code, String msg) {
this.code = code;
this.msg = msg;
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}
...@@ -58,6 +58,7 @@ public class ActivityPopup { ...@@ -58,6 +58,7 @@ public class ActivityPopup {
@Column(name = "is_del") @Column(name = "is_del")
private Integer isDel; private Integer isDel;
@Column(name = "time_type")
private Integer timeType;
} }
package com.xxfc.platform.activity.entity; package com.xxfc.platform.activity.entity;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigInteger;
import java.util.Date; import java.util.Date;
import javax.persistence.*; import javax.persistence.*;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
...@@ -29,14 +30,14 @@ public class HomeActivities implements Serializable { ...@@ -29,14 +30,14 @@ public class HomeActivities implements Serializable {
*/ */
@Column(name = "crt_time") @Column(name = "crt_time")
@ApiModelProperty(value = "创建时间", hidden = true ) @ApiModelProperty(value = "创建时间", hidden = true )
private Long crtTime; private BigInteger crtTime;
/** /**
* 更新时间 * 更新时间
*/ */
@Column(name = "upd_time") @Column(name = "upd_time")
@ApiModelProperty(value = "更新时间", hidden = true ) @ApiModelProperty(value = "更新时间", hidden = true )
private Long updTime; private BigInteger updTime;
/** /**
* 活动名称 * 活动名称
...@@ -50,14 +51,14 @@ public class HomeActivities implements Serializable { ...@@ -50,14 +51,14 @@ public class HomeActivities implements Serializable {
*/ */
@Column(name = "start_time") @Column(name = "start_time")
@ApiModelProperty(value = "活动开始时间") @ApiModelProperty(value = "活动开始时间")
private Long startTime; private BigInteger startTime;
/** /**
* 精彩活动结束时间 * 精彩活动结束时间
*/ */
@Column(name = "end_time") @Column(name = "end_time")
@ApiModelProperty(value = "活动结束时间") @ApiModelProperty(value = "活动结束时间")
private Long endTime; private BigInteger endTime;
/** /**
...@@ -99,4 +100,11 @@ public class HomeActivities implements Serializable { ...@@ -99,4 +100,11 @@ public class HomeActivities implements Serializable {
@ApiModelProperty(value = "是否删除") @ApiModelProperty(value = "是否删除")
private Integer isDel; private Integer isDel;
/**
* 有效期限:0-永久 ,1-有期限
*/
@Column(name = "time_type")
private Integer timeType;
} }
...@@ -138,6 +138,6 @@ public class IntegralRule{ ...@@ -138,6 +138,6 @@ public class IntegralRule{
private String btnWord; private String btnWord;
@Transient @Transient
private Boolean integralStatus; private Boolean integralStatus = false;
} }
\ No newline at end of file
package com.xxfc.platform.activity.entity;
import lombok.Data;
import javax.persistence.*;
@Table(name = "integral_user_status")
@Data
public class IntegralUserStatus {
@Id
private Integer id;
@Column(name = "integral_rule_code")
private String integralRuleCode;
@Column(name = "user_id")
private Integer userId;
private Boolean integralStatus;
private Long crtTime;
private Long updTime;
}
\ No newline at end of file
...@@ -3,8 +3,6 @@ package com.xxfc.platform.activity.vo; ...@@ -3,8 +3,6 @@ package com.xxfc.platform.activity.vo;
import com.github.wxiaoqi.security.common.vo.PageParam; import com.github.wxiaoqi.security.common.vo.PageParam;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal;
@Data @Data
public class IntegralRuleDto extends PageParam { public class IntegralRuleDto extends PageParam {
/** /**
...@@ -13,4 +11,7 @@ public class IntegralRuleDto extends PageParam { ...@@ -13,4 +11,7 @@ public class IntegralRuleDto extends PageParam {
Integer id; Integer id;
String code; String code;
Integer userId;
} }
...@@ -14,6 +14,7 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -14,6 +14,7 @@ import org.springframework.transaction.annotation.Transactional;
import tk.mybatis.mapper.entity.Example; import tk.mybatis.mapper.entity.Example;
import tk.mybatis.mapper.weekend.WeekendSqls; import tk.mybatis.mapper.weekend.WeekendSqls;
import javax.swing.plaf.synth.SynthEditorPaneUI;
import java.math.BigInteger; import java.math.BigInteger;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
...@@ -23,10 +24,11 @@ import java.util.stream.Collectors; ...@@ -23,10 +24,11 @@ import java.util.stream.Collectors;
/** /**
* 活动弹窗biz * 活动弹窗biz
*
* @author Administrator * @author Administrator
*/ */
@Service @Service
public class ActivityPopupBiz extends BaseBiz<ActivityPopupMapper,ActivityPopup> { public class ActivityPopupBiz extends BaseBiz<ActivityPopupMapper, ActivityPopup> {
@Value("${activity.popup.loginTypes}") @Value("${activity.popup.loginTypes}")
private String loginTypes; private String loginTypes;
...@@ -38,36 +40,35 @@ public class ActivityPopupBiz extends BaseBiz<ActivityPopupMapper,ActivityPopup> ...@@ -38,36 +40,35 @@ public class ActivityPopupBiz extends BaseBiz<ActivityPopupMapper,ActivityPopup>
/** /**
* 获取活动弹窗,根据是否登录 * 获取活动弹窗,根据是否登录
*
* @param userInfo * @param userInfo
* @return * @return
*/ */
public List<ActivityPopup> getActivityPopup(AppUserDTO userInfo) { public List<ActivityPopup> getActivityPopup(AppUserDTO userInfo) {
if (userInfo!=null){ if (userInfo != null) {
List<ActivityPopup> activityPopups = getActivityPopupByTypes(loginTypes); List<ActivityPopup> activityPopups = getActivityPopupByTypes(loginTypes);
if (activityPopups==null||activityPopups.size()==0) { if (activityPopups == null || activityPopups.size() == 0) {
return activityPopups; return activityPopups;
} }
List<Integer> collect = activityPopups.parallelStream().map(ActivityPopup::getId).collect(Collectors.toList()); List<Integer> collect = activityPopups.parallelStream().map(ActivityPopup::getId).collect(Collectors.toList());
Example exaple= Example.builder(ActivityPopupUser.class) Example exaple = Example.builder(ActivityPopupUser.class)
.where(WeekendSqls.<ActivityPopupUser>custom() .where(WeekendSqls.<ActivityPopupUser>custom()
.andEqualTo(ActivityPopupUser::getUserId,userInfo.getUserid()) .andEqualTo(ActivityPopupUser::getUserId, userInfo.getUserid())
.andIn(ActivityPopupUser::getPopupId,collect) .andIn(ActivityPopupUser::getPopupId, collect)
).build(); ).build();
List<ActivityPopupUser> activityPopupUsers = activityPopupUserBiz.selectByExample(exaple); List<ActivityPopupUser> activityPopupUsers = activityPopupUserBiz.selectByExample(exaple);
if (activityPopupUsers==null||activityPopupUsers.size()==0) { if (activityPopupUsers == null || activityPopupUsers.size() == 0) {
return activityPopups; return activityPopups;
} }
Set<Integer> popupIdSet = activityPopupUsers.parallelStream().map(ActivityPopupUser::getPopupId).collect(Collectors.toSet()); Set<Integer> popupIdSet = activityPopupUsers.parallelStream().map(ActivityPopupUser::getPopupId).collect(Collectors.toSet());
List<ActivityPopup> result= new ArrayList<>(); List<ActivityPopup> result = new ArrayList<>();
for (ActivityPopup activityPopup : activityPopups) { for (ActivityPopup activityPopup : activityPopups) {
if (popupIdSet.add(activityPopup.getId())){ if (popupIdSet.add(activityPopup.getId())) {
result.add(activityPopup); result.add(activityPopup);
} }
} }
return result; return result;
}else { } else {
return getActivityPopupByTypes(notLoginTypes); return getActivityPopupByTypes(notLoginTypes);
...@@ -77,41 +78,57 @@ public class ActivityPopupBiz extends BaseBiz<ActivityPopupMapper,ActivityPopup> ...@@ -77,41 +78,57 @@ public class ActivityPopupBiz extends BaseBiz<ActivityPopupMapper,ActivityPopup>
/** /**
* 根据不同的用户,可查询寻的类型.得到对应的弹窗 * 根据不同的用户,可查询寻的类型.得到对应的弹窗
*
* @param Types * @param Types
* @return * @return
*/ */
private List<ActivityPopup> getActivityPopupByTypes(String Types) { private List<ActivityPopup> getActivityPopupByTypes(String Types) {
long timeMillis = System.currentTimeMillis();
//获取有期限的弹窗timeType=1
Example exa = Example.builder(ActivityPopup.class) Example exa = Example.builder(ActivityPopup.class)
.where( .where(
WeekendSqls.<ActivityPopup>custom() WeekendSqls.<ActivityPopup>custom()
.andGreaterThanOrEqualTo(ActivityPopup::getEndTime, BigInteger.valueOf(System.currentTimeMillis())) .andEqualTo(ActivityPopup::getTimeType, 1)
.andLessThanOrEqualTo(ActivityPopup::getStartTime, BigInteger.valueOf(System.currentTimeMillis())) .andGreaterThanOrEqualTo(ActivityPopup::getEndTime, BigInteger.valueOf(timeMillis))
.andLessThanOrEqualTo(ActivityPopup::getStartTime, BigInteger.valueOf(timeMillis))
.andIn(ActivityPopup::getType, Arrays.asList(Types.split(","))) .andIn(ActivityPopup::getType, Arrays.asList(Types.split(",")))
.andEqualTo(ActivityPopup::getStatus, 1) .andEqualTo(ActivityPopup::getStatus, 1)
.andEqualTo(ActivityPopup::getIsDel,0) .andEqualTo(ActivityPopup::getIsDel, 0)
).orderByAsc("sort").build(); ).orderByAsc("sort").build();
List<ActivityPopup> activityPopups = mapper.selectByExample(exa); List<ActivityPopup> activityPopups = mapper.selectByExample(exa);
long l = System.currentTimeMillis();
return activityPopups ; //获取永久的弹窗timeType=0
Example permanentExa = Example.builder(ActivityPopup.class)
.where(
WeekendSqls.<ActivityPopup>custom()
.andEqualTo(ActivityPopup::getTimeType, 0)
.andIn(ActivityPopup::getType, Arrays.asList(Types.split(",")))
.andEqualTo(ActivityPopup::getStatus, 1)
.andEqualTo(ActivityPopup::getIsDel, 0)
).orderByAsc("sort").build();
List<ActivityPopup> permanentActivityPopups = mapper.selectByExample(permanentExa);
activityPopups.addAll(permanentActivityPopups);
return activityPopups;
} }
/** /**
* 判断是否重复弹窗 * 判断是否重复弹窗
*
* @param userInfo * @param userInfo
* @param id * @param id
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void setActivityPopup(AppUserDTO userInfo,Integer id){ public void setActivityPopup(AppUserDTO userInfo, Integer id) {
if (userInfo!=null) { if (userInfo != null) {
Example exa=Example.builder(ActivityPopupUser.class).where( Example exa = Example.builder(ActivityPopupUser.class).where(
WeekendSqls.<ActivityPopupUser>custom() WeekendSqls.<ActivityPopupUser>custom()
.andEqualTo(ActivityPopupUser::getPopupId,id) .andEqualTo(ActivityPopupUser::getPopupId, id)
.andEqualTo(ActivityPopupUser::getUserId,userInfo.getUserid()) .andEqualTo(ActivityPopupUser::getUserId, userInfo.getUserid())
).build(); ).build();
List<ActivityPopupUser> activityPopupUsers = activityPopupUserBiz.selectByExample(exa); List<ActivityPopupUser> activityPopupUsers = activityPopupUserBiz.selectByExample(exa);
if (activityPopupUsers==null||activityPopupUsers.size()==0) { if (activityPopupUsers == null || activityPopupUsers.size() == 0) {
ActivityPopupUser activityPopupUser = new ActivityPopupUser(); ActivityPopupUser activityPopupUser = new ActivityPopupUser();
activityPopupUser.setPopupId(id); activityPopupUser.setPopupId(id);
activityPopupUser.setUserId(userInfo.getUserid()); activityPopupUser.setUserId(userInfo.getUserid());
...@@ -126,11 +143,25 @@ public class ActivityPopupBiz extends BaseBiz<ActivityPopupMapper,ActivityPopup> ...@@ -126,11 +143,25 @@ public class ActivityPopupBiz extends BaseBiz<ActivityPopupMapper,ActivityPopup>
public void deleteOne(Integer id) { public void deleteOne(Integer id) {
ActivityPopup activityPopup = selectById(id); ActivityPopup activityPopup = selectById(id);
if (activityPopup.getStatus()==1) { if (activityPopup.getStatus() == 1) {
throw new BaseException("Please take it off the shelves first"); throw new BaseException("Please take it off the shelves first");
}else{ } else {
activityPopup.setIsDel(1); activityPopup.setIsDel(1);
} }
updateById(activityPopup); updateById(activityPopup);
} }
@Override
public int updateSelectiveByIdRe(ActivityPopup activityPopup) {
activityPopup.setUpdTime(BigInteger.valueOf(System.currentTimeMillis()));
return mapper.updateByPrimaryKeySelective(activityPopup);
}
@Override
public int insertSelectiveRe(ActivityPopup activityPopup) {
activityPopup.setCrtTime(BigInteger.valueOf(System.currentTimeMillis()));
activityPopup.setSort(0);
activityPopup.setTimeType(0);
return mapper.insertSelective(activityPopup);
}
} }
...@@ -14,6 +14,7 @@ import org.springframework.stereotype.Service; ...@@ -14,6 +14,7 @@ import org.springframework.stereotype.Service;
import tk.mybatis.mapper.entity.Example; import tk.mybatis.mapper.entity.Example;
import tk.mybatis.mapper.weekend.WeekendSqls; import tk.mybatis.mapper.weekend.WeekendSqls;
import java.math.BigInteger;
import java.util.List; import java.util.List;
/** /**
* @author Administrator * @author Administrator
...@@ -23,12 +24,22 @@ public class HomeActivitiesBiz extends BaseBiz<HomeActivitiesMapper, HomeActivit ...@@ -23,12 +24,22 @@ public class HomeActivitiesBiz extends BaseBiz<HomeActivitiesMapper, HomeActivit
public List<HomeActivities> activities () { public List<HomeActivities> activities () {
long currentTime = System.currentTimeMillis(); long currentTime = System.currentTimeMillis();
Example exa=Example.builder(HomeActivities.class).where(WeekendSqls.<HomeActivities>custom() Example exa=Example.builder(HomeActivities.class).where(WeekendSqls.<HomeActivities>custom()
.andEqualTo(HomeActivities::getTimeType,1)
.andGreaterThanOrEqualTo(HomeActivities::getEndTime,currentTime) .andGreaterThanOrEqualTo(HomeActivities::getEndTime,currentTime)
.andLessThanOrEqualTo(HomeActivities::getStartTime,currentTime) .andLessThanOrEqualTo(HomeActivities::getStartTime,currentTime)
.andEqualTo(HomeActivities::getStatus,1) .andEqualTo(HomeActivities::getStatus,1)
.andEqualTo(HomeActivities::getIsDel,0) .andEqualTo(HomeActivities::getIsDel,0)
).orderByAsc("sort").build(); ).orderByAsc("sort").build();
List<HomeActivities> activityLists = selectByExample(exa); List<HomeActivities> activityLists = selectByExample(exa);
Example permanentExa=Example.builder(HomeActivities.class).where(WeekendSqls.<HomeActivities>custom()
.andEqualTo(HomeActivities::getTimeType,0)
.andEqualTo(HomeActivities::getStatus,1)
.andEqualTo(HomeActivities::getIsDel,0)
).orderByAsc("sort").build();
List<HomeActivities> permanentActivityLists = selectByExample(permanentExa);
activityLists.addAll(permanentActivityLists);
return activityLists; return activityLists;
} }
...@@ -36,10 +47,11 @@ public class HomeActivitiesBiz extends BaseBiz<HomeActivitiesMapper, HomeActivit ...@@ -36,10 +47,11 @@ public class HomeActivitiesBiz extends BaseBiz<HomeActivitiesMapper, HomeActivit
public PageInfo<HomeActivities> getPage (ActivitiesQuery query) { public PageInfo<HomeActivities> getPage (ActivitiesQuery query) {
Example exa =new Example(HomeActivities.class); Example exa =new Example(HomeActivities.class);
Example.Criteria criteria = exa.createCriteria();
if (StringUtils.isNotBlank(query.getActivitiesName())){ if (StringUtils.isNotBlank(query.getActivitiesName())){
exa.createCriteria().andLike("name","%"+query.getActivitiesName()+"%"); criteria.andLike("name","%"+query.getActivitiesName()+"%");
} }
exa.createCriteria().andEqualTo("isDel",0); criteria.andEqualTo("isDel",0);
exa.orderBy("sort").asc(); exa.orderBy("sort").asc();
PageHelper.startPage(query.getPage(),query.getLimit()); PageHelper.startPage(query.getPage(),query.getLimit());
List<HomeActivities> activityLists = selectByExample(exa); List<HomeActivities> activityLists = selectByExample(exa);
...@@ -56,4 +68,19 @@ public class HomeActivitiesBiz extends BaseBiz<HomeActivitiesMapper, HomeActivit ...@@ -56,4 +68,19 @@ public class HomeActivitiesBiz extends BaseBiz<HomeActivitiesMapper, HomeActivit
updateById(homeActivities); updateById(homeActivities);
} }
@Override
public int updateSelectiveByIdRe(HomeActivities activityPopup) {
activityPopup.setUpdTime(BigInteger.valueOf(System.currentTimeMillis()));
return mapper.updateByPrimaryKeySelective(activityPopup);
}
@Override
public int insertSelectiveRe(HomeActivities activityPopup) {
activityPopup.setCrtTime(BigInteger.valueOf(System.currentTimeMillis()));
activityPopup.setSort(0);
activityPopup.setTimeType(0);
return mapper.insertSelective(activityPopup);
}
} }
...@@ -97,9 +97,6 @@ public class IntegralRuleBiz extends BaseBiz<IntegralRuleMapper, IntegralRule> { ...@@ -97,9 +97,6 @@ public class IntegralRuleBiz extends BaseBiz<IntegralRuleMapper, IntegralRule> {
Query query = new Query(integralRule); Query query = new Query(integralRule);
PageDataVO<IntegralRule> pageDataVO = PageDataVO.pageInfo(query, () -> mapper.selectAllByParam(integralRule)); PageDataVO<IntegralRule> pageDataVO = PageDataVO.pageInfo(query, () -> mapper.selectAllByParam(integralRule));
//添加个人积分状态 //添加个人积分状态
for(IntegralRule value : pageDataVO.getData()) {
value.setIntegralStatus(getIntegralStatus(appUserDTO, value));
}
return ObjectRestResponse.succ(pageDataVO); return ObjectRestResponse.succ(pageDataVO);
} }
......
...@@ -7,11 +7,14 @@ import com.github.wxiaoqi.security.common.constant.RestCode; ...@@ -7,11 +7,14 @@ import com.github.wxiaoqi.security.common.constant.RestCode;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse; import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.Query; import com.github.wxiaoqi.security.common.util.Query;
import com.github.wxiaoqi.security.common.vo.PageDataVO; import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.activity.constant.IntegralRulePeriod;
import com.xxfc.platform.activity.entity.IntegralRule; import com.xxfc.platform.activity.entity.IntegralRule;
import com.xxfc.platform.activity.entity.IntegralUserRecord; import com.xxfc.platform.activity.entity.IntegralUserRecord;
import com.xxfc.platform.activity.entity.IntegralUserStatus;
import com.xxfc.platform.activity.entity.IntegralUserTotal; import com.xxfc.platform.activity.entity.IntegralUserTotal;
import com.xxfc.platform.activity.mapper.IntegralUserRecordMapper; import com.xxfc.platform.activity.mapper.IntegralUserRecordMapper;
import com.xxfc.platform.activity.user.UserInfoBiz; import com.xxfc.platform.activity.user.UserInfoBiz;
import com.xxfc.platform.activity.util.IntegralToolsUtils;
import com.xxfc.platform.activity.vo.IntegralRuleDto; import com.xxfc.platform.activity.vo.IntegralRuleDto;
import com.xxfc.platform.activity.vo.IntegralUserRecordDto; import com.xxfc.platform.activity.vo.IntegralUserRecordDto;
import com.xxfc.platform.activity.vo.IntegralUserTotalDto; import com.xxfc.platform.activity.vo.IntegralUserTotalDto;
...@@ -37,6 +40,9 @@ public class IntegralUserRecordBiz extends BaseBiz<IntegralUserRecordMapper, Int ...@@ -37,6 +40,9 @@ public class IntegralUserRecordBiz extends BaseBiz<IntegralUserRecordMapper, Int
@Autowired @Autowired
IntegralRuleBiz integralRuleBiz; IntegralRuleBiz integralRuleBiz;
@Autowired
IntegralUserStatusBiz integralUserStatusBiz;
/** /**
* 添加用户积分记录 * 添加用户积分记录
* *
...@@ -49,15 +55,15 @@ public class IntegralUserRecordBiz extends BaseBiz<IntegralUserRecordMapper, Int ...@@ -49,15 +55,15 @@ public class IntegralUserRecordBiz extends BaseBiz<IntegralUserRecordMapper, Int
return ObjectRestResponse.paramIsEmpty(); return ObjectRestResponse.paramIsEmpty();
} }
//如果参数没有积分,说明是消息队列过来的参数,需要查询规则表获取积分数 //如果参数没有积分,说明是消息队列过来的参数,需要查询规则表获取积分数
if (integralUserRecord.getPoint() == null) {
IntegralRuleDto integralRule = new IntegralRuleDto(); IntegralRuleDto integralRule = new IntegralRuleDto();
integralRule.setCode(integralUserRecord.getIntegralRuleCode()); integralRule.setCode(integralUserRecord.getIntegralRuleCode());
ObjectRestResponse<IntegralRule> ruleObjectRestResponse = integralRuleBiz.getOne(integralRule); ObjectRestResponse<IntegralRule> ruleObjectRestResponse = integralRuleBiz.getOne(integralRule);
if (ruleObjectRestResponse.getData() == null) { if (ruleObjectRestResponse.getData() == null) {
return ObjectRestResponse.createFailedResult(1202, "积分规则不存在"); return ObjectRestResponse.createFailedResult(1202, "积分规则不存在");
} }
Integer point = 0;
IntegralRule oldValue = ruleObjectRestResponse.getData(); IntegralRule oldValue = ruleObjectRestResponse.getData();
if (integralUserRecord.getPoint() == null) {
Integer point = 0;
if(oldValue.getPoint() == 0) {//没有基础分需要计算分数 if(oldValue.getPoint() == 0) {//没有基础分需要计算分数
//Integer amount = Integer.parseInt(new BigDecimal(integralUserRecord.getAmount()).divide(new BigDecimal("100"), 0, BigDecimal.ROUND_DOWN).toString()); //Integer amount = Integer.parseInt(new BigDecimal(integralUserRecord.getAmount()).divide(new BigDecimal("100"), 0, BigDecimal.ROUND_DOWN).toString());
Integer amount = Integer.parseInt(integralUserRecord.getAmount()); Integer amount = Integer.parseInt(integralUserRecord.getAmount());
...@@ -95,6 +101,9 @@ public class IntegralUserRecordBiz extends BaseBiz<IntegralUserRecordMapper, Int ...@@ -95,6 +101,9 @@ public class IntegralUserRecordBiz extends BaseBiz<IntegralUserRecordMapper, Int
} }
} }
insertSelective(integralUserRecord.getIntegralUserRecord()); insertSelective(integralUserRecord.getIntegralUserRecord());
if(oldValue != null) {
getUserRecordStatus(integralUserRecord, oldValue.getPeriod(), oldValue.getNumber());
}
return ObjectRestResponse.succ(); return ObjectRestResponse.succ();
} }
...@@ -149,4 +158,32 @@ public class IntegralUserRecordBiz extends BaseBiz<IntegralUserRecordMapper, Int ...@@ -149,4 +158,32 @@ public class IntegralUserRecordBiz extends BaseBiz<IntegralUserRecordMapper, Int
List<IntegralUserRecord> integralUserRecordList = mapper.selectByUserAndTime(integralUserRecordDto); List<IntegralUserRecord> integralUserRecordList = mapper.selectByUserAndTime(integralUserRecordDto);
return ObjectRestResponse.succ(integralUserRecordList); return ObjectRestResponse.succ(integralUserRecordList);
} }
/**
* //判断用户获取积分是否达标
* @param integralUserRecordDto 积分记录实体
* @param period 周期
* number 周期内可获得积分的次数
*/
public void getUserRecordStatus(IntegralUserRecordDto integralUserRecordDto, Integer period, Integer number) {
IntegralUserStatus integralUserStatus = new IntegralUserStatus();
integralUserStatus.setUserId(integralUserRecordDto.getUserId());
integralUserStatus.setIntegralRuleCode(integralUserRecordDto.getIntegralRuleCode());
if(period == IntegralRulePeriod.DAY.getCode()) {//按天
integralUserRecordDto.setStartTime(IntegralToolsUtils.getDayStart());
integralUserRecordDto.setEndTime(IntegralToolsUtils.getDayStart() + 24 * 60 * 60 * 1000);
Integer count = mapper.countByUserAndCode(integralUserRecordDto);
integralUserStatus.setIntegralStatus(count == number);
} else {
integralUserRecordDto.setStartTime(null);
Integer count = mapper.countByUserAndCode(integralUserRecordDto);
integralUserStatus.setIntegralStatus(count == number);
}
integralUserStatusBiz.save(integralUserStatus);
}
} }
package com.xxfc.platform.activity.biz;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.xxfc.platform.activity.entity.IntegralUserStatus;
import com.xxfc.platform.activity.mapper.IntegralUserStatusMapper;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service
@Transactional
public class IntegralUserStatusBiz extends BaseBiz<IntegralUserStatusMapper, IntegralUserStatus> {
public ObjectRestResponse save(IntegralUserStatus integralUserStatus) {
if(integralUserStatus != null) {
IntegralUserStatus oldValue = mapper.selectByUserAndCode(integralUserStatus);
if(oldValue != null) {
BeanUtil.copyProperties(integralUserStatus, oldValue, CopyOptions.create().setIgnoreNullValue(true).setIgnoreError(true));
updateSelectiveById(oldValue);
}
insertSelective(integralUserStatus);
}
return ObjectRestResponse.succ();
}
public IntegralUserStatus selectByUserAndCode(String code, Integer userId) {
if(!StringUtils.isAllBlank(code, userId + "")) {
IntegralUserStatus integralUserStatus = new IntegralUserStatus();
integralUserStatus.setIntegralRuleCode(code);
integralUserStatus.setUserId(userId);
return mapper.selectByUserAndCode(integralUserStatus);
}
return null;
}
}
...@@ -12,4 +12,6 @@ public interface IntegralUserRecordMapper extends Mapper<IntegralUserRecord> { ...@@ -12,4 +12,6 @@ public interface IntegralUserRecordMapper extends Mapper<IntegralUserRecord> {
List<IntegralUserRecord> selectByUserAndTime(IntegralUserRecordDto integralUserRecordDto); List<IntegralUserRecord> selectByUserAndTime(IntegralUserRecordDto integralUserRecordDto);
Integer countByUserAndCode(IntegralUserRecordDto integralUserRecordDto);
} }
\ No newline at end of file
package com.xxfc.platform.activity.mapper;
import com.xxfc.platform.activity.entity.IntegralUserStatus;
import tk.mybatis.mapper.common.Mapper;
public interface IntegralUserStatusMapper extends Mapper<IntegralUserStatus> {
IntegralUserStatus selectByUserAndCode(IntegralUserStatus integralUserStatus);
}
\ No newline at end of file
...@@ -3,8 +3,11 @@ package com.xxfc.platform.activity.rest; ...@@ -3,8 +3,11 @@ package com.xxfc.platform.activity.rest;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse; import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.rest.BaseController; import com.github.wxiaoqi.security.common.rest.BaseController;
import com.xxfc.platform.activity.biz.ActivityListBiz; import com.xxfc.platform.activity.biz.ActivityListBiz;
import com.xxfc.platform.activity.biz.HomeActivitiesBiz;
import com.xxfc.platform.activity.entity.ActivityList; import com.xxfc.platform.activity.entity.ActivityList;
import com.xxfc.platform.activity.entity.ActivityManagement; import com.xxfc.platform.activity.entity.ActivityManagement;
import com.xxfc.platform.activity.entity.HomeActivities;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
...@@ -16,6 +19,9 @@ import java.util.List; ...@@ -16,6 +19,9 @@ import java.util.List;
@RestController @RestController
@RequestMapping("activityList") @RequestMapping("activityList")
public class ActivityListController extends BaseController<ActivityListBiz,ActivityList> { public class ActivityListController extends BaseController<ActivityListBiz,ActivityList> {
@Autowired
private HomeActivitiesBiz homeActivitiesBiz;
/** /**
* 精彩活动列表 * 精彩活动列表
* @return * @return
...@@ -23,8 +29,9 @@ public class ActivityListController extends BaseController<ActivityListBiz,Activ ...@@ -23,8 +29,9 @@ public class ActivityListController extends BaseController<ActivityListBiz,Activ
* @throws IllegalAccessException * @throws IllegalAccessException
*/ */
@GetMapping("/app/unauth/activity/findAll") @GetMapping("/app/unauth/activity/findAll")
public ObjectRestResponse<List<ActivityList>> appFindAll() throws InvocationTargetException, IllegalAccessException { public ObjectRestResponse<List<HomeActivities>> appFindAll() throws InvocationTargetException, IllegalAccessException {
List<ActivityList> list= baseBiz.activities(); List<HomeActivities> activities = homeActivitiesBiz.activities();
return ObjectRestResponse.succ(list); // List<ActivityList> list= baseBiz.activities();
return ObjectRestResponse.succ(activities);
} }
} }
\ No newline at end of file
...@@ -7,6 +7,7 @@ import com.github.wxiaoqi.security.common.rest.BaseController; ...@@ -7,6 +7,7 @@ import com.github.wxiaoqi.security.common.rest.BaseController;
import com.xxfc.platform.activity.biz.ActivityPopupBiz; import com.xxfc.platform.activity.biz.ActivityPopupBiz;
import com.xxfc.platform.activity.entity.ActivityPopup; import com.xxfc.platform.activity.entity.ActivityPopup;
import com.xxfc.platform.activity.vo.PopupQuery; import com.xxfc.platform.activity.vo.PopupQuery;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -45,11 +46,12 @@ public class ActivityPopupManageController extends BaseController<ActivityPopupB ...@@ -45,11 +46,12 @@ public class ActivityPopupManageController extends BaseController<ActivityPopupB
* @param id * @param id
* @return * @return
*/ */
@PostMapping(value = "/manage/getOne/{id}") @GetMapping(value = "/manage/getOne/{id}")
public ObjectRestResponse<ActivityPopup> getOne(@PathVariable Integer id) { public ObjectRestResponse<ActivityPopup> getOne(@PathVariable Integer id) {
Example exa=new Example(ActivityPopup.class); Example exa=new Example(ActivityPopup.class);
exa.createCriteria().andEqualTo("isDel",0); Example.Criteria criteria = exa.createCriteria();
exa.createCriteria().andEqualTo("id",id); criteria.andEqualTo("isDel",0);
criteria.andEqualTo("id",id);
List<ActivityPopup> activityPopups = baseBiz.selectByExample(exa); List<ActivityPopup> activityPopups = baseBiz.selectByExample(exa);
if (activityPopups==null||activityPopups.size()==0) { if (activityPopups==null||activityPopups.size()==0) {
return ObjectRestResponse.succ(new ActivityPopup()); return ObjectRestResponse.succ(new ActivityPopup());
...@@ -71,4 +73,18 @@ public class ActivityPopupManageController extends BaseController<ActivityPopupB ...@@ -71,4 +73,18 @@ public class ActivityPopupManageController extends BaseController<ActivityPopupB
return ObjectRestResponse.succ(); return ObjectRestResponse.succ();
} }
// /**
// * 添加
// * @param activityPopup
// * @return
// */
// @ApiOperation("保存")
// @PutMapping(value = "save")
// @ResponseBody
// public ObjectRestResponse<ActivityPopup> save(@RequestBody ActivityPopup activityPopup){
// baseBiz.save(activityPopup);
// return new ObjectRestResponse<ActivityPopup>();
// }
} }
...@@ -28,7 +28,7 @@ public class HomeActivitiesController extends BaseController<HomeActivitiesBiz, ...@@ -28,7 +28,7 @@ public class HomeActivitiesController extends BaseController<HomeActivitiesBiz,
* @throws IllegalAccessException * @throws IllegalAccessException
*/ */
@GetMapping("/app/unauth/activity/findAll") @GetMapping("/app/unauth/activity/findAll")
public ObjectRestResponse<List<HomeActivities>> appFindAll() throws InvocationTargetException, IllegalAccessException { public ObjectRestResponse<List<HomeActivities>> appFindAll() {
List<HomeActivities> list= baseBiz.activities(); List<HomeActivities> list= baseBiz.activities();
return ObjectRestResponse.succ(list); return ObjectRestResponse.succ(list);
} }
...@@ -49,7 +49,7 @@ public class HomeActivitiesController extends BaseController<HomeActivitiesBiz, ...@@ -49,7 +49,7 @@ public class HomeActivitiesController extends BaseController<HomeActivitiesBiz,
* @param id * @param id
* @return * @return
*/ */
@PostMapping(value = "/manage/activity/getOne/{id}") @GetMapping(value = "/manage/activity/getOne/{id}")
public ObjectRestResponse<HomeActivities> getOne(@PathVariable Integer id) { public ObjectRestResponse<HomeActivities> getOne(@PathVariable Integer id) {
Example exa=new Example(HomeActivities.class); Example exa=new Example(HomeActivities.class);
Example.Criteria criteria = exa.createCriteria(); Example.Criteria criteria = exa.createCriteria();
......
...@@ -15,9 +15,9 @@ ...@@ -15,9 +15,9 @@
</plugin> </plugin>
<jdbcConnection driverClass="com.mysql.jdbc.Driver" <jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/vehicle?useUnicode=true&amp;characterEncoding=UTF8" connectionURL="jdbc:mysql://10.5.52.4:3307/xxfc_activity?useUnicode=true&amp;characterEncoding=UTF8"
userId="root" userId="root"
password="xx2019fc"> password="sslcloud123*()">
</jdbcConnection> </jdbcConnection>
<javaModelGenerator targetPackage="${targetModelPackage}" targetProject="${targetJavaProject}"/> <javaModelGenerator targetPackage="${targetModelPackage}" targetProject="${targetJavaProject}"/>
...@@ -26,18 +26,6 @@ ...@@ -26,18 +26,6 @@
<javaClientGenerator targetPackage="${targetMapperPackage}" targetProject="${targetJavaProject}" <javaClientGenerator targetPackage="${targetMapperPackage}" targetProject="${targetJavaProject}"
type="XMLMAPPER"/> type="XMLMAPPER"/>
<table tableName="integral_user_status" domainObjectName="IntegralUserStatus"></table>
<!-- <table tableName="vehicle" domainObjectName="Vehicle">-->
<!-- </table>-->
<!-- <table tableName="vehicle_book_info" domainObjectName="VehicleBookInfo">-->
<!-- </table>-->
<!-- <table tableName="vehicle_book_record" domainObjectName="VehicleBookRecord">-->
<!-- </table>-->
<!-- <table tableName="branch_company" domainObjectName="BranchCompany">-->
<!-- </table>-->
<!-- <table tableName="branch_company_stock_info" domainObjectName="BranchCompanyStockInfo"></table>-->
<!-- <table tableName="branch_company_stock_apply_info" domainObjectName="BranchCompanyStockApplyInfo"></table>-->
<table tableName="vehicle_upkeep_item" domainObjectName="VehicleUpkeepItem"></table>
<table tableName="vehicle_upkeep_log" domainObjectName="VehicleUpkeepLog"></table>
</context> </context>
</generatorConfiguration> </generatorConfiguration>
\ No newline at end of file
...@@ -31,17 +31,21 @@ ...@@ -31,17 +31,21 @@
<select id="selectAllByParam" resultType="com.xxfc.platform.activity.entity.IntegralRule" parameterType="com.xxfc.platform.activity.vo.IntegralRuleDto"> <select id="selectAllByParam" resultType="com.xxfc.platform.activity.entity.IntegralRule" parameterType="com.xxfc.platform.activity.vo.IntegralRuleDto">
select * from integral_rule select i1.*, i2.integral_status from integral_rule i1
left join integral_user_status i2 on i1.code = i2.integral_rule_code
<where> <where>
<if test="id != null"> <if test="id != null">
and id = #{id} and i1.id = #{id}
</if>
<if test="userId != null">
and i2.user_id = #{userId}
</if> </if>
<if test="code != null"> <if test="code != null">
and code = #{code} and i1.code = #{code}
</if> </if>
and isdel = 0 and status = 1 and i1.isdel = 0 and status = 1
</where> </where>
order by order_id DESC ,crt_time DESC order by i1.order_id DESC ,i1.crt_time DESC
</select> </select>
</mapper> </mapper>
\ No newline at end of file
...@@ -29,4 +29,13 @@ ...@@ -29,4 +29,13 @@
select * from integral_user_record select * from integral_user_record
where user_id = #{userId} and crt_time between #{startTime} and #{endTime} and integral_rule_code = #{integralRuleCode} where user_id = #{userId} and crt_time between #{startTime} and #{endTime} and integral_rule_code = #{integralRuleCode}
</select> </select>
<select id="countByUserAndCode" resultType="java.lang.Integer" parameterType="com.xxfc.platform.activity.vo.IntegralUserRecordDto">
select count(*) from integral_user_record
where user_id = #{userId} and integral_rule_code = #{integralRuleCode}
<if test="startTime != null">
and crt_time between #{startTime} and #{endTime}
</if>
</select>
</mapper> </mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.xxfc.platform.activity.mapper.IntegralUserStatusMapper" >
<resultMap id="BaseResultMap" type="com.xxfc.platform.activity.entity.IntegralUserStatus" >
<id column="id" property="id" jdbcType="INTEGER" />
<result column="integral_rule_code" property="integralRuleCode" jdbcType="VARCHAR" />
<result column="user_id" property="userId" jdbcType="INTEGER" />
<result column="integral_status" property="integralStatus" jdbcType="BIT" />
</resultMap>
<select id="selectByUserAndCode" resultType="com.xxfc.platform.activity.entity.IntegralUserStatus" parameterType="com.xxfc.platform.activity.entity.IntegralUserStatus">
select * from integral_user_status
where integral_rule_code = #{integralRuleCode} and user_id = #{userId}
</select>
</mapper>
\ No newline at end of file
...@@ -112,7 +112,7 @@ public class AppVersionBiz extends BaseBiz<AppVersionMapper,AppVersion> { ...@@ -112,7 +112,7 @@ public class AppVersionBiz extends BaseBiz<AppVersionMapper,AppVersion> {
String realFileRelPath = dirPathToday + "/"+fileName; String realFileRelPath = dirPathToday + "/"+fileName;
String filePath = uploadPath + realFileRelPath; String filePath = uploadPath + realFileRelPath;
FileUtils.copyInputStreamToFile(file.getInputStream(), new File(filePath)); FileUtils.copyInputStreamToFile(file.getInputStream(), new File(filePath));
realFileRelPath=Dev_url+realFileRelPath; // filePath=Dev_url+filePath;
return ObjectRestResponse.succ(filePath); return ObjectRestResponse.succ(filePath);
} }
......
package com.xxfc.platform.app.biz; package com.xxfc.platform.app.biz;
import com.ace.cache.annotation.Cache;
import com.ace.cache.annotation.CacheClear;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.github.wxiaoqi.security.common.msg.TableResultResponse; import com.github.wxiaoqi.security.common.msg.TableResultResponse;
import com.github.wxiaoqi.security.common.util.EntityUtils; import com.github.wxiaoqi.security.common.util.EntityUtils;
...@@ -37,11 +39,13 @@ public class CofigBiz extends BaseBiz<CofigMapper,Cofig> { ...@@ -37,11 +39,13 @@ public class CofigBiz extends BaseBiz<CofigMapper,Cofig> {
* @param cofig * @param cofig
* @return * @return
*/ */
@CacheClear(pre = "app:withdrawrule:",key = "config{1}")
public int updateConfig(Cofig cofig) { public int updateConfig(Cofig cofig) {
EntityUtils.setUpdatedInfo(cofig); EntityUtils.setUpdatedInfo(cofig);
return mapper.updateByPrimaryKeySelective(cofig); return mapper.updateByPrimaryKeySelective(cofig);
} }
@Cache(key = "app:withdrawrule:88")
public WithDrawRuleVo getWithDrawRule(){ public WithDrawRuleVo getWithDrawRule(){
WithDrawRuleVo withDrawRuleVo = new WithDrawRuleVo(); WithDrawRuleVo withDrawRuleVo = new WithDrawRuleVo();
Example example = new Example(Cofig.class); Example example = new Example(Cofig.class);
......
...@@ -12,7 +12,6 @@ import com.xxfc.platform.im.dto.PraiseVo; ...@@ -12,7 +12,6 @@ import com.xxfc.platform.im.dto.PraiseVo;
import com.xxfc.platform.im.model.Comment; import com.xxfc.platform.im.model.Comment;
import com.xxfc.platform.im.model.Msg; import com.xxfc.platform.im.model.Msg;
import com.xxfc.platform.im.model.Praise; import com.xxfc.platform.im.model.Praise;
import com.xxfc.platform.im.utils.AddressUtils;
import com.xxfc.platform.im.vo.MsgVo; import com.xxfc.platform.im.vo.MsgVo;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.bson.types.ObjectId; import org.bson.types.ObjectId;
...@@ -83,6 +82,11 @@ public class MsgBiz { ...@@ -83,6 +82,11 @@ public class MsgBiz {
} }
public ObjectRestResponse getHotMsgList(Integer page, Integer limit) { public ObjectRestResponse getHotMsgList(Integer page, Integer limit) {
AppUserDTO appUserDTO = userBiz.getUserInfo();
Integer userId = null;
if(appUserDTO != null) {
userId = appUserDTO.getImUserid();
}
log.info("获取消息列表: page = {}, limit = {}, type = {}", page, limit); log.info("获取消息列表: page = {}, limit = {}, type = {}", page, limit);
page = page == null ? 1 : page; page = page == null ? 1 : page;
limit = limit == null ? 10 : limit; limit = limit == null ? 10 : limit;
...@@ -94,7 +98,7 @@ public class MsgBiz { ...@@ -94,7 +98,7 @@ public class MsgBiz {
int totalSize = mongoTemplate.find(query, Msg.class, "s_msg").size(); int totalSize = mongoTemplate.find(query, Msg.class, "s_msg").size();
query.with(pageable); query.with(pageable);
query.with(new Sort(Sort.Direction.DESC, "count.praise")); query.with(new Sort(Sort.Direction.DESC, "count.praise"));
List<Msg> msgList = mongoTemplate.find(query, Msg.class, "s_msg"); List<Msg> msgList = fetchAndAttach(mongoTemplate.find(query, Msg.class, "s_msg"), userId);
PageInfo<MsgVo> goodPageInfo = new PageInfo<>(replaceMsgResult(msgList)); PageInfo<MsgVo> goodPageInfo = new PageInfo<>(replaceMsgResult(msgList));
goodPageInfo.setPageSize(totalSize%limit == 0 ?totalSize/limit : totalSize/limit + 1); goodPageInfo.setPageSize(totalSize%limit == 0 ?totalSize/limit : totalSize/limit + 1);
return ObjectRestResponse.succ(goodPageInfo); return ObjectRestResponse.succ(goodPageInfo);
...@@ -158,7 +162,7 @@ public class MsgBiz { ...@@ -158,7 +162,7 @@ public class MsgBiz {
public boolean exists(int userId, ObjectId msgId) { public boolean exists(int userId, ObjectId msgId) {
Query query = new Query(Criteria.where("msgId").is(msgId).and("userId").is(userId)); Query query = new Query(Criteria.where("msgId").is(msgId).and("userId").is(userId));
List<Praise> praise = mongoTemplate.find(query, Praise.class, "s_praise"); List<Praise> praise = mongoTemplate.find(query, Praise.class, "s_praise");
return 0 != praise.size(); return praise.size() > 0 ? true :false;
} }
/** /**
...@@ -171,7 +175,7 @@ public class MsgBiz { ...@@ -171,7 +175,7 @@ public class MsgBiz {
public boolean existsCollect(int userId, ObjectId msgId) { public boolean existsCollect(int userId, ObjectId msgId) {
Query query = new Query(Criteria.where("msgId").is(msgId).and("userId").is(userId)); Query query = new Query(Criteria.where("msgId").is(msgId).and("userId").is(userId));
List<Comment> comments = mongoTemplate.find(query, Comment.class, "s_comment"); List<Comment> comments = mongoTemplate.find(query, Comment.class, "s_comment");
return 0 != comments.size(); return comments.size() > 0 ? true :false;
} }
public List<MsgVo> replaceMsgResult(List<Msg> list) { public List<MsgVo> replaceMsgResult(List<Msg> list) {
...@@ -185,8 +189,8 @@ public class MsgBiz { ...@@ -185,8 +189,8 @@ public class MsgBiz {
msgVo.setNickname(imiVo.getNickname()); msgVo.setNickname(imiVo.getNickname());
msgVo.setPicUrl(imiVo.getHeadimgurl()); msgVo.setPicUrl(imiVo.getHeadimgurl());
} }
String address = AddressUtils.getMapaddress(msg.getLatitude().toString(), msg.getLongitude().toString()); //String address = AddressUtils.getMapaddress(msg.getLatitude().toString(), msg.getLongitude().toString());
msgVo.setAddress(address); msgVo.setAddress(msg.getLocation());
msgVo.setMsgId(msg.getId().toString()); msgVo.setMsgId(msg.getId().toString());
msgVoList.add(msgVo); msgVoList.add(msgVo);
} }
......
...@@ -22,7 +22,7 @@ public class ImCommentController { ...@@ -22,7 +22,7 @@ public class ImCommentController {
return imCommentBiz.add(imComment); return imCommentBiz.add(imComment);
} }
@DeleteMapping(value = "/delete") @PostMapping(value = "/delete")
@ApiOperation(value = "删除评论") @ApiOperation(value = "删除评论")
public ObjectRestResponse deleteById(ImComment imComment) { public ObjectRestResponse deleteById(ImComment imComment) {
return imCommentBiz.deleteById(imComment); return imCommentBiz.deleteById(imComment);
......
...@@ -22,7 +22,7 @@ public class ImPraiseController { ...@@ -22,7 +22,7 @@ public class ImPraiseController {
return imPraiseBiz.add(imPraise); return imPraiseBiz.add(imPraise);
} }
@DeleteMapping(value = "/delete") @PostMapping(value = "/delete")
@ApiOperation(value = "取消点赞") @ApiOperation(value = "取消点赞")
public ObjectRestResponse deleteById(ImPraiseDto imPraiseDto) { public ObjectRestResponse deleteById(ImPraiseDto imPraiseDto) {
return imPraiseBiz.deleteById(imPraiseDto); return imPraiseBiz.deleteById(imPraiseDto);
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
<select id="selectByQuestionId" resultType="com.xxfc.platform.im.entity.ImComment" parameterType="java.lang.Long"> <select id="selectByQuestionId" resultType="com.xxfc.platform.im.entity.ImComment" parameterType="java.lang.Long">
select * from im_comment select * from im_comment
where question_id = #{questionId} and is_del = 0 where question_id = #{questionId} and is_del = 0
order by upd_time order by time DESC
</select> </select>
</mapper> </mapper>
\ No newline at end of file
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
<select id="selectByQuestionId" resultType="com.xxfc.platform.im.entity.ImPraise" parameterType="java.lang.Long"> <select id="selectByQuestionId" resultType="com.xxfc.platform.im.entity.ImPraise" parameterType="java.lang.Long">
select * from im_praise select * from im_praise
where question_id = #{questionId} and is_del = 0 and visible = 1 where question_id = #{questionId} and is_del = 0 and visible = 1
order by upd_time order by time DESC
</select> </select>
<select id="selectByQuestionIdAndTime" resultType="com.xxfc.platform.im.entity.ImPraise" parameterType="com.xxfc.platform.im.dto.ImPraiseDto"> <select id="selectByQuestionIdAndTime" resultType="com.xxfc.platform.im.entity.ImPraise" parameterType="com.xxfc.platform.im.dto.ImPraiseDto">
......
package com.xxfc.platform.order.entity; package com.xxfc.platform.order.entity;
import java.io.Serializable; import com.github.wxiaoqi.security.admin.vo.AppUserVo;
import java.util.Date;
import javax.persistence.*;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import javax.persistence.*;
import java.io.Serializable;
import java.util.List;
/** /**
* 旅游订单详情 * 旅游订单详情
...@@ -241,4 +243,7 @@ public class OrderTourDetail implements Serializable { ...@@ -241,4 +243,7 @@ public class OrderTourDetail implements Serializable {
@Column(name = "is_outside") @Column(name = "is_outside")
@ApiModelProperty(value = "是否省外 1--省外;0--省内") @ApiModelProperty(value = "是否省外 1--省外;0--省内")
private Integer isOutside; private Integer isOutside;
@Transient
private List<AppUserVo> userVoList;
} }
package com.xxfc.platform.order.pojo.pay;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class NotifyUrlDTO {
public static final int TYPE_APP = 1;
public static final int TYPE_WX = 2;
//订单号
@ApiModelProperty(value = "订单号")
private String orderNo;
//订单号
@ApiModelProperty(value = "支付订单(流水)号")
private String tradeNo;
//支付类型
@ApiModelProperty(value = "支付类型")
private Integer type;
}
\ No newline at end of file
...@@ -6,6 +6,7 @@ import cn.hutool.json.JSONUtil; ...@@ -6,6 +6,7 @@ import cn.hutool.json.JSONUtil;
import com.github.wxiaoqi.security.admin.dto.UserMemberDTO; import com.github.wxiaoqi.security.admin.dto.UserMemberDTO;
import com.github.wxiaoqi.security.admin.feign.UserFeign; import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO; import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
import com.github.wxiaoqi.security.admin.vo.AppUserVo;
import com.github.wxiaoqi.security.common.biz.BaseBiz; import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.exception.BaseException; import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse; import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
...@@ -36,7 +37,6 @@ import lombok.extern.slf4j.Slf4j; ...@@ -36,7 +37,6 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.jexl2.MapContext; import org.apache.commons.jexl2.MapContext;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
...@@ -137,11 +137,12 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> { ...@@ -137,11 +137,12 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
* @return * @return
*/ */
public ObjectRestResponse getOrderDetail(String no) { public ObjectRestResponse getOrderDetail(String no) {
OrderPageVO orderPageVo = mapper.getOrderDetail(no); OrderPageVO orderPageVo = mapper.getOrderDetail(no);
if(orderPageVo == null) { if(orderPageVo == null) {
return ObjectRestResponse.createDefaultFail(); return ObjectRestResponse.createFailedResult(3501, "订单不存在");
} }
if(orderPageVo.getOrderRentVehicleDetail() != null) {
if(orderPageVo.getStatus() == 4) { //未交车 if(orderPageVo.getStatus() == 4) { //未交车
List<VehicleUserLicense> vehicleUserLicenses = Lists.newArrayList(); List<VehicleUserLicense> vehicleUserLicenses = Lists.newArrayList();
...@@ -189,10 +190,25 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> { ...@@ -189,10 +190,25 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
} }
orderPageVo.setOrderVehicleCrosstownDto(orderVehicleCrosstownDto); orderPageVo.setOrderVehicleCrosstownDto(orderVehicleCrosstownDto);
} }
RestResponse<Vehicle> restResponse = vehicleFeign.findById(orderPageVo.getOrderRentVehicleDetail().getVehicleId()); RestResponse<Vehicle> restResponse = vehicleFeign.findById(orderPageVo.getOrderRentVehicleDetail().getVehicleId());
if(restResponse.getData() != null) { if(restResponse.getData() != null) {
orderPageVo.setVehicalNumberPlat(restResponse.getData().getNumberPlate()); orderPageVo.setVehicalNumberPlat(restResponse.getData().getNumberPlate());
} }
} else if(orderPageVo.getOrderTourDetail() != null) {
List<Integer> ids = Lists.newArrayList();
if(orderPageVo.getOrderTourDetail().getTourUserIds().contains(",")) {
String[] strings = orderPageVo.getOrderTourDetail().getTourUserIds().split(",");
for (int i = 0; i < strings.length; i++) {
ids.add(Integer.parseInt(StringUtils.isNotBlank(strings[i])? strings[i] : "0"));
}
} else {
ids.add(Integer.parseInt(orderPageVo.getOrderTourDetail().getTourUserIds()));
}
List<AppUserVo> list = userFeign.getByUserIds(ids).getData();
orderPageVo.getOrderTourDetail().setUserVoList(list);
}
return ObjectRestResponse.succ(orderPageVo); return ObjectRestResponse.succ(orderPageVo);
} }
...@@ -375,13 +391,17 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> { ...@@ -375,13 +391,17 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
* @param refundStatus * @param refundStatus
*/ */
public void refundSubProcess(BaseOrder baseOrder, String refundDesc, BigDecimal refundAmount, Integer refundType, Integer refundStatus) { public void refundSubProcess(BaseOrder baseOrder, String refundDesc, BigDecimal refundAmount, Integer refundType, Integer refundStatus) {
String refundTradeNo = null;
//0 小于 退款金额
if(BigDecimal.ZERO.compareTo(refundAmount) < 0) {
OrderRefundVo orv = new OrderRefundVo(){{ OrderRefundVo orv = new OrderRefundVo(){{
setAmount(baseOrder.getRealAmount().multiply(new BigDecimal("100")).intValue()); setAmount(baseOrder.getRealAmount().multiply(new BigDecimal("100")).intValue());
setOrderNo(baseOrder.getNo()); setOrderNo(baseOrder.getNo());
}}; }};
orv.setRefundDesc(refundDesc+ refundAmount.toString()); orv.setRefundDesc(refundDesc+ refundAmount.toString());
orv.setRefundAmount(refundAmount.multiply(new BigDecimal("100")).intValue()); orv.setRefundAmount(refundAmount.multiply(new BigDecimal("100")).intValue());
String refundTradeNo = thirdFeign.refund(orv).getData(); refundTradeNo = thirdFeign.refund(orv).getData();
}
//记录订单退款记录 //记录订单退款记录
Integer flag = addOrderRefund(baseOrder.getId(), refundDesc, refundAmount, refundTradeNo, refundType); Integer flag = addOrderRefund(baseOrder.getId(), refundDesc, refundAmount, refundTradeNo, refundType);
......
...@@ -28,6 +28,7 @@ import com.xxfc.platform.order.entity.BaseOrder; ...@@ -28,6 +28,7 @@ import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.entity.OrderUserLicense; import com.xxfc.platform.order.entity.OrderUserLicense;
import com.xxfc.platform.order.mqhandler.RabbitProduct; import com.xxfc.platform.order.mqhandler.RabbitProduct;
import com.xxfc.platform.order.pojo.order.*; import com.xxfc.platform.order.pojo.order.*;
import com.xxfc.platform.order.pojo.pay.NotifyUrlDTO;
import com.xxfc.platform.order.pojo.pay.OrderPayDTO; import com.xxfc.platform.order.pojo.pay.OrderPayDTO;
import com.xxfc.platform.universal.constant.DictionaryKey; import com.xxfc.platform.universal.constant.DictionaryKey;
import com.xxfc.platform.universal.entity.Dictionary; import com.xxfc.platform.universal.entity.Dictionary;
...@@ -470,19 +471,4 @@ public class BaseOrderController extends CommonBaseController implements UserRes ...@@ -470,19 +471,4 @@ public class BaseOrderController extends CommonBaseController implements UserRes
@ApiModelProperty("每页限制") @ApiModelProperty("每页限制")
Integer limit; Integer limit;
} }
@Data
public class NotifyUrlDTO {
//订单号
@ApiModelProperty(value = "订单号")
private String orderNo;
//订单号
@ApiModelProperty(value = "支付订单(流水)号")
private String tradeNo;
//支付类型
@ApiModelProperty(value = "支付类型")
private Integer type;
}
} }
...@@ -14,6 +14,7 @@ import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum; ...@@ -14,6 +14,7 @@ import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum;
import com.xxfc.platform.order.entity.BaseOrder; import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.entity.inter.OrderDetail; import com.xxfc.platform.order.entity.inter.OrderDetail;
import com.xxfc.platform.order.mqhandler.RabbitProduct; import com.xxfc.platform.order.mqhandler.RabbitProduct;
import com.xxfc.platform.order.pojo.pay.NotifyUrlDTO;
import com.xxfc.platform.order.pojo.price.OrderPriceVO; import com.xxfc.platform.order.pojo.price.OrderPriceVO;
import com.xxfc.platform.universal.entity.Dictionary; import com.xxfc.platform.universal.entity.Dictionary;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -118,8 +119,16 @@ public abstract class AbstractOrderHandle<Biz extends BaseBiz, Detail extends Or ...@@ -118,8 +119,16 @@ public abstract class AbstractOrderHandle<Biz extends BaseBiz, Detail extends Or
return v; return v;
}).collect(Collectors.toList())); }).collect(Collectors.toList()));
} }
}
//判断是否价格为0
BigDecimal realAmount = detail.getOrder().getRealAmount();
if(BigDecimal.ZERO.compareTo(realAmount) > 0) {
throw new BaseException(ResultCode.FAILED_CODE);
}else if(BigDecimal.ZERO.compareTo(realAmount) == 0) {
//直接支付
baseOrderBiz.payNotifyHandle(detail.getOrder().getNo(), null, detail.getOrderOrigin());
}
}
/** /**
* 计算价格 * 计算价格
* @param detail * @param detail
......
...@@ -46,6 +46,11 @@ public class RedisKey { ...@@ -46,6 +46,11 @@ public class RedisKey {
*/ */
public static final String BRANCH_COMPANY_CACHE_ALL = BRANCH_COMPANY_CACHE + ":all"; public static final String BRANCH_COMPANY_CACHE_ALL = BRANCH_COMPANY_CACHE + ":all";
/**
* 子公司列表缓存key前缀
*/
public static final String BRANCH_COMPANY_CACHE_DETAIL = "cache:CompanyDetail";
/** /**
* 车型分类列表缓存key前缀 * 车型分类列表缓存key前缀
*/ */
......
...@@ -187,4 +187,9 @@ public class VehicleBookRecord { ...@@ -187,4 +187,9 @@ public class VehicleBookRecord {
@Transient @Transient
private List<String> endHourList; private List<String> endHourList;
@Transient
private String startHour;
@Transient
private String endHour;
} }
\ No newline at end of file
...@@ -24,6 +24,11 @@ public class VehicleWarningMsg { ...@@ -24,6 +24,11 @@ public class VehicleWarningMsg {
*/ */
public Integer type; public Integer type;
/**
* 颜色预警:1、红色预警,2、蓝色预警、3、黄色预警
*/
private Integer colorType;
/** /**
* 消息类型,详见VehicleMsgStatus * 消息类型,详见VehicleMsgStatus
*/ */
......
...@@ -38,6 +38,8 @@ public class UsableVeicleDTO extends PageParam { ...@@ -38,6 +38,8 @@ public class UsableVeicleDTO extends PageParam {
String catasStr; String catasStr;
@ApiModelProperty(value = "分类列表", hidden = true) @ApiModelProperty(value = "分类列表", hidden = true)
Map<Integer, List<VehiclePlatCata>> catas; Map<Integer, List<VehiclePlatCata>> catas;
@ApiModelProperty("停靠公司")
String parkBranchCompanyId;
@ApiModelProperty(hidden = true) @ApiModelProperty(hidden = true)
Boolean yearNo4Where; Boolean yearNo4Where;
......
...@@ -4,7 +4,9 @@ import com.xxfc.platform.vehicle.entity.VehicleBookHourInfo; ...@@ -4,7 +4,9 @@ import com.xxfc.platform.vehicle.entity.VehicleBookHourInfo;
import com.xxfc.platform.vehicle.entity.VehicleBookRecord; import com.xxfc.platform.vehicle.entity.VehicleBookRecord;
import lombok.Data; import lombok.Data;
import java.util.List;
@Data @Data
public class VehicleBookRecordDateVo extends VehicleBookRecord { public class VehicleBookRecordVo extends VehicleBookRecord {
VehicleBookHourInfo vehicleBookHourInfo; List<VehicleBookHourInfo> vehicleBookHourInfo;
} }
...@@ -67,6 +67,10 @@ public class VehicleWarningMsgQueryVo{ ...@@ -67,6 +67,10 @@ public class VehicleWarningMsgQueryVo{
private Date createTime; private Date createTime;
private Date updateTime; private Date updateTime;
/**
* 颜色预警:1、红色预警,2、蓝色预警、3、黄色预警
*/
private Integer colorType;
VehicleWarningRule vehicleWarningRule; VehicleWarningRule vehicleWarningRule;
} }
...@@ -83,6 +83,7 @@ public class BranchCompanyBiz extends BaseBiz<BranchCompanyMapper, BranchCompany ...@@ -83,6 +83,7 @@ public class BranchCompanyBiz extends BaseBiz<BranchCompanyMapper, BranchCompany
* @param id * @param id
* @return * @return
*/ */
@Cache(key= RedisKey.BRANCH_COMPANY_CACHE)
public CompanyDetail getDetailById(Integer id) { public CompanyDetail getDetailById(Integer id) {
BranchCompany branchCompany = this.getById(id); BranchCompany branchCompany = this.getById(id);
CompanyDetail detail = null; CompanyDetail detail = null;
......
...@@ -991,10 +991,6 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> { ...@@ -991,10 +991,6 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> {
if(StrUtil.isNotBlank(dto.getStartDate()) && StrUtil.isNotBlank(dto.getEndDate())) { if(StrUtil.isNotBlank(dto.getStartDate()) && StrUtil.isNotBlank(dto.getEndDate())) {
initBookSearchParam(dto, params); initBookSearchParam(dto, params);
} }
// PageHelper.startPage(dto.getPage(), dto.getLimit());
// List<UsableVehicleModelVO> lists = mapper.searchUsableModel(params);
// PageInfo<UsableVehicleModelVO> usableVehicleModel = new PageInfo<>(lists);
// return PageDataVO.pageInfo(usableVehicleModel);
return PageDataVO.pageInfo(dto.getPage(), dto.getLimit(), () -> mapper.searchUsableModel(params)); return PageDataVO.pageInfo(dto.getPage(), dto.getLimit(), () -> mapper.searchUsableModel(params));
} }
...@@ -1161,46 +1157,32 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> { ...@@ -1161,46 +1157,32 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> {
public PageDataVO<VehicleAndModelInfoVo> getAllVehicle(VehiclePlanDto vehiclePlanDto) { public PageDataVO<VehicleAndModelInfoVo> getAllVehicle(VehiclePlanDto vehiclePlanDto) {
Query query = new Query(vehiclePlanDto); Query query = new Query(vehiclePlanDto);
PageDataVO<VehicleAndModelInfoVo> pageDataVO = PageDataVO.pageInfo(query, () -> mapper.getAllVehicle(query.getSuper())); PageDataVO<VehicleAndModelInfoVo> pageDataVO = PageDataVO.pageInfo(query, () -> mapper.getAllVehicle(query.getSuper()));
for(VehicleAndModelInfoVo vehicleAndModelInfoVo : pageDataVO.getData()) { // for(VehicleAndModelInfoVo vehicleAndModelInfoVo : pageDataVO.getData()) {
//获取时间 // //获取时间
if(vehicleAndModelInfoVo.getVehicleBookRecord() != null) { // if(vehicleAndModelInfoVo.getVehicleBookRecord() != null) {
for(VehicleBookRecord vehicleBookRecord : vehicleAndModelInfoVo.getVehicleBookRecord()) { // for(VehicleBookRecord vehicleBookRecord : vehicleAndModelInfoVo.getVehicleBookRecord()) {
VehicleBookHourInfoDto vehicleBookHourInfoDto = new VehicleBookHourInfoDto(); // VehicleBookHourInfoDto vehicleBookHourInfoDto = new VehicleBookHourInfoDto();
vehicleBookHourInfoDto.setVehicleId(vehicleBookRecord.getVehicleId()); // vehicleBookHourInfoDto.setVehicleId(vehicleBookRecord.getVehicleId());
vehicleBookHourInfoDto.setBookRecordId(vehicleBookRecord.getId()); // vehicleBookHourInfoDto.setBookRecordId(vehicleBookRecord.getId());
vehicleBookHourInfoDto.setYearMonthDay(new DateTime(vehicleBookRecord.getBookStartDate()).toString(DEFAULT_DATE_TIME_FORMATTER)); // vehicleBookHourInfoDto.setYearMonthDay(new DateTime(vehicleBookRecord.getBookStartDate()).toString(DEFAULT_DATE_TIME_FORMATTER));
VehicleBookHourInfo startVehicleBookHourInfo = vehicleBookHourInfoBiz.selectByVehicleAndId(vehicleBookHourInfoDto); // VehicleBookHourInfo startVehicleBookHourInfo = vehicleBookHourInfoBiz.selectByVehicleAndId(vehicleBookHourInfoDto);
vehicleBookHourInfoDto.setYearMonthDay(new DateTime(vehicleBookRecord.getBookEndDate()).toString(DEFAULT_DATE_TIME_FORMATTER)); // vehicleBookHourInfoDto.setYearMonthDay(new DateTime(vehicleBookRecord.getBookEndDate()).toString(DEFAULT_DATE_TIME_FORMATTER));
VehicleBookHourInfo endVehicleBookHourInfo = vehicleBookHourInfoBiz.selectByVehicleAndId(vehicleBookHourInfoDto); // VehicleBookHourInfo endVehicleBookHourInfo = vehicleBookHourInfoBiz.selectByVehicleAndId(vehicleBookHourInfoDto);
if(startVehicleBookHourInfo != null ) { // if(startVehicleBookHourInfo != null ) {
String result = Integer.toBinaryString(startVehicleBookHourInfo.getBookedHour()); // String result = Integer.toBinaryString(startVehicleBookHourInfo.getBookedHour());
if(StringUtils.isNotBlank(result)) { // if(StringUtils.isNotBlank(result)) {
vehicleBookRecord.setStartHourList(getHourList(result)); // vehicleBookRecord.setStartHour(result);
} // }
} // }
if(endVehicleBookHourInfo != null ) { // if(endVehicleBookHourInfo != null ) {
String result = Integer.toBinaryString(endVehicleBookHourInfo.getBookedHour()); // String result = Integer.toBinaryString(endVehicleBookHourInfo.getBookedHour());
if(StringUtils.isNotBlank(result)) { // if(StringUtils.isNotBlank(result)) {
vehicleBookRecord.setEndHourList(getHourList(result)); // vehicleBookRecord.setEndHour(result);
} // }
} // }
} // }
} // }
// }
CompanyDetail partCompany = branchCompanyBiz.getDetailById(vehicleAndModelInfoVo.getParkBranchCompanyId());
if(partCompany != null) {
vehicleAndModelInfoVo.setParkCompanyName(partCompany.getName());
}
CompanyDetail subCompany = branchCompanyBiz.getDetailById(vehicleAndModelInfoVo.getSubordinateBranch());
if(subCompany != null) {
vehicleAndModelInfoVo.setSubordinateBranchName(subCompany.getName());
}
CompanyDetail disCompany = branchCompanyBiz.getDetailById(vehicleAndModelInfoVo.getExpectDestinationBranchCompanyId());
if(disCompany != null) {
vehicleAndModelInfoVo.setDestinationBranchCompanyName(disCompany.getName());
}
}
return pageDataVO; return pageDataVO;
} }
......
package com.xxfc.platform.vehicle.biz; package com.xxfc.platform.vehicle.biz;
import com.ace.cache.annotation.Cache;
import com.ace.cache.annotation.CacheClear;
import com.github.wxiaoqi.security.common.biz.BaseBiz; import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse; import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
...@@ -26,6 +28,7 @@ public class VehicleBookHourInfoBiz extends BaseBiz<VehicleBookHourInfoMapper, V ...@@ -26,6 +28,7 @@ public class VehicleBookHourInfoBiz extends BaseBiz<VehicleBookHourInfoMapper, V
public static final DateTimeFormatter DEFAULT_DATE_TIME_FORMATTER = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss"); public static final DateTimeFormatter DEFAULT_DATE_TIME_FORMATTER = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
public static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormat.forPattern("yyyy-MM-dd"); public static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormat.forPattern("yyyy-MM-dd");
public static Map<String, Integer> getPredictableHours(String bookStartdate, String bookEndDate) { public static Map<String, Integer> getPredictableHours(String bookStartdate, String bookEndDate) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date startDate = null; Date startDate = null;
...@@ -77,11 +80,18 @@ public class VehicleBookHourInfoBiz extends BaseBiz<VehicleBookHourInfoMapper, V ...@@ -77,11 +80,18 @@ public class VehicleBookHourInfoBiz extends BaseBiz<VehicleBookHourInfoMapper, V
return mapper.selectByVehicleAndDate(vehicleBookHourInfoDto); return mapper.selectByVehicleAndDate(vehicleBookHourInfoDto);
} }
@Cache(key = "vehicle.hourInfo")
public VehicleBookHourInfo selectByVehicleAndId(VehicleBookHourInfoDto vehicleBookHourInfoDto) { public VehicleBookHourInfo selectByVehicleAndId(VehicleBookHourInfoDto vehicleBookHourInfoDto) {
return mapper.selectByVehicleAndId(vehicleBookHourInfoDto); return mapper.selectByVehicleAndId(vehicleBookHourInfoDto);
} }
@Cache(key = "vehicle.hourInfo")
public List<VehicleBookHourInfo> getAll() {
return mapper.selectAll();
}
@Transactional @Transactional
@CacheClear(key = "vehicle.hourInfo")
public ObjectRestResponse save(VehicleBookHourInfoDto vehicleBookHourInfoDto) { public ObjectRestResponse save(VehicleBookHourInfoDto vehicleBookHourInfoDto) {
if(vehicleBookHourInfoDto == null) { if(vehicleBookHourInfoDto == null) {
return ObjectRestResponse.createFailedResult(502, "参数为空"); return ObjectRestResponse.createFailedResult(502, "参数为空");
...@@ -111,6 +121,7 @@ public class VehicleBookHourInfoBiz extends BaseBiz<VehicleBookHourInfoMapper, V ...@@ -111,6 +121,7 @@ public class VehicleBookHourInfoBiz extends BaseBiz<VehicleBookHourInfoMapper, V
* @return * @return
*/ */
@Transactional @Transactional
@CacheClear(key = "vehicle.hourInfo")
public ObjectRestResponse delete(String vehicleId, List<String> dateList) { public ObjectRestResponse delete(String vehicleId, List<String> dateList) {
if(StringUtils.isBlank(vehicleId) || dateList.size() <= 0) { if(StringUtils.isBlank(vehicleId) || dateList.size() <= 0) {
return ObjectRestResponse.createFailedResult(502, "删除信息车辆Id为空"); return ObjectRestResponse.createFailedResult(502, "删除信息车辆Id为空");
......
...@@ -13,4 +13,6 @@ public interface VehicleBookHourInfoMapper extends Mapper<VehicleBookHourInfo> { ...@@ -13,4 +13,6 @@ public interface VehicleBookHourInfoMapper extends Mapper<VehicleBookHourInfo> {
List<VehicleBookHourInfo> selectByVehicleAndDateList(Map<String, Object> param); List<VehicleBookHourInfo> selectByVehicleAndDateList(Map<String, Object> param);
VehicleBookHourInfo selectByVehicleAndId(VehicleBookHourInfoDto vehicleBookHourInfoDto); VehicleBookHourInfo selectByVehicleAndId(VehicleBookHourInfoDto vehicleBookHourInfoDto);
List<VehicleBookHourInfo> selectByBookRecordId(Integer bookVehicleId);
} }
\ No newline at end of file
...@@ -26,7 +26,7 @@ public class VehicleActiveController { ...@@ -26,7 +26,7 @@ public class VehicleActiveController {
* *
* @return * @return
*/ */
@PostMapping("departure") @PostMapping("/departure")
public RestResponse departure(@RequestBody VehicleDepartureVo departureVo) { public RestResponse departure(@RequestBody VehicleDepartureVo departureVo) {
if (departureVo == null || departureVo.getVehicleId() == null if (departureVo == null || departureVo.getVehicleId() == null
|| departureVo.getMileage() == null || departureVo.getDepartureBranchCompanyId() == null || departureVo.getMileage() == null || departureVo.getDepartureBranchCompanyId() == null
......
...@@ -125,7 +125,7 @@ public class VehicleCataController extends VehicleBaseController<VehiclePlatCata ...@@ -125,7 +125,7 @@ public class VehicleCataController extends VehicleBaseController<VehiclePlatCata
* @return * @return
*/ */
@PostMapping("/add/updateAndAdd") @PostMapping("/add/updateAndAdd")
public ObjectRestResponse updateAndAdd(@RequestBody Cascade<VehiclePlatCata> cas){ public ObjectRestResponse save(@RequestBody Cascade<VehiclePlatCata> cas){
return baseBiz.updateAndAdd(cas); return baseBiz.updateAndAdd(cas);
} }
......
...@@ -422,19 +422,46 @@ public class VehicleController extends BaseController<VehicleBiz> { ...@@ -422,19 +422,46 @@ public class VehicleController extends BaseController<VehicleBiz> {
@IgnoreClientToken @IgnoreClientToken
@IgnoreUserToken @IgnoreUserToken
public ObjectRestResponse<Map<String, Object>> getVehiclePlanList(VehiclePlanDto vehiclePlanDto) { public ObjectRestResponse<Map<String, Object>> getVehiclePlanList(VehiclePlanDto vehiclePlanDto) {
//获取列表
PageDataVO<VehicleAndModelInfoVo> pageDataVO = baseBiz.getAllVehicle(vehiclePlanDto);
//获取警告信息
List<VehicleWarningMsgQueryVo> vehicleWarningMsgs = vehicleWarningMsgBiz.getAllByParam(vehiclePlanDto);
//获取统计信息 //获取统计信息
List<VehicleCountVo> vehicleCountVos = baseBiz.countVehicleByParam(vehiclePlanDto); List<VehicleCountVo> vehicleCountVos = baseBiz.countVehicleByParam(vehiclePlanDto);
//获取列表
Map<String, Object> map = Maps.newHashMap();
map.put("vehicleWarningMsgs",vehicleWarningMsgs);
map.put("vehicleAndModelInfoVo",pageDataVO);
map.put("vehicleCountVos",vehicleCountVos);
return ObjectRestResponse.succ(map);
}
@RequestMapping(value = "/app/unauth/getVehicleWarningMsg", method = RequestMethod.GET)
@ApiOperation(value = "获取排车车辆警告信息")
@IgnoreClientToken
@IgnoreUserToken
public ObjectRestResponse<Map<String, Object>> getVehicleWarningMsg(VehiclePlanDto vehiclePlanDto) {
//获取警告信息 //获取警告信息
List<VehicleWarningMsgQueryVo> vehicleWarningMsgs = vehicleWarningMsgBiz.getAllByParam(vehiclePlanDto); List<VehicleWarningMsgQueryVo> vehicleWarningMsgs = vehicleWarningMsgBiz.getAllByParam(vehiclePlanDto);
//获取列表 //获取列表
PageDataVO<VehicleAndModelInfoVo> pageDataVO = baseBiz.getAllVehicle(vehiclePlanDto);
Map<String, Object> map = Maps.newHashMap(); Map<String, Object> map = Maps.newHashMap();
map.put("vehicleCountVos",vehicleCountVos);
map.put("vehicleWarningMsgs",vehicleWarningMsgs); map.put("vehicleWarningMsgs",vehicleWarningMsgs);
map.put("vehicleAndModelInfoVo",pageDataVO);
return ObjectRestResponse.succ(map); return ObjectRestResponse.succ(map);
} }
@RequestMapping(value = "/app/unauth/getVehicleTotalMsg", method = RequestMethod.GET)
@ApiOperation(value = "获取排车车辆统计信息")
@IgnoreClientToken
@IgnoreUserToken
public ObjectRestResponse<Map<String, Object>> getVehicleTotalMsg(VehiclePlanDto vehiclePlanDto) {
//获取统计信息
List<VehicleCountVo> vehicleCountVos = baseBiz.countVehicleByParam(vehiclePlanDto);
//获取列表
Map<String, Object> map = Maps.newHashMap();
map.put("vehicleCountVos",vehicleCountVos);
return ObjectRestResponse.succ(map);
}
/** /**
* 保存 * 保存
......
...@@ -9,14 +9,14 @@ ...@@ -9,14 +9,14 @@
<property name="path" value="logs"></property> <property name="path" value="logs"></property>
<property name="maxHistory" value="30"/> <property name="maxHistory" value="30"/>
<property name="maxFileSize" value="50MB"/> <property name="maxFileSize" value="50MB"/>
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
<conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
<conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
<property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>debug</level>
</filter>
<encoder> <encoder>
<pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
</pattern> <charset>UTF-8</charset> <!-- 设置字符集 -->
</encoder> </encoder>
</appender> </appender>
...@@ -32,8 +32,7 @@ ...@@ -32,8 +32,7 @@
</timeBasedFileNamingAndTriggeringPolicy> </timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy> </rollingPolicy>
<encoder> <encoder>
<pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
</pattern>
</encoder> </encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter"> <filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>DEBUG</level> <level>DEBUG</level>
...@@ -54,8 +53,7 @@ ...@@ -54,8 +53,7 @@
</timeBasedFileNamingAndTriggeringPolicy> </timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy> </rollingPolicy>
<encoder> <encoder>
<pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
</pattern>
</encoder> </encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter"> <filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level> <level>INFO</level>
...@@ -76,8 +74,7 @@ ...@@ -76,8 +74,7 @@
</timeBasedFileNamingAndTriggeringPolicy> </timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy> </rollingPolicy>
<encoder> <encoder>
<pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
</pattern>
</encoder> </encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter"> <filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>WARN</level> <level>WARN</level>
...@@ -99,8 +96,7 @@ ...@@ -99,8 +96,7 @@
</timeBasedFileNamingAndTriggeringPolicy> </timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy> </rollingPolicy>
<encoder> <encoder>
<pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
</pattern>
</encoder> </encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter"> <filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level> <level>ERROR</level>
......
...@@ -21,6 +21,10 @@ ...@@ -21,6 +21,10 @@
select * from vehicle_book_hour_info select * from vehicle_book_hour_info
where vehicle_id = #{vehicleId} and book_record_id = #{bookRecordId} and year_month_day = #{yearMonthDay} where vehicle_id = #{vehicleId} and book_record_id = #{bookRecordId} and year_month_day = #{yearMonthDay}
</select> </select>
<select id="selectByBookRecordId" parameterType="java.lang.Integer" resultType="com.xxfc.platform.vehicle.entity.VehicleBookHourInfo">
select * from vehicle_book_hour_info
where book_record_id = #{bookRecordId}
</select>
<select id="selectByVehicleAndDateList" parameterType="java.util.Map" resultType="com.xxfc.platform.vehicle.entity.VehicleBookHourInfo"> <select id="selectByVehicleAndDateList" parameterType="java.util.Map" resultType="com.xxfc.platform.vehicle.entity.VehicleBookHourInfo">
select * from vehicle_book_hour_info select * from vehicle_book_hour_info
where vehicle_id = #{vehicleId} and year_month_day in where vehicle_id = #{vehicleId} and year_month_day in
......
...@@ -6,6 +6,10 @@ ...@@ -6,6 +6,10 @@
<association property="vehicle" column="vehicle_id" select="com.xxfc.platform.vehicle.mapper.VehicleMapper.selectById" /> <association property="vehicle" column="vehicle_id" select="com.xxfc.platform.vehicle.mapper.VehicleMapper.selectById" />
</resultMap> </resultMap>
<resultMap id="getVehicleHourMap" type="com.xxfc.platform.vehicle.pojo.VehicleBookRecordVo">
<association property="vehicleBookHourInfo" column="id" select="com.xxfc.platform.vehicle.mapper.VehicleBookHourInfoMapper.selectByBookRecordId" />
</resultMap>
<update id="changeRecordStatus" parameterType="java.util.Map"> <update id="changeRecordStatus" parameterType="java.util.Map">
update vehicle_book_record set update vehicle_book_record set
<if test="reviewerApply != null "> <if test="reviewerApply != null ">
...@@ -119,7 +123,8 @@ ...@@ -119,7 +123,8 @@
mileage_lift, mileage_lift,
mileage_ret, mileage_ret,
have_violation, have_violation,
ret_remark ret_remark,
order_no
) )
values( values(
#{id}, #{id},
...@@ -151,7 +156,8 @@ ...@@ -151,7 +156,8 @@
#{mileageLift}, #{mileageLift},
#{mileageRet}, #{mileageRet},
#{haveViolation}, #{haveViolation},
#{retRemark} #{retRemark},
#{orderNo}
); );
</insert> </insert>
...@@ -188,7 +194,8 @@ ...@@ -188,7 +194,8 @@
mileage_lift, mileage_lift,
mileage_ret, mileage_ret,
have_violation, have_violation,
ret_remark ret_remark,
order_no
from from
vehicle_book_record vehicle_book_record
where where
...@@ -233,6 +240,7 @@ ...@@ -233,6 +240,7 @@
vbr.mileage_ret, vbr.mileage_ret,
vbr.have_violation, vbr.have_violation,
vbr.ret_remark, vbr.ret_remark,
vbr.order_no,
v.`code` as vehicleCode, v.`code` as vehicleCode,
v.number_plate as numberPlate, v.number_plate as numberPlate,
v.subordinate_branch, v.subordinate_branch,
...@@ -324,48 +332,17 @@ ...@@ -324,48 +332,17 @@
vbr.mileage_lift, vbr.mileage_lift,
vbr.mileage_ret, vbr.mileage_ret,
vbr.have_violation, vbr.have_violation,
vbr.ret_remark vbr.ret_remark,
vbr.order_no
from ${tbName} vbr from ${tbName} vbr
where id = #{id} where id = #{id}
</select> </select>
<select id="getByVehicleId" parameterType="java.lang.String" resultType="com.xxfc.platform.vehicle.entity.VehicleBookRecord" > <select id="getByVehicleId" parameterType="java.lang.String" resultType="com.xxfc.platform.vehicle.entity.VehicleBookRecord" >
select SELECT v1.*, conv(v2.booked_hour,10,2) startHour,conv(v3.booked_hour,10,2) endHour from vehicle_book_record v1
vbr.`id`, LEFT JOIN vehicle_book_hour_info v2 on v2.book_record_id = v1.id and YEAR(v2.year_month_day) = YEAR(v1.book_start_date) AND MONTH(v2.year_month_day) = MONTH(v1.book_start_date) AND DAY(v2.year_month_day) =DAY(v1.book_start_date)
vbr.`vehicle_id`, LEFT JOIN vehicle_book_hour_info v3 on v3.book_record_id = v1.id and YEAR(v3.year_month_day) = YEAR(v1.book_end_date) AND MONTH(v3.year_month_day) = MONTH(v1.book_end_date) AND DAY(v3.year_month_day) =DAY(v1.book_end_date)
vbr.`status`, where v1.vehicle_id = #{vehicleId}
vbr.`book_type`,
vbr.`book_user`,
vbr.`book_user_name`,
vbr.`contact_info`,
vbr.`book_start_date`,
vbr.`book_end_date`,
vbr.`lift_location`,
vbr.`lift_addr`,
vbr.`remark`,
vbr.`create_time`,
vbr.`update_time`,
vbr.`destination`,
vbr.`reviewer_apply`,
vbr.`reviewer_name_apply`,
vbr.`reviewer_return`,
vbr.`reviewer_name_return`,
vbr.`reviewer_cancel`,
vbr.`reviewer_name_cancel`,
vbr.`actual_start_date`,
vbr.`actual_end_date`,
vbr.`reviewer_lift`,
vbr.`reviewer_name_lift`,
vbr.lift_company,
vbr.lift_remark,
vbr.ret_company,
vbr.mileage_lift,
vbr.mileage_ret,
vbr.have_violation,
vbr.ret_remark
from vehicle_book_record vbr
where vehicle_id = #{vehicleId}
</select> </select>
<select id="getByParam" parameterType="java.util.Map" resultMap="getVehicleMap"> <select id="getByParam" parameterType="java.util.Map" resultMap="getVehicleMap">
select v1.* from vehicle_book_record v1 select v1.* from vehicle_book_record v1
...@@ -421,6 +398,7 @@ ...@@ -421,6 +398,7 @@
`ret_remark` varchar(2000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '还车备注', `ret_remark` varchar(2000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '还车备注',
`reviewer_lift` int(10) NULL DEFAULT NULL COMMENT '提车审核人', `reviewer_lift` int(10) NULL DEFAULT NULL COMMENT '提车审核人',
`reviewer_name_lift` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '提车审核人姓名', `reviewer_name_lift` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '提车审核人姓名',
`order_no` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '订单号',
`mileage_lift` int(10) NULL DEFAULT NULL COMMENT '提车里程数', `mileage_lift` int(10) NULL DEFAULT NULL COMMENT '提车里程数',
`mileage_ret` int(10) NULL DEFAULT NULL COMMENT '还车里程数', `mileage_ret` int(10) NULL DEFAULT NULL COMMENT '还车里程数',
`have_violation` tinyint(4) NULL DEFAULT NULL COMMENT '是否违章', `have_violation` tinyint(4) NULL DEFAULT NULL COMMENT '是否违章',
......
...@@ -421,10 +421,12 @@ ...@@ -421,10 +421,12 @@
</if> </if>
</select> </select>
<select id="getAllVehicle" parameterType="java.util.Map" resultMap="searchModel"> <select id="getAllVehicle" parameterType="java.util.Map" resultMap="searchModel">
select * select v1.*, bc2.name subordinateBranchName, bc3.name parkCompanyName, bc4.name destinationBranchCompanyName
from vehicle v1 from vehicle v1
-- 所属分公司 -- 所属分公司
LEFT JOIN branch_company bc2 ON v1.subordinate_branch = bc2.id LEFT JOIN branch_company bc2 ON v1.subordinate_branch = bc2.id
LEFT JOIN branch_company bc3 ON v1.park_branch_company_id = bc3.id
LEFT JOIN branch_company bc4 ON v1.expect_destination_branch_company_id = bc4.id
<where> <where>
<if test="startTime != null"> <if test="startTime != null">
and v1.create_time between #{startTime} and #{endTime} and v1.create_time between #{startTime} and #{endTime}
...@@ -559,6 +561,9 @@ ...@@ -559,6 +561,9 @@
<if test=" hotSign != null "> <if test=" hotSign != null ">
and vm.hot_sign = #{hotSign} and vm.hot_sign = #{hotSign}
</if> </if>
<if test=" parkBranchCompanyId != null ">
and v.park_branch_company_id = #{parkBranchCompanyId}
</if>
</where> </where>
</sql> </sql>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment