Commit 855df759 authored by libin's avatar libin

会员订单列表

parent 6c1d788d
package com.github.wxiaoqi.security.admin.bo;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;
import java.io.Serializable;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/10/30 17:42
*/
@Data
public class UserBo implements Serializable {
private static final long serialVersionUID = 1L;
@JSONField(serialize = false)
private String orderNo;
private Integer userId;
private String phone;
private String name;
private String leaderName;
private String leaderPhone;
private Integer facilitateId;
private String facilitateName;
}
package com.github.wxiaoqi.security.admin.feign; package com.github.wxiaoqi.security.admin.feign;
import com.github.wxiaoqi.security.admin.bo.UserBo;
import com.github.wxiaoqi.security.admin.dto.UserMemberDTO; import com.github.wxiaoqi.security.admin.dto.UserMemberDTO;
import com.github.wxiaoqi.security.admin.entity.AppUserLogin; import com.github.wxiaoqi.security.admin.entity.AppUserLogin;
import com.github.wxiaoqi.security.admin.entity.BaseUserMemberLevel; import com.github.wxiaoqi.security.admin.entity.BaseUserMemberLevel;
...@@ -129,4 +130,12 @@ public interface UserFeign { ...@@ -129,4 +130,12 @@ public interface UserFeign {
@GetMapping("/app/user/finduserIdsByphones") @GetMapping("/app/user/finduserIdsByphones")
Map<String, Integer> findAppusersByUserNames(@RequestParam(value = "phones") List<String> phones); Map<String, Integer> findAppusersByUserNames(@RequestParam(value = "phones") List<String> phones);
@GetMapping(value = "/app/user/users")
List<Integer> findAppUserIds(@RequestParam(value = "phone",required = false) String phone,
@RequestParam(value = "leaderPhone",required = false) String leaderPhone,
@RequestParam(value = "name",required = false) String name);
@PostMapping(value = "/app/user/users/info")
List<UserBo> findUserDetailByUserBo(@RequestBody(required = false) List<UserBo> userBos);
} }
...@@ -4,8 +4,10 @@ import com.ace.cache.annotation.Cache; ...@@ -4,8 +4,10 @@ import com.ace.cache.annotation.Cache;
import com.ace.cache.annotation.CacheClear; import com.ace.cache.annotation.CacheClear;
import com.alibaba.druid.sql.visitor.functions.If; import com.alibaba.druid.sql.visitor.functions.If;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.github.wxiaoqi.security.admin.bo.UserBo;
import com.github.wxiaoqi.security.admin.entity.AppUserDetail; import com.github.wxiaoqi.security.admin.entity.AppUserDetail;
import com.github.wxiaoqi.security.admin.entity.AppUserLogin; import com.github.wxiaoqi.security.admin.entity.AppUserLogin;
import com.github.wxiaoqi.security.admin.entity.AppUserRelation;
import com.github.wxiaoqi.security.admin.mapper.AppUserLoginMapper; import com.github.wxiaoqi.security.admin.mapper.AppUserLoginMapper;
import com.github.wxiaoqi.security.common.biz.BaseBiz; import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.config.rabbit.RabbitConstant; import com.github.wxiaoqi.security.common.config.rabbit.RabbitConstant;
...@@ -25,9 +27,7 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -25,9 +27,7 @@ import org.springframework.transaction.annotation.Transactional;
import tk.mybatis.mapper.entity.Example; import tk.mybatis.mapper.entity.Example;
import java.time.Instant; import java.time.Instant;
import java.util.HashMap; import java.util.*;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
import java.util.function.Function; import java.util.function.Function;
...@@ -54,6 +54,10 @@ public class AppUserLoginBiz extends BaseBiz<AppUserLoginMapper, AppUserLogin> { ...@@ -54,6 +54,10 @@ public class AppUserLoginBiz extends BaseBiz<AppUserLoginMapper, AppUserLogin> {
@Autowired @Autowired
AppUserDetailBiz appUserDetailBiz; AppUserDetailBiz appUserDetailBiz;
@Autowired
private AppUserRelationBiz appUserRelationBiz;
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED) @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
@Override @Override
public void insertSelective(AppUserLogin entity) { public void insertSelective(AppUserLogin entity) {
...@@ -321,9 +325,65 @@ public class AppUserLoginBiz extends BaseBiz<AppUserLoginMapper, AppUserLogin> { ...@@ -321,9 +325,65 @@ public class AppUserLoginBiz extends BaseBiz<AppUserLoginMapper, AppUserLogin> {
} }
public List<AppUserLogin> getUserByUsernameAndRealName(String username, String realName) { public List<AppUserLogin> getUserByUsernameAndRealName(String username, String realName) {
return mapper.getUserByUsernameAndRealName(username,realName);
return mapper.getUserByUsernameAndRealName(username, realName);
}
public List<Integer> findAppuser(String phone, String leaderPhone, String name) {
List<Integer> memberIds = null;
//1.根据leader手机号查询userid
List<AppUserLogin> appUserLogins = mapper.selectbyPhones(Arrays.asList(leaderPhone));
Integer leaderId = null;
if (CollectionUtils.isNotEmpty(appUserLogins)) {
leaderId = appUserLogins.get(0).getId();
}
//2.根据leader userId查询下级 userid
if (Objects.nonNull(leaderId)) {
List<AppUserRelation> appUserRelationList = appUserRelationBiz.findMemberPageByLeaderId(leaderId);
memberIds = appUserRelationList.stream().map(AppUserRelation::getUserId).collect(Collectors.toList());
}
List<Integer> userIds = mapper.findAppUser(phone, name, memberIds);
return userIds==null?Collections.EMPTY_LIST:userIds;
}
public List<UserBo> findUserDetailInfo(List<UserBo> userBos) {
Map<Integer, Integer> userIdAndFacilitateIdMap = userBos.stream().filter(x->Objects.nonNull(x.getFacilitateId())).collect(Collectors.toMap(UserBo::getUserId, UserBo::getFacilitateId));
List<Integer> userIdList = userBos.stream().map(UserBo::getUserId).distinct().collect(Collectors.toList());
//查询上级人
List<AppUserRelation> appUserRelationList = appUserRelationBiz.findLeaderByUserIds(userIdList);
Map<Integer, Integer> memberIdAndParentMap = appUserRelationList.stream().collect(Collectors.toMap(AppUserRelation::getUserId, AppUserRelation::getParentId));
List<Integer> uids = new ArrayList<>();
uids.addAll(userIdAndFacilitateIdMap==null?Collections.EMPTY_LIST:userIdList);
uids.addAll(userIdAndFacilitateIdMap==null?Collections.EMPTY_LIST:userIdAndFacilitateIdMap.values());
uids.addAll(memberIdAndParentMap==null?Collections.EMPTY_LIST:memberIdAndParentMap.values());
List<UserBo> userBoList = mapper.selectByUserIds(uids);
Map<Integer, UserBo> userMap = userBoList==null?Collections.EMPTY_MAP:userBoList.stream().collect(Collectors.toMap(UserBo::getUserId, Function.identity()));
if (userMap.isEmpty()){
return Collections.EMPTY_LIST;
}
for (UserBo userBo : userBos) {
UserBo bo = userMap.get(userBo.getUserId());
if (Objects.nonNull(bo)) {
userBo.setPhone(bo.getPhone());
userBo.setName(bo.getName());
}
Integer leaderId = memberIdAndParentMap.get(userBo.getUserId());
UserBo leader = userMap.get(leaderId);
if (Objects.nonNull(leader)) {
userBo.setLeaderName(leader.getName());
userBo.setLeaderPhone(leader.getPhone());
}
UserBo facilitate = userMap.get(userBo.getFacilitateId());
if (Objects.nonNull(facilitate)) {
userBo.setFacilitateName(facilitate.getName());
}
}
return userBos;
} }
} }
...@@ -335,7 +335,9 @@ public class AppUserRelationBiz extends BaseBiz<AppUserRelationMapper,AppUserRel ...@@ -335,7 +335,9 @@ public class AppUserRelationBiz extends BaseBiz<AppUserRelationMapper,AppUserRel
} }
public List<AppUserRelation> findLeaderByUserIds(List<Integer> userIds) {
List<AppUserRelation> appUserRelationList = mapper.selectByUserIds(userIds);
return appUserRelationList==null?Collections.EMPTY_LIST:appUserRelationList;
} }
}
package com.github.wxiaoqi.security.admin.mapper; package com.github.wxiaoqi.security.admin.mapper;
import com.github.wxiaoqi.security.admin.bo.UserBo;
import com.github.wxiaoqi.security.admin.entity.AppUserLogin; import com.github.wxiaoqi.security.admin.entity.AppUserLogin;
import com.github.wxiaoqi.security.admin.entity.AppUserManage; import com.github.wxiaoqi.security.admin.entity.AppUserManage;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
...@@ -31,4 +32,8 @@ public interface AppUserLoginMapper extends Mapper<AppUserLogin>, SelectByIdList ...@@ -31,4 +32,8 @@ public interface AppUserLoginMapper extends Mapper<AppUserLogin>, SelectByIdList
List<AppUserLogin> getUserByUsernameAndRealName(@Param("username") String username, @Param("realName")String realName); List<AppUserLogin> getUserByUsernameAndRealName(@Param("username") String username, @Param("realName")String realName);
List<Integer> findAppUser(@Param("phone") String phone,@Param("name") String name,@Param("memberIds") List<Integer> memberIds);
List<UserBo> selectByUserIds(@Param("userIds") List<Integer> uids);
} }
\ No newline at end of file
...@@ -5,6 +5,7 @@ import org.apache.ibatis.annotations.Param; ...@@ -5,6 +5,7 @@ import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.Mapper; import tk.mybatis.mapper.common.Mapper;
import java.util.List; import java.util.List;
import java.util.Set;
/** /**
* 用户关系表 * 用户关系表
...@@ -20,4 +21,6 @@ public interface AppUserRelationMapper extends Mapper<AppUserRelation> { ...@@ -20,4 +21,6 @@ public interface AppUserRelationMapper extends Mapper<AppUserRelation> {
//获取有效的下级 //获取有效的下级
public int countByParentId(@Param("parentId")Integer parentId,@Param("bindTime")Long bindTime); public int countByParentId(@Param("parentId")Integer parentId,@Param("bindTime")Long bindTime);
List<AppUserRelation> selectByUserIds(@Param("userIds") List<Integer> userIds);
} }
package com.github.wxiaoqi.security.admin.rest; package com.github.wxiaoqi.security.admin.rest;
import com.github.wxiaoqi.security.admin.biz.*; import com.github.wxiaoqi.security.admin.biz.*;
import com.github.wxiaoqi.security.admin.bo.UserBo;
import com.github.wxiaoqi.security.admin.entity.*; import com.github.wxiaoqi.security.admin.entity.*;
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.AppUserGroups; import com.github.wxiaoqi.security.admin.vo.AppUserGroups;
...@@ -37,7 +38,7 @@ import static com.github.wxiaoqi.security.common.constant.CommonConstants.SYS_TR ...@@ -37,7 +38,7 @@ import static com.github.wxiaoqi.security.common.constant.CommonConstants.SYS_TR
@RestController @RestController
@RequestMapping("app/user") @RequestMapping("app/user")
@Slf4j @Slf4j
public class AppUserController extends CommonBaseController{ public class AppUserController extends CommonBaseController {
@Autowired @Autowired
AppUserBiz appUserBiz; AppUserBiz appUserBiz;
...@@ -70,44 +71,44 @@ public class AppUserController extends CommonBaseController{ ...@@ -70,44 +71,44 @@ public class AppUserController extends CommonBaseController{
private OrderFeign orderFeign; private OrderFeign orderFeign;
@GetMapping("page") @GetMapping("page")
public TableResultResponse list(@RequestParam Map<String, Object> params) { public TableResultResponse list(@RequestParam Map<String, Object> params) {
Query query = new Query(params); Query query = new Query(params);
try { try {
return appUserBiz.selectPage(query, return appUserBiz.selectPage(query,
appUserBiz.getUserByUsername(userAuthUtil.getInfoFromToken(userAuthConfig.getToken(request)).getUniqueName())); appUserBiz.getUserByUsername(userAuthUtil.getInfoFromToken(userAuthConfig.getToken(request)).getUniqueName()));
}catch (Exception e) { } catch (Exception e) {
log.error(e.getMessage()); log.error(e.getMessage());
return new TableResultResponse<User>(); return new TableResultResponse<User>();
} }
} }
@RequestMapping(value = "/{id}",method = RequestMethod.GET) @RequestMapping(value = "/{id}", method = RequestMethod.GET)
@ResponseBody @ResponseBody
public ObjectRestResponse<AppUser> get(@PathVariable int id){ public ObjectRestResponse<AppUser> get(@PathVariable int id) {
ObjectRestResponse<AppUser> entityObjectRestResponse = new ObjectRestResponse<>(); ObjectRestResponse<AppUser> entityObjectRestResponse = new ObjectRestResponse<>();
AppUser o = appUserBiz.selectById(id); AppUser o = appUserBiz.selectById(id);
entityObjectRestResponse.data(o); entityObjectRestResponse.data(o);
return entityObjectRestResponse; return entityObjectRestResponse;
} }
@RequestMapping(value = "/{id}",method = RequestMethod.PUT) @RequestMapping(value = "/{id}", method = RequestMethod.PUT)
@ResponseBody @ResponseBody
public ObjectRestResponse<AppUser> update(@RequestBody AppUser entity){ public ObjectRestResponse<AppUser> update(@RequestBody AppUser entity) {
appUserBiz.updateSelectiveById(entity); appUserBiz.updateSelectiveById(entity);
return new ObjectRestResponse<AppUser>(); return new ObjectRestResponse<AppUser>();
} }
@RequestMapping(value = "/{id}",method = RequestMethod.DELETE)
@RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
@ResponseBody @ResponseBody
public ObjectRestResponse<AppUser> remove(@PathVariable int id){ public ObjectRestResponse<AppUser> remove(@PathVariable int id) {
appUserBiz.deleteById(id); appUserBiz.deleteById(id);
return new ObjectRestResponse<AppUser>(); return new ObjectRestResponse<AppUser>();
} }
@RequestMapping(value = "/all",method = RequestMethod.GET) @RequestMapping(value = "/all", method = RequestMethod.GET)
@ResponseBody @ResponseBody
public List<AppUser> all(){ public List<AppUser> all() {
return appUserBiz.selectListAll(); return appUserBiz.selectListAll();
} }
...@@ -124,42 +125,43 @@ public class AppUserController extends CommonBaseController{ ...@@ -124,42 +125,43 @@ public class AppUserController extends CommonBaseController{
/** /**
* 获取用户信息 * 获取用户信息
*
* @return * @return
* @throws Exception * @throws Exception
*/ */
@GetMapping("/info") @GetMapping("/info")
public ObjectRestResponse<AppUserDTO> getUserInfo()throws Exception { public ObjectRestResponse<AppUserDTO> getUserInfo() throws Exception {
String username = userAuthUtil.getInfoFromToken(userAuthConfig.getToken(request)).getId(); String username = userAuthUtil.getInfoFromToken(userAuthConfig.getToken(request)).getId();
if (username == null) { if (username == null) {
throw new Exception(); throw new Exception();
} }
AppUserDTO userDTO=new AppUserDTO(); AppUserDTO userDTO = new AppUserDTO();
Integer userid=Integer.parseInt(username); Integer userid = Integer.parseInt(username);
AppUserVo userVo = userDetailBiz.getUserInfoById(userid); AppUserVo userVo = userDetailBiz.getUserInfoById(userid);
if (userVo == null) { if (userVo == null) {
throw new Exception(); throw new Exception();
} }
Integer id= userVo.getId(); Integer id = userVo.getId();
Integer positionId=userVo.getPositionId(); Integer positionId = userVo.getPositionId();
BeanUtils.copyProperties(userDTO,userVo); BeanUtils.copyProperties(userDTO, userVo);
if(userVo.getIsMember()!=null&&userVo.getIsMember()>0){ if (userVo.getIsMember() != null && userVo.getIsMember() > 0) {
//获取用户会员信息 //获取用户会员信息
UserMemberVo memberVo=userMemberBiz.getMemberInfoByUserId(userid); UserMemberVo memberVo = userMemberBiz.getMemberInfoByUserId(userid);
if(memberVo!=null){ if (memberVo != null) {
BeanUtils.copyProperties(userDTO,memberVo); BeanUtils.copyProperties(userDTO, memberVo);
userDTO.setPayCount(orderFeign.baseOrderCount(SYS_TRUE, "4,5,6,-1", null, userid).getData()); userDTO.setPayCount(orderFeign.baseOrderCount(SYS_TRUE, "4,5,6,-1", null, userid).getData());
Integer level=memberVo.getMemberLevel(); Integer level = memberVo.getMemberLevel();
BaseUserMemberLevel memberLevel=userMemberLevelBiz.getLevel(level); BaseUserMemberLevel memberLevel = userMemberLevelBiz.getLevel(level);
if (memberLevel!=null){ if (memberLevel != null) {
String icon=memberLevel.getIcon(); String icon = memberLevel.getIcon();
userDTO.setIcon(icon); userDTO.setIcon(icon);
userDTO.setBigIcon(memberLevel.getBigIcon()); userDTO.setBigIcon(memberLevel.getBigIcon());
userDTO.setItemImg(memberLevel.getItemImg()); userDTO.setItemImg(memberLevel.getItemImg());
} }
} }
} }
AppUserPosition userPosition=positionBiz.selectById(positionId); AppUserPosition userPosition = positionBiz.selectById(positionId);
if (userPosition!=null&&userPosition.getLevel()>0){ if (userPosition != null && userPosition.getLevel() > 0) {
userDTO.setPositionName(userPosition.getName()); userDTO.setPositionName(userPosition.getName());
} }
userDTO.setId(id); userDTO.setId(id);
...@@ -169,45 +171,47 @@ public class AppUserController extends CommonBaseController{ ...@@ -169,45 +171,47 @@ public class AppUserController extends CommonBaseController{
@ApiOperation("获取用户收益") @ApiOperation("获取用户收益")
@GetMapping("/profit") @GetMapping("/profit")
public ObjectRestResponse profit() throws Exception{ public ObjectRestResponse profit() throws Exception {
String username = userAuthUtil.getInfoFromToken(userAuthConfig.getToken(request)).getId(); String username = userAuthUtil.getInfoFromToken(userAuthConfig.getToken(request)).getId();
if (username == null) { if (username == null) {
throw new Exception(); throw new Exception();
} }
Integer userid=Integer.parseInt(username); Integer userid = Integer.parseInt(username);
return myWaterBiz.getUserProfit(userid); return myWaterBiz.getUserProfit(userid);
} }
@ApiOperation("获取用IM密码") @ApiOperation("获取用IM密码")
@GetMapping("/im/getPwd") @GetMapping("/im/getPwd")
public ObjectRestResponse getPwd() throws Exception{ public ObjectRestResponse getPwd() throws Exception {
String username = userAuthUtil.getInfoFromToken(userAuthConfig.getToken(request)).getId(); String username = userAuthUtil.getInfoFromToken(userAuthConfig.getToken(request)).getId();
if (username == null) { if (username == null) {
throw new Exception(); throw new Exception();
} }
Integer userid=Integer.parseInt(username); Integer userid = Integer.parseInt(username);
AppUserLogin appUserLogin=appUserLoginBiz.getUserById(userid); AppUserLogin appUserLogin = appUserLoginBiz.getUserById(userid);
String imPassword=""; String imPassword = "";
if (appUserLogin!=null){ if (appUserLogin != null) {
imPassword=appUserLogin.getImPassword(); imPassword = appUserLogin.getImPassword();
} }
return ObjectRestResponse.succ(imPassword); return ObjectRestResponse.succ(imPassword);
} }
/** /**
* 更新用户信息 * 更新用户信息
*
* @param userVo * @param userVo
* @return * @return
* @throws Exception * @throws Exception
*/ */
@PostMapping("/edit") @PostMapping("/edit")
public ObjectRestResponse edit(@RequestBody AppUserVo userVo)throws Exception { public ObjectRestResponse edit(@RequestBody AppUserVo userVo) throws Exception {
if(userVo==null||userVo.getId()==null){ if (userVo == null || userVo.getId() == null) {
return ObjectRestResponse.createFailedResult(ResultCode.NULL_CODE, "参数为空"); return ObjectRestResponse.createFailedResult(ResultCode.NULL_CODE, "参数为空");
} }
userDetailBiz.updUuserInfoById(userVo); userDetailBiz.updUuserInfoById(userVo);
Integer userid=userVo.getUserid(); Integer userid = userVo.getUserid();
if (userid!=null){ if (userid != null) {
AppUserLogin appUserLogin=new AppUserLogin(); AppUserLogin appUserLogin = new AppUserLogin();
appUserLogin.setWxOpenid(userVo.getWxOpenid()); appUserLogin.setWxOpenid(userVo.getWxOpenid());
appUserLogin.setUnionid(userVo.getUnionid()); appUserLogin.setUnionid(userVo.getUnionid());
appUserLogin.setOpenid(userVo.getOpenid()); appUserLogin.setOpenid(userVo.getOpenid());
...@@ -220,6 +224,7 @@ public class AppUserController extends CommonBaseController{ ...@@ -220,6 +224,7 @@ public class AppUserController extends CommonBaseController{
/** /**
* 第三方登录绑定 * 第三方登录绑定
*
* @param wxOpenId * @param wxOpenId
* @param wxUnionId * @param wxUnionId
* @param openId * @param openId
...@@ -227,17 +232,17 @@ public class AppUserController extends CommonBaseController{ ...@@ -227,17 +232,17 @@ public class AppUserController extends CommonBaseController{
* @return * @return
*/ */
@PutMapping("/third_party_binding") @PutMapping("/third_party_binding")
public ObjectRestResponse bindingThirdParty(@RequestParam(value = "wxOpenId",required = false) String wxOpenId, public ObjectRestResponse bindingThirdParty(@RequestParam(value = "wxOpenId", required = false) String wxOpenId,
@RequestParam(value="wxUnionId",required = false) String wxUnionId, @RequestParam(value = "wxUnionId", required = false) String wxUnionId,
@RequestParam(value = "openId",required = false) String openId, @RequestParam(value = "openId", required = false) String openId,
HttpServletRequest request){ HttpServletRequest request) {
try { try {
IJWTInfo infoFromToken = userAuthUtil.getInfoFromToken(userAuthConfig.getToken(request)); IJWTInfo infoFromToken = userAuthUtil.getInfoFromToken(userAuthConfig.getToken(request));
String userId = infoFromToken.getId(); String userId = infoFromToken.getId();
boolean isBinding = appUserLoginBiz.checkThirdPartyBindingState(wxOpenId,wxUnionId,openId); boolean isBinding = appUserLoginBiz.checkThirdPartyBindingState(wxOpenId, wxUnionId, openId);
if (isBinding){ if (isBinding) {
return ObjectRestResponse.createFailedResult(400,"该微信已经绑定过"); return ObjectRestResponse.createFailedResult(400, "该微信已经绑定过");
}else { } else {
AppUserLogin appUserLogin = new AppUserLogin(); AppUserLogin appUserLogin = new AppUserLogin();
appUserLogin.setId(Integer.valueOf(userId)); appUserLogin.setId(Integer.valueOf(userId));
appUserLogin.setWxOpenid(wxOpenId); appUserLogin.setWxOpenid(wxOpenId);
...@@ -246,7 +251,7 @@ public class AppUserController extends CommonBaseController{ ...@@ -246,7 +251,7 @@ public class AppUserController extends CommonBaseController{
appUserLoginBiz.bindOpenid(appUserLogin); appUserLoginBiz.bindOpenid(appUserLogin);
} }
} catch (Exception e) { } catch (Exception e) {
throw new BaseException(e); throw new BaseException(e);
} }
return ObjectRestResponse.succ(); return ObjectRestResponse.succ();
...@@ -254,63 +259,66 @@ public class AppUserController extends CommonBaseController{ ...@@ -254,63 +259,66 @@ public class AppUserController extends CommonBaseController{
/** /**
* 第三方登录解绑 * 第三方登录解绑
*
* @param request * @param request
* @return * @return
*/ */
@PutMapping("third_party_unbind") @PutMapping("third_party_unbind")
public ObjectRestResponse unBindingThirdParty(@RequestParam("type") String type , HttpServletRequest request){ public ObjectRestResponse unBindingThirdParty(@RequestParam("type") String type, HttpServletRequest request) {
try { try {
IJWTInfo infoFromToken = userAuthUtil.getInfoFromToken(userAuthConfig.getToken(request)); IJWTInfo infoFromToken = userAuthUtil.getInfoFromToken(userAuthConfig.getToken(request));
appUserLoginBiz.unBindThirdPartyByType(type,infoFromToken.getUniqueName(),Integer.valueOf(infoFromToken.getId())); appUserLoginBiz.unBindThirdPartyByType(type, infoFromToken.getUniqueName(), Integer.valueOf(infoFromToken.getId()));
} catch (Exception e) { } catch (Exception e) {
throw new BaseException(e); throw new BaseException(e);
} }
return ObjectRestResponse.succ(); return ObjectRestResponse.succ();
} }
/** /**
* 更新用户信息 * 更新用户信息
*
* @param username * @param username
* @return * @return
*/ */
@GetMapping("/one") @GetMapping("/one")
public AppUserLogin one(@RequestParam(value = "username")String username){ public AppUserLogin one(@RequestParam(value = "username") String username) {
return appUserLoginBiz.getUserByUsername(username); return appUserLoginBiz.getUserByUsername(username);
} }
/** /**
* 根据用户真实姓名和手机号模糊查询寻用户 * 根据用户真实姓名和手机号模糊查询寻用户
*
* @param username * @param username
* @return * @return
*/ */
@GetMapping("/getOne") @GetMapping("/getOne")
public List<AppUserLogin> getOne(@RequestParam(value = "username",required = false)String username, @RequestParam(value = "realName",required = false)String realName){ public List<AppUserLogin> getOne(@RequestParam(value = "username", required = false) String username, @RequestParam(value = "realName", required = false) String realName) {
return appUserLoginBiz.getUserByUsernameAndRealName(username,realName); return appUserLoginBiz.getUserByUsernameAndRealName(username, realName);
} }
@GetMapping("/findusersByIds") @GetMapping("/findusersByIds")
public Map<Integer,AppUserLogin> findAppUsersByUserIds(@RequestParam(value = "userIds") List<Integer> userIds){ public Map<Integer, AppUserLogin> findAppUsersByUserIds(@RequestParam(value = "userIds") List<Integer> userIds) {
return appUserLoginBiz.findUserIdAndUserLoginMapByMemberIds(userIds); return appUserLoginBiz.findUserIdAndUserLoginMapByMemberIds(userIds);
} }
@GetMapping("/finduserIdsByphones") @GetMapping("/finduserIdsByphones")
Map<String, Integer> findAppusersByUserNames(@RequestParam(value = "phones") List<String> phones){ Map<String, Integer> findAppusersByUserNames(@RequestParam(value = "phones") List<String> phones) {
return appUserLoginBiz.findPhoneAndUserIdMapByPhones(phones); return appUserLoginBiz.findPhoneAndUserIdMapByPhones(phones);
} }
@GetMapping("/app/unauth/user_info/{code}") @GetMapping("/app/unauth/user_info/{code}")
@IgnoreUserToken @IgnoreUserToken
@IgnoreClientToken @IgnoreClientToken
public ObjectRestResponse<AppUserInfoVo> findUserInfoByCode(@PathVariable("code") String code){ public ObjectRestResponse<AppUserInfoVo> findUserInfoByCode(@PathVariable("code") String code) {
AppUserInfoVo appUserInfoVo = userDetailBiz.findUserInfoByCode(code); AppUserInfoVo appUserInfoVo = userDetailBiz.findUserInfoByCode(code);
return ObjectRestResponse.succ(appUserInfoVo); return ObjectRestResponse.succ(appUserInfoVo);
} }
@GetMapping("/app/unauth/getUserIdByUsername") @GetMapping("/app/unauth/getUserIdByUsername")
@IgnoreUserToken @IgnoreUserToken
@IgnoreClientToken @IgnoreClientToken
public List<Integer> getUserIdByUsername(@RequestParam("keywords") String keywords){ public List<Integer> getUserIdByUsername(@RequestParam("keywords") String keywords) {
List<Integer> userIds = userDetailBiz.getUserIdByUsername(keywords); List<Integer> userIds = userDetailBiz.getUserIdByUsername(keywords);
return userIds; return userIds;
} }
...@@ -321,4 +329,20 @@ public class AppUserController extends CommonBaseController{ ...@@ -321,4 +329,20 @@ public class AppUserController extends CommonBaseController{
public Object test() { public Object test() {
return appUserLoginBiz.test(); return appUserLoginBiz.test();
} }
@GetMapping("/users")
List<Integer> findAppUserIds(@RequestParam(value = "phone", required = false) String phone,
@RequestParam(value = "leaderPhone", required = false) String leaderPhone,
@RequestParam(value = "name", required = false) String name) {
return appUserLoginBiz.findAppuser(phone, leaderPhone, name);
}
@PostMapping("/users/info")
List<UserBo> findUserDetailByUserBo(@RequestBody(required = false) List<UserBo> userBos) {
return appUserLoginBiz.findUserDetailInfo(userBos);
}
} }
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<mapper namespace="com.github.wxiaoqi.security.admin.mapper.AppUserLoginMapper"> <mapper namespace="com.github.wxiaoqi.security.admin.mapper.AppUserLoginMapper">
<select id="selectbyPhones" resultType="com.github.wxiaoqi.security.admin.entity.AppUserLogin"> <select id="selectbyPhones" resultType="com.github.wxiaoqi.security.admin.entity.AppUserLogin">
select `id`,`username` from `app_user_login` where `username` in select `id`,`username` from `app_user_login` where `isdel`=0,`username` in
<foreach collection="phones" item="phone" open="(" close=")" separator=","> <foreach collection="phones" item="phone" open="(" close=")" separator=",">
#{phone} #{phone}
</foreach> </foreach>
...@@ -27,4 +27,32 @@ ...@@ -27,4 +27,32 @@
and d.realname like concat('%',#{realName},'%') and d.realname like concat('%',#{realName},'%')
</if> </if>
</select> </select>
<select id="findAppUser" resultType="integer">
select `id` from (select `id` from `app_user_login` where aul.isdel=0
<if test="phone!=null and phone!=''">
and `username`=#{phone}
</if>
<if test="memberIds!=null and memberIds.size()>0">
and `id` IN
<foreach collection="memberIds" item="userId" separator="," open="(" close=")">
#{userId}
</foreach>
</if>
) AS `aul`
INNER JOIN
`app_user_detail` AS `aud` ON aud.userid=aul.id
<if test="name!=null and name!=''">
and ( aud.realname like CONCAT('%',#{name},'%') OR aud.nickname like CONCAT('%',#{name},'%'))
</if>
</select>
<select id="selectByUserIds" resultType="com.github.wxiaoqi.security.admin.bo.UserBo">
select aul.`id` AS `userId`,aul.username AS `phone`,IFNULL(aud.realname,aud.nickname) AS `name` from ( select `id`,`username` from `app_user_login` where `isdel`=0 and `id` IN
<foreach collection="userIds" item="uid" separator="," open="(" close=")">
#{uid}
</foreach>) AS `aul`
INNER JOIN
`app_user_detail` AS `aud` ON aud.userid=aul.id
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -14,4 +14,11 @@ ...@@ -14,4 +14,11 @@
and (is_forever=1 or bind_time>#{bindTime}) and (is_forever=1 or bind_time>#{bindTime})
</if> </if>
</select> </select>
<select id="selectByUserIds" resultType="com.github.wxiaoqi.security.admin.entity.AppUserRelation">
select `user_id`,`parent_id` from `app_user_relation` where `is_del`=0 and `user_id` IN
<foreach collection="userIds" item="userId" separator="," open="(" close=")">
#{userId}
</foreach>
</select>
</mapper> </mapper>
\ No newline at end of file
package com.xxfc.platform.order.pojo.dto;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/10/30 15:48
*/
@Data
public class MemberOrderBo {
private Integer id;
private String orderNo;
private Date creatTime;
private Integer status;
private String name;
private BigDecimal goodsAmount;
private Integer userId;
private String userName;
private String phone;
private String leaderName;
private String leaderPhone;
private Integer memberLevel;
/**
* 促成人
*/
@JSONField(serialize = false)
private Integer facilitateId;
private String facilitateName;
private String facilitatePhone;
/**
* 订单金额
*/
private BigDecimal orderAmount;
/**
* 优惠金额
*/
private BigDecimal couponAmount;
private BigDecimal realAmount;
private Long payTime;
}
package com.xxfc.platform.order.pojo.dto;
import com.github.wxiaoqi.security.common.vo.PageParam;
import lombok.Data;
import java.util.Date;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/10/30 14:48
*/
@Data
public class MemberOrderFindDTO extends PageParam {
private String orderNo;
private String name;
private String phone;
private Integer state;
private Integer level;
/**
* 下单的开始时间
*/
private Date startOrderTime;
private Date endOrderTime;
/**
* 支付的开始时间
*/
private Long startPayTime;
private Long endPayTime;
private String leaderPhone;
/**
* 促成人的手机号
*/
private String facilitatePhone;
private Boolean isExport;
}
package com.xxfc.platform.order.pojo.dto;
import lombok.Data;
import java.math.BigDecimal;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/10/30 14:48
*/
@Data
public class MemberOrderStatisticsBo {
private Integer orderNum;
private BigDecimal totalAmount;
/**
* 钻石
*/
private Integer diamondOrderNum;
private BigDecimal totalDiamondAmount;
/**
* 黄金
*/
private Integer goldOrderNum;
private BigDecimal totalGoldAmount;
/**
* 普通
*/
private Integer generalOrderNum;
private BigDecimal generalAmount;
}
package com.xxfc.platform.order.pojo.vo;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.order.pojo.dto.MemberOrderBo;
import com.xxfc.platform.order.pojo.dto.MemberOrderStatisticsBo;
import lombok.Data;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/10/30 15:58
*/
@Data
public class MemberOrderPageVo {
private MemberOrderStatisticsBo memberOrderStatisticsBo;
private PageDataVO<MemberOrderBo> memberOrderPage;
}
...@@ -16,6 +16,7 @@ import com.github.wxiaoqi.security.common.exception.BaseException; ...@@ -16,6 +16,7 @@ import com.github.wxiaoqi.security.common.exception.BaseException;
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.util.process.ResultCode; import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.xxfc.platform.activity.feign.ActivityFeign; import com.xxfc.platform.activity.feign.ActivityFeign;
import com.xxfc.platform.order.biz.inner.OrderCalculateBiz; import com.xxfc.platform.order.biz.inner.OrderCalculateBiz;
...@@ -26,6 +27,8 @@ import com.xxfc.platform.order.mapper.BaseOrderMapper; ...@@ -26,6 +27,8 @@ import com.xxfc.platform.order.mapper.BaseOrderMapper;
import com.xxfc.platform.order.pojo.DedDetailDTO; import com.xxfc.platform.order.pojo.DedDetailDTO;
import com.xxfc.platform.order.pojo.account.OrderAccountDetail; import com.xxfc.platform.order.pojo.account.OrderAccountDetail;
import com.xxfc.platform.order.pojo.calculate.InProgressVO; import com.xxfc.platform.order.pojo.calculate.InProgressVO;
import com.xxfc.platform.order.pojo.dto.MemberOrderBo;
import com.xxfc.platform.order.pojo.dto.MemberOrderFindDTO;
import com.xxfc.platform.order.pojo.mq.OrderMQDTO; import com.xxfc.platform.order.pojo.mq.OrderMQDTO;
import com.xxfc.platform.order.pojo.order.OrderListVo; import com.xxfc.platform.order.pojo.order.OrderListVo;
import com.xxfc.platform.order.pojo.order.OrderPageVO; import com.xxfc.platform.order.pojo.order.OrderPageVO;
...@@ -141,6 +144,17 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements ...@@ -141,6 +144,17 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
return mapper.getTourList(paramMap); return mapper.getTourList(paramMap);
} }
public PageDataVO<MemberOrderBo> findMemberOrderPage(List<Integer> userIds, MemberOrderFindDTO memberOrderFindDTO){
return PageDataVO.pageInfo(memberOrderFindDTO.getPage(),memberOrderFindDTO.getLimit(),()->mapper.findMemberOrders(userIds,memberOrderFindDTO));
}
public List<MemberOrderBo> findMemberOrders(List<Integer> userIds, MemberOrderFindDTO memberOrderFindDTO) {
return mapper.findMemberOrders(userIds,memberOrderFindDTO);
}
// public List<MemberOrderBo>
/** /**
* 获取订单详情 * 获取订单详情
* *
...@@ -691,6 +705,8 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements ...@@ -691,6 +705,8 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
} }
} }
// /** // /**
// * 更新(不成功抛异常) // * 更新(不成功抛异常)
// * @param baseOrder // * @param baseOrder
...@@ -763,6 +779,8 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements ...@@ -763,6 +779,8 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
return userFeign; return userFeign;
} }
/** /**
* 订单查询类 * 订单查询类
*/ */
......
package com.xxfc.platform.order.mapper; package com.xxfc.platform.order.mapper;
import com.xxfc.platform.order.entity.BaseOrder; import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.pojo.dto.MemberOrderBo;
import com.xxfc.platform.order.pojo.dto.MemberOrderFindDTO;
import com.xxfc.platform.order.pojo.order.OrderListVo; import com.xxfc.platform.order.pojo.order.OrderListVo;
import com.xxfc.platform.order.pojo.order.OrderPageVO; import com.xxfc.platform.order.pojo.order.OrderPageVO;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.Mapper; import tk.mybatis.mapper.common.Mapper;
import java.math.BigDecimal; import java.math.BigDecimal;
...@@ -32,4 +35,6 @@ public interface BaseOrderMapper extends Mapper<BaseOrder> { ...@@ -32,4 +35,6 @@ public interface BaseOrderMapper extends Mapper<BaseOrder> {
public List<OrderPageVO> selectAllTourOrder(Map<String, Object> paramMap); public List<OrderPageVO> selectAllTourOrder(Map<String, Object> paramMap);
List<MemberOrderBo> findMemberOrders(@Param("userIds") List<Integer> userIds, @Param("memberOrder") MemberOrderFindDTO memberOrderFindDTO);
} }
...@@ -9,23 +9,24 @@ import com.github.wxiaoqi.security.common.rest.BaseController; ...@@ -9,23 +9,24 @@ import com.github.wxiaoqi.security.common.rest.BaseController;
import com.xxfc.platform.order.biz.OrderMemberDetailBiz; import com.xxfc.platform.order.biz.OrderMemberDetailBiz;
import com.xxfc.platform.order.entity.BaseOrder; import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.entity.OrderMemberDetail; import com.xxfc.platform.order.entity.OrderMemberDetail;
import com.xxfc.platform.order.pojo.dto.MemberOrderFindDTO;
import com.xxfc.platform.order.pojo.order.add.AddMemberDTO; import com.xxfc.platform.order.pojo.order.add.AddMemberDTO;
import com.xxfc.platform.order.pojo.order.MemberBO; import com.xxfc.platform.order.pojo.order.MemberBO;
import com.xxfc.platform.order.pojo.vo.MemberOrderPageVo;
import com.xxfc.platform.order.service.OrderMemberService; import com.xxfc.platform.order.service.OrderMemberService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import javax.servlet.http.HttpServletResponse;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller @Controller
@RequestMapping("orderMember") @RequestMapping("orderMember")
@Api(value="会员订单",tags={"会员订单"}) @Api(value = "会员订单", tags = {"会员订单"})
@IgnoreClientToken @IgnoreClientToken
public class OrderMemberController extends BaseController<OrderMemberDetailBiz,OrderMemberDetail> { public class OrderMemberController extends BaseController<OrderMemberDetailBiz, OrderMemberDetail> {
@Autowired @Autowired
OrderMemberService orderMemberService; OrderMemberService orderMemberService;
...@@ -33,10 +34,10 @@ public class OrderMemberController extends BaseController<OrderMemberDetailBiz,O ...@@ -33,10 +34,10 @@ public class OrderMemberController extends BaseController<OrderMemberDetailBiz,O
@Autowired @Autowired
UserFeign userFeign; UserFeign userFeign;
@RequestMapping(value = "add",method = RequestMethod.POST) @RequestMapping(value = "add", method = RequestMethod.POST)
@ResponseBody @ResponseBody
@ApiOperation(value = "确认会员订单") @ApiOperation(value = "确认会员订单")
public ObjectRestResponse<BaseOrder> add(@RequestBody AddMemberDTO dto){ public ObjectRestResponse<BaseOrder> add(@RequestBody AddMemberDTO dto) {
MemberBO bo = BeanUtil.toBean(dto, MemberBO.class); MemberBO bo = BeanUtil.toBean(dto, MemberBO.class);
//查询会员等级实体 //查询会员等级实体
...@@ -52,4 +53,22 @@ public class OrderMemberController extends BaseController<OrderMemberDetailBiz,O ...@@ -52,4 +53,22 @@ public class OrderMemberController extends BaseController<OrderMemberDetailBiz,O
return ObjectRestResponse.succ(bo.getOrder()); return ObjectRestResponse.succ(bo.getOrder());
} }
/**
* 会员订单列表
*
* @param memberOrderFindDTO
* @return
*/
@PostMapping("/page")
@ResponseBody
public ObjectRestResponse<MemberOrderPageVo> listMemberOrderPage(@RequestBody MemberOrderFindDTO memberOrderFindDTO) {
MemberOrderPageVo memberOrderPageVo = orderMemberService.listMemberOrderPage(memberOrderFindDTO);
return ObjectRestResponse.succ(memberOrderPageVo);
}
@PostMapping("/export")
@ResponseBody
public void exportMemberOrders(@RequestBody MemberOrderFindDTO memberOrderFindDTO, HttpServletResponse response){
}
} }
\ No newline at end of file
package com.xxfc.platform.order.service; package com.xxfc.platform.order.service;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import com.github.wxiaoqi.security.admin.bo.UserBo;
import com.github.wxiaoqi.security.admin.entity.BaseUserMemberLevel; import com.github.wxiaoqi.security.admin.entity.BaseUserMemberLevel;
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.rest.UserRestInterface; import com.github.wxiaoqi.security.admin.feign.rest.UserRestInterface;
import com.github.wxiaoqi.security.auth.client.config.UserAuthConfig; import com.github.wxiaoqi.security.auth.client.config.UserAuthConfig;
import com.github.wxiaoqi.security.common.context.BaseContextHandler;
import com.github.wxiaoqi.security.common.exception.BaseException; import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.util.process.ResultCode; import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.activity.feign.ActivityFeign; import com.xxfc.platform.activity.feign.ActivityFeign;
import com.xxfc.platform.order.biz.BaseOrderBiz;
import com.xxfc.platform.order.biz.OrderCostDetailBiz; import com.xxfc.platform.order.biz.OrderCostDetailBiz;
import com.xxfc.platform.order.biz.OrderMemberDetailBiz; import com.xxfc.platform.order.biz.OrderMemberDetailBiz;
import com.xxfc.platform.order.biz.OrderTemplateBiz; import com.xxfc.platform.order.biz.OrderTemplateBiz;
import com.xxfc.platform.order.contant.enumerate.ItemTypeEnum; import com.xxfc.platform.order.contant.enumerate.ItemTypeEnum;
import com.xxfc.platform.order.contant.enumerate.OrderStatusEnum; import com.xxfc.platform.order.contant.enumerate.OrderStatusEnum;
import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum; import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum;
import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.entity.OrderItem; import com.xxfc.platform.order.entity.OrderItem;
import com.xxfc.platform.order.pojo.dto.MemberOrderBo;
import com.xxfc.platform.order.pojo.dto.MemberOrderFindDTO;
import com.xxfc.platform.order.pojo.dto.MemberOrderStatisticsBo;
import com.xxfc.platform.order.pojo.order.MemberBO; import com.xxfc.platform.order.pojo.order.MemberBO;
import com.xxfc.platform.order.pojo.price.OrderPriceVO; import com.xxfc.platform.order.pojo.price.OrderPriceVO;
import com.xxfc.platform.order.pojo.vo.MemberOrderPageVo;
import com.xxfc.platform.tour.feign.TourFeign; import com.xxfc.platform.tour.feign.TourFeign;
import com.xxfc.platform.universal.constant.DictionaryKey; import com.xxfc.platform.universal.constant.DictionaryKey;
import com.xxfc.platform.universal.feign.ThirdFeign; import com.xxfc.platform.universal.feign.ThirdFeign;
import com.xxfc.platform.vehicle.feign.VehicleFeign; import com.xxfc.platform.vehicle.feign.VehicleFeign;
import lombok.extern.log4j.Log4j; import lombok.extern.log4j.Log4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct; import javax.annotation.PostConstruct;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; import java.util.*;
import java.util.HashMap; import java.util.function.Function;
import java.util.HashSet;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.SYS_TRUE; import static com.github.wxiaoqi.security.common.constant.CommonConstants.SYS_TRUE;
...@@ -51,6 +58,12 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz ...@@ -51,6 +58,12 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz
@Autowired @Autowired
ThirdFeign thirdFeign; ThirdFeign thirdFeign;
@Autowired
private BaseOrderBiz baseOrderBiz;
@Autowired
private UserFeign userFeign;
private static Integer IS_CHILD = 1; private static Integer IS_CHILD = 1;
private static Integer LEVEL_DEFAULT = 0; private static Integer LEVEL_DEFAULT = 0;
...@@ -73,7 +86,7 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz ...@@ -73,7 +86,7 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz
public HttpServletRequest request; public HttpServletRequest request;
@PostConstruct @PostConstruct
public void init(){ public void init() {
this.orderTypeEnum = OrderTypeEnum.MEMBER; this.orderTypeEnum = OrderTypeEnum.MEMBER;
} }
...@@ -82,8 +95,8 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz ...@@ -82,8 +95,8 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz
super.initDetail(bo); super.initDetail(bo);
initDictionary(); initDictionary();
BaseUserMemberLevel buml = userFeign.level(bo.getMemberLevel()); BaseUserMemberLevel buml = userFeign.level(bo.getMemberLevel());
if(!bo.getMemberLevelId().equals(buml.getId())) { if (!bo.getMemberLevelId().equals(buml.getId())) {
throw new BaseException(ResultCode.PARAM_ILLEGAL_CODE, new HashSet<String>(){{ throw new BaseException(ResultCode.PARAM_ILLEGAL_CODE, new HashSet<String>() {{
add("MemberLevelId 和 MemberLevel不对称"); add("MemberLevelId 和 MemberLevel不对称");
}}); }});
} }
...@@ -94,7 +107,7 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz ...@@ -94,7 +107,7 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz
public void initDictionary() { public void initDictionary() {
dictionaryMap = thirdFeign.dictionaryGetAll4Map().getData(); dictionaryMap = thirdFeign.dictionaryGetAll4Map().getData();
this.autoCancelTime = Long.valueOf(dictionaryMap.get(APP_ORDER+ "_"+ DictionaryKey.ACT_MEMBER).getDetail()); this.autoCancelTime = Long.valueOf(dictionaryMap.get(APP_ORDER + "_" + DictionaryKey.ACT_MEMBER).getDetail());
} }
@Override @Override
...@@ -110,7 +123,7 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz ...@@ -110,7 +123,7 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz
BigDecimal amount = memberItem.getTotalAmount(); BigDecimal amount = memberItem.getTotalAmount();
//如果有使用优惠券,则扣减 //如果有使用优惠券,则扣减
if(BigDecimal.ZERO.compareTo(bo.getOrder().getCouponAmount()) < 0) { if (BigDecimal.ZERO.compareTo(bo.getOrder().getCouponAmount()) < 0) {
activityFeign.use(bo.getOrder().getUserId(), bo.getTickerNo(), bo.getOrder().getNo(), channel, amount, ActivityFeign.TYPE_USE); activityFeign.use(bo.getOrder().getUserId(), bo.getTickerNo(), bo.getOrder().getNo(), channel, amount, ActivityFeign.TYPE_USE);
} }
...@@ -144,21 +157,21 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz ...@@ -144,21 +157,21 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz
goodsAmount = goodsAmount.add(memberOrderItem.getCalculateAmount(Boolean.TRUE)); goodsAmount = goodsAmount.add(memberOrderItem.getCalculateAmount(Boolean.TRUE));
//vehicleAmount 优惠券处理 //vehicleAmount 优惠券处理
if(null != detail.getTickerNo() && detail.getTickerNo().size() > 0) { if (null != detail.getTickerNo() && detail.getTickerNo().size() > 0) {
couponAmount = activityFeign.use(detail.getOrder().getUserId(), detail.getTickerNo(), detail.getOrder().getNo(), channel, goodsAmount, ActivityFeign.TYPE_NO_USE); couponAmount = activityFeign.use(detail.getOrder().getUserId(), detail.getTickerNo(), detail.getOrder().getNo(), channel, goodsAmount, ActivityFeign.TYPE_NO_USE);
if(couponAmount.compareTo(BigDecimal.ZERO) > 0) { if (couponAmount.compareTo(BigDecimal.ZERO) > 0) {
detail.getOrder().setCouponTickerNos(detail.getTickerNo().stream().collect(Collectors.joining(","))); detail.getOrder().setCouponTickerNos(detail.getTickerNo().stream().collect(Collectors.joining(",")));
detail.getOrder().setHasDiscount(SYS_TRUE); detail.getOrder().setHasDiscount(SYS_TRUE);
memberOrderItem.handleCouponAmount(couponAmount); memberOrderItem.handleCouponAmount(couponAmount);
} }
} }
//订单总价格 //订单总价格
orderAmount = orderAmount.add(goodsAmount); orderAmount = orderAmount.add(goodsAmount);
//真实价格 //真实价格
realAmount = realAmount.add(orderAmount).subtract(couponAmount); realAmount = realAmount.add(orderAmount).subtract(couponAmount);
//生成订单明细 //生成订单明细
OrderPriceVO opv = new OrderPriceVO(); OrderPriceVO opv = new OrderPriceVO();
opv.setOrderAmount(orderAmount); opv.setOrderAmount(orderAmount);
opv.setGoodsAmount(goodsAmount); opv.setGoodsAmount(goodsAmount);
...@@ -167,4 +180,140 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz ...@@ -167,4 +180,140 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz
return opv; return opv;
} }
/**
* 导出数据
* @param memberOrderFindDTO
*/
public void exportMemberOrderData(MemberOrderFindDTO memberOrderFindDTO){
MemberOrderPageVo memberOrderPageVo = listMemberOrderPage(memberOrderFindDTO);
List<MemberOrderBo> memberOrderBoList = memberOrderPageVo.getMemberOrderPage().getData();
}
public MemberOrderPageVo listMemberOrderPage(MemberOrderFindDTO memberOrderFindDTO) {
MemberOrderPageVo memberOrderPageVo = new MemberOrderPageVo();
MemberOrderStatisticsBo memberOrderStatisticsBo = new MemberOrderStatisticsBo();
List<Integer> userIds = new ArrayList<>();
PageDataVO<MemberOrderBo> pageDataVO= new PageDataVO<>();
pageDataVO = new PageDataVO<>();
pageDataVO.setPageNum(memberOrderFindDTO.getPage());
pageDataVO.setPageSize(memberOrderFindDTO.getLimit());
pageDataVO.setData(Collections.EMPTY_LIST);
boolean isNoNullUserName = StringUtils.isNotEmpty(memberOrderFindDTO.getName()) && memberOrderFindDTO.getName().trim().length() > 0;
boolean isNoNullPhone = StringUtils.isNotEmpty(memberOrderFindDTO.getPhone()) && memberOrderFindDTO.getPhone().trim().length() > 0;
boolean isNoNullLeaderPhone = StringUtils.isNotEmpty(memberOrderFindDTO.getPhone()) && memberOrderFindDTO.getPhone().trim().length() > 0;
if (isNoNullLeaderPhone || isNoNullPhone || isNoNullUserName) {
userIds = userFeign.findAppUserIds(memberOrderFindDTO.getPhone(),memberOrderFindDTO.getLeaderPhone(),memberOrderFindDTO.getName());
}
if (memberOrderFindDTO.getPage() == 1){
List<MemberOrderBo> baseOrders = baseOrderBiz.findMemberOrders(userIds,memberOrderFindDTO);
if (CollectionUtils.isEmpty(baseOrders)){
memberOrderPageVo.setMemberOrderStatisticsBo(memberOrderStatisticsBo);
return memberOrderPageVo;
}
memberOrderStatisticsBo = getMemberOrderStatisticsBo(baseOrders);
}
memberOrderPageVo.setMemberOrderStatisticsBo(memberOrderStatisticsBo);
List<MemberOrderBo> memberOrderBoList;
if (!memberOrderFindDTO.getIsExport()){
pageDataVO = baseOrderBiz.findMemberOrderPage(userIds,memberOrderFindDTO);
memberOrderBoList = pageDataVO.getData();
if (CollectionUtils.isEmpty(memberOrderBoList)){
memberOrderPageVo.setMemberOrderStatisticsBo(memberOrderStatisticsBo);
return memberOrderPageVo;
}
}else {
memberOrderBoList = baseOrderBiz.findMemberOrders(userIds,memberOrderFindDTO);
}
memberOrderBoList = getUserBos(memberOrderBoList);
pageDataVO.setData(memberOrderBoList);
memberOrderPageVo.setMemberOrderPage(pageDataVO);
return memberOrderPageVo;
}
private List<MemberOrderBo> getUserBos(List<MemberOrderBo> memberOrderBoList) {
List<UserBo> userBos = memberOrderBoList.stream().map(x -> {
UserBo userBo = new UserBo();
userBo.setUserId(x.getUserId());
userBo.setOrderNo(x.getOrderNo());
userBo.setFacilitateId(x.getFacilitateId());
return userBo;
}).collect(Collectors.toList());
List<UserBo> userDTOList = userFeign.findUserDetailByUserBo(userBos);
Map<String, UserBo> userBoMap = userDTOList.stream().collect(Collectors.toMap(UserBo::getOrderNo, Function.identity()));
for (MemberOrderBo memberOrderBo : memberOrderBoList) {
UserBo userBo = userBoMap.get(memberOrderBo.getOrderNo());
if(Objects.nonNull(userBo)) {
memberOrderBo.setUserName(userBo.getName());
memberOrderBo.setPhone(userBo.getPhone());
memberOrderBo.setLeaderName(userBo.getLeaderName());
memberOrderBo.setLeaderPhone(userBo.getLeaderPhone());
memberOrderBo.setFacilitateName(userBo.getFacilitateName());
memberOrderBo.setCouponAmount(memberOrderBo.getCouponAmount() == null ? BigDecimal.ZERO : memberOrderBo.getCouponAmount());
memberOrderBo.setRealAmount(memberOrderBo.getRealAmount() == null ? BigDecimal.ZERO : memberOrderBo.getRealAmount());
}
}
return memberOrderBoList;
}
private MemberOrderStatisticsBo getMemberOrderStatisticsBo(List<MemberOrderBo> baseOrders){
MemberOrderStatisticsBo memberOrderStatisticsBo = new MemberOrderStatisticsBo();
Map<Integer, List<MemberOrderBo>> baseOrderMap = baseOrders.stream().collect(Collectors.groupingBy(MemberOrderBo::getMemberLevel, Collectors.toList()));
memberOrderStatisticsBo.setOrderNum(baseOrders.size());
BigDecimal totalAmount = baseOrders.stream().map(MemberOrderBo::getOrderAmount).reduce(BigDecimal.ZERO, (x, y) -> x.add(y));
memberOrderStatisticsBo.setTotalAmount(totalAmount);
List<MemberOrderBo> diamondOrders = baseOrderMap.get(levelEnum.DIAMOND.getLevel());
diamondOrders = diamondOrders ==null?Collections.EMPTY_LIST:diamondOrders;
memberOrderStatisticsBo.setDiamondOrderNum(diamondOrders.size());
BigDecimal diamondAmount = diamondOrders.stream().map(MemberOrderBo::getOrderAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
memberOrderStatisticsBo.setTotalDiamondAmount(diamondAmount);
List<MemberOrderBo> goldOrders = baseOrderMap.get(levelEnum.GOLD.getLevel());
goldOrders = goldOrders==null?Collections.EMPTY_LIST:goldOrders;
memberOrderStatisticsBo.setGoldOrderNum(goldOrders.size());
BigDecimal goldAmount = goldOrders.stream().map(MemberOrderBo::getOrderAmount).reduce(BigDecimal.ZERO, (x, y) -> x.add(y));
memberOrderStatisticsBo.setTotalGoldAmount(goldAmount);
List<MemberOrderBo> generalOrders = baseOrderMap.get(levelEnum.GENERAL.getLevel());
generalOrders = generalOrders==null?Collections.EMPTY_LIST:generalOrders;
memberOrderStatisticsBo.setGeneralOrderNum(generalOrders.size());
BigDecimal generalAmount = generalOrders.stream().map(MemberOrderBo::getOrderAmount).reduce(BigDecimal.ZERO, (x, y) -> x.add(y));
memberOrderStatisticsBo.setGeneralAmount(generalAmount);
return memberOrderStatisticsBo;
}
private enum levelEnum{
DIAMOND(3,"砖石会员"),
GOLD(2,"黄金会员"),
GENERAL(1,"普通会员");
levelEnum(Integer level, String desc) {
this.level = level;
this.desc = desc;
}
private Integer level;
private String desc;
public Integer getLevel() {
return level;
}
public void setLevel(Integer level) {
this.level = level;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
}
} }
...@@ -125,7 +125,7 @@ ...@@ -125,7 +125,7 @@
</if> </if>
<if test="userIds != null and userIds.size() > 0"> <if test="userIds != null and userIds.size() > 0">
and b.user_id in and b.user_id in
<foreach collection="userIds" item="item" open="(" separator="," close=")"> <foreach collection="userIds" item="item" open="(" separator="," close=")">
#{item} #{item}
</foreach> </foreach>
...@@ -153,9 +153,10 @@ ...@@ -153,9 +153,10 @@
or t.start_time between #{startTime} and #{endTime}) or t.start_time between #{startTime} and #{endTime})
</if> </if>
<if test="vehicleIds != null and vehicleIds.size() > 0"> <if test="vehicleIds != null and vehicleIds.size() > 0">
AND r.vehicle_id IN <foreach collection="vehicleIds" item="vehicleId" open="(" close=")" separator=","> AND r.vehicle_id IN
#{vehicleId} <foreach collection="vehicleIds" item="vehicleId" open="(" close=")" separator=",">
</foreach> #{vehicleId}
</foreach>
</if> </if>
<if test="companyIds != null and companyIds.size > 0"> <if test="companyIds != null and companyIds.size > 0">
and (r.start_company_id in and (r.start_company_id in
...@@ -273,7 +274,7 @@ ...@@ -273,7 +274,7 @@
</if> </if>
</select> </select>
<select id="selectAllTourOrder" parameterType="Map" resultMap="orderPageMap"> <select id="selectAllTourOrder" parameterType="Map" resultMap="orderPageMap">
select b.* select b.*
from base_order b from base_order b
LEFT JOIN order_tour_detail r on r.order_id = b.id LEFT JOIN order_tour_detail r on r.order_id = b.id
...@@ -282,4 +283,62 @@ ...@@ -282,4 +283,62 @@
and r.start_time between #{startTime} and #{endTime} and r.start_time between #{startTime} and #{endTime}
</if> </if>
</select> </select>
<select id="findMemberOrders" resultType="com.xxfc.platform.order.pojo.dto.MemberOrderBo">
SELECT
`id`,
`no` AS `orderNo`,
`name`,
`status`,
`goods_amount` AS `goodsAmount`,
`real_amount` AS `realAmount`,
`order_amount` AS `orderAmount`,
`crt_time` AS `creatTime`,
`pay_time` AS `payTime`,
`coupon_amount` AS `couponAmount`,
`user_id` AS `userId`,
`member_level` AS `memberLevel`,
`facilitate_id` AS `facilitateId`,
`facilitate_phone` AS `facilitatePhone`
FROM
`base_order`
WHERE
type = 3 and <![CDATA[`member_level`<>0]]>
<if test="memberOrder.orderNo!=null and memberOrder.orderNo!=''">
and `no`=#{orderNo}
</if>
<if test="memberOrder.state!=null">
and `status`=#{state}
</if>
<if test="memberOrder.level !=null">
and `member_level`=#{level}
</if>
<if test="memberOrder.facilitatePhone!=null and memberOrder.facilitatePhone!=''">
and `facilitate_phone`=#{facilitatePhone}
</if>
<if test="memberOrder.startOrderTime!=null and memberOrder.endOrderTime!=null">
and `crt_time` between #{startOrderTime} and #{endOrderTime}
</if>
<if test="memberOrder.startOrderTime!=null and memberOrder.endOrderTime==null">
and `crt_time` <![CDATA[>=#{startOrderTime}]]>
</if>
<if test="memberOrder.endOrderTime!=null and memberOrder.startOrderTime==null">
and `crt_time` <![CDATA[<=#{endOrderTime}]]>
</if>
<if test="memberOrder.startPayTime!=null and memberOrder.endPayTime!=null">
and `pay_time` between #{startPayTime} and #{startPayTime}
</if>
<if test="memberOrder.startPayTime!=null and memberOrder.endPayTime==null">
and `pay_time` <![CDATA[>=#{startPayTime}]]>
</if>
<if test="memberOrder.endPayTime!=null and memberOrder.startPayTime==null">
and `pay_time` <![CDATA[<=#{endPayTime}]]>
</if>
<if test="userIds!=null and userIds.size()>0">
and `user_id` IN
<foreach collection="userIds" item="userId" separator="," open="(" close=")">
#{userId}
</foreach>
</if>
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -225,7 +225,7 @@ public class VehicleCataController extends VehicleBaseController<VehiclePlatCata ...@@ -225,7 +225,7 @@ public class VehicleCataController extends VehicleBaseController<VehiclePlatCata
try { try {
vehiclePageQueryVo = JSON.parseObject(vehiclePageQueryVoJson, VehiclePageQueryVo.class); vehiclePageQueryVo = JSON.parseObject(vehiclePageQueryVoJson, VehiclePageQueryVo.class);
UserDTO userDTO = userFeign.userinfoByToken(userAuthConfig.getToken(request)).getData(); UserBo userDTO = userFeign.userinfoByToken(userAuthConfig.getToken(request)).getData();
if (userDTO != null) { if (userDTO != null) {
if (userDTO.getDataAll() == 2) { if (userDTO.getDataAll() == 2) {
List<Integer> companyList = vehicleBiz.dataCompany(userDTO.getDataZone(), userDTO.getDataCompany()); List<Integer> companyList = vehicleBiz.dataCompany(userDTO.getDataZone(), userDTO.getDataCompany());
......
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