Browse Source

fix: spu导入重复;opt: 企业微信适配公众号

muti_db
Yen 11 months ago
parent
commit
86675be1a3
  1. 6
      src/main/java/com/qs/serve/controller/WxSvcLoginApi.java
  2. 18
      src/main/java/com/qs/serve/modules/bir/controller/BirActivityCenterGoodsController.java
  3. 19
      src/main/java/com/qs/serve/modules/bms/controller/BmsRegionController.java
  4. 12
      src/main/java/com/qs/serve/modules/goods/controller/GoodsSkuController.java
  5. 12
      src/main/java/com/qs/serve/modules/goods/controller/GoodsSkuOptionController.java
  6. 46
      src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java
  7. 13
      src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuOptionController.java
  8. 17
      src/main/java/com/qs/serve/modules/goods/entity/GoodsSku.java
  9. 10
      src/main/java/com/qs/serve/modules/goods/entity/GoodsSpu.java
  10. 45
      src/main/java/com/qs/serve/modules/goods/entity/vo/GoodsSkuExportVo.java
  11. 38
      src/main/java/com/qs/serve/modules/goods/entity/vo/GoodsSpuExportVo.java
  12. 23
      src/main/java/com/qs/serve/modules/wx/api/WxSvcUserApi.java
  13. 3
      src/main/java/com/qs/serve/modules/wx/service/impl/WxUserServiceImpl.java
  14. 3
      src/main/resources/mapper/goods/GoodsSkuMapper.xml
  15. 2
      src/main/resources/mapper/goods/GoodsSpuMapper.xml

6
src/main/java/com/qs/serve/controller/WxSvcLoginApi.java

@ -1,5 +1,6 @@
package com.qs.serve.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qs.serve.common.framework.redis.RedisService;
import com.qs.serve.common.framework.security.model.LoginUser;
import com.qs.serve.common.framework.security.model.LoginUserType;
@ -73,12 +74,15 @@ public class WxSvcLoginApi {
try {
wxUser = wxUserService.login(wxLoginUser,request);
} catch (Exception e) {
log.warn(e.getMessage());
Assert.throwEx(e.getMessage());
}
if(wxUser==null){
Assert.throwEx(HttpCode.WX_ERR);
}
Map<String, Object> objectMap = genTokenInfo(request, wxUser);
return R.ok(objectMap);
}

18
src/main/java/com/qs/serve/modules/bir/controller/BirActivityCenterGoodsController.java

@ -29,6 +29,7 @@ import com.qs.serve.modules.bms.service.BmsChannelService;
import com.qs.serve.modules.bms.service.BmsSupplierChannelService;
import com.qs.serve.modules.his.service.HisUserChannelPointService;
import com.qs.serve.modules.oss.service.OssService;
import com.qs.serve.modules.tbs.common.TbsCostApplyState;
import com.qs.serve.modules.tbs.entity.*;
import com.qs.serve.modules.tbs.mapper.*;
import com.qs.serve.modules.tbs.service.TbsActivityChannelService;
@ -116,6 +117,23 @@ public class BirActivityCenterGoodsController {
return R.ok();
}
/**
* 移除退回的费用申请
* @return
*/
@GetMapping("/toSyncBackCost")
public R<?> toSyncBackCost(){
List<TbsCostApply> list = tbsCostApplyService.list(new LambdaQueryWrapper<TbsCostApply>()
.eq(TbsCostApply::getChargeState, TbsCostApplyState.State_4_refused.getCode())
.orderByDesc(TbsCostApply::getId)
.last(" limit 10000")
);
for (TbsCostApply costApply : list) {
centerGoodsService.rebuildBir(Arrays.asList(costApply.getId()));
}
return R.ok();
}
@GetMapping("/toSyncBirToday")
public R<?> toSyncBirEcro2(){
//Long[] ids = new Long[]{};

19
src/main/java/com/qs/serve/modules/bms/controller/BmsRegionController.java

@ -172,12 +172,25 @@ public class BmsRegionController {
BmsSupplier supplier = bmsSupplierService.getById(supplierId);
regionIds.addAll(supplier.listSaleRegionIds());
}
return buildRegionTreeByRegionIds(stopFlag, new ArrayList<>(regionIds));
return buildRegionTreeByRegionIds(userIds,stopFlag, new ArrayList<>(regionIds));
}
@Nullable
private List<BmsRegionTreeVo> buildRegionTreeByRegionIds(Integer stopFlag, List<String> regionIds) {
List<Long> supplierIds = hisUserSupplierService.selectHisSupplier(null,false);
private List<BmsRegionTreeVo> buildRegionTreeByRegionIds(Integer stopFlag, List<String> regionIds){
return this.buildRegionTreeByRegionIds(null,stopFlag,regionIds);
}
@Nullable
private List<BmsRegionTreeVo> buildRegionTreeByRegionIds(List<String> userIds,Integer stopFlag, List<String> regionIds) {
List<Long> supplierIds;
if(CollectionUtil.isNotEmpty(userIds)){
BmsSupplier supplier = new BmsSupplier();
supplier.setSelectUserIdsFlag(true);
supplier.setSelectUserIds(userIds);
supplierIds = hisUserSupplierService.selectHisSupplier(supplier,false);
}else {
supplierIds = hisUserSupplierService.selectHisSupplier(null,false);
}
supplierIds.add(0L);
List<BmsSupplier> supplierList = bmsSupplierService.listByIds(supplierIds);
List<String> firstRegionIds = supplierList.stream().map(a->a.getRegionFirst()).collect(Collectors.toList());

12
src/main/java/com/qs/serve/modules/goods/controller/GoodsSkuController.java

@ -49,7 +49,7 @@ import java.util.Random;
import java.util.stream.Collectors;
/**
* 商品 sku
* 商品SKU 查询相关接口
* @author YenHex
* @since 2022-10-09
*/
@ -151,5 +151,15 @@ public class GoodsSkuController {
return R.ok(result);
}
/**
* 导出(Post)
* @param param
* @return
*/
@PostMapping("/export")
public R<List<GoodsSkuExportVo>> export4Post(@RequestBody GoodsSku param){
return this.export(param);
}
}

12
src/main/java/com/qs/serve/modules/goods/controller/GoodsSkuOptionController.java

@ -49,7 +49,7 @@ import java.util.Random;
import java.util.stream.Collectors;
/**
* 商品 sku
* 商品SKU 操作层接口
* @author YenHex
* @since 2022-10-09
*/
@ -70,7 +70,7 @@ public class GoodsSkuOptionController {
/**
* 编辑
* 批量编辑状态
* @param param
* @return
*/
@ -87,12 +87,12 @@ public class GoodsSkuOptionController {
goodsSku.setOrderOnlineFlag(param.getOrderOnlineFlag());
goodsSkuService.update(goodsSku,new LambdaQueryWrapper<GoodsSku>()
.in(GoodsSku::getId,param.getSkuIds()));
goodsSpuService.initSkuNum();
//goodsSpuService.initSkuNum();
return R.ok();
}
/**
* 编辑
* 批量编辑特殊品状态
* @param param
* @return
*/
@ -122,7 +122,7 @@ public class GoodsSkuOptionController {
sku.setSpecialFlag(flag);
goodsSkuService.updateById(sku);
}
goodsSpuService.initSkuNum();
//goodsSpuService.initSkuNum();
return R.ok();
}
@ -161,7 +161,7 @@ public class GoodsSkuOptionController {
}
/**
* 编辑
* 保存
* @param param
* @return
*/

46
src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java

@ -49,7 +49,7 @@ import java.util.*;
import java.util.stream.Collectors;
/**
* 商品 spu
* 商品SPU 查询相关接口
* @author YenHex
* @since 2022-10-09
*/
@ -303,7 +303,7 @@ public class GoodsSpuController {
*/
@PostMapping("listLast2Month")
public R<List<GoodsSpu>> listLast2Month(@RequestBody @Valid GoodsHisOrderQuery query){
LocalDate date = LocalDate.now().plusMonths(-2);
LocalDate date = LocalDate.now().plusMonths(-3);
List<String> invCodes = dispatchDataMapper.selectLast2MonthInvCode(date,query.getSupplierCode());
if(CollectionUtil.isNotEmpty(invCodes)){
LambdaQueryWrapper<GoodsSku> skuLqw = new LambdaQueryWrapper<>();
@ -329,9 +329,9 @@ public class GoodsSpuController {
spuLqw.eq(GoodsSpu::getOrderFlag,1);
if(CollectionUtil.isNotEmpty(query.getCateIds())){
spuLqw.and(an->{
an.notIn(GoodsSpu::getCategoryFirst,query.getCateIds())
.or().notIn(GoodsSpu::getCategorySecond,query.getCateIds())
.or().notIn(GoodsSpu::getCategoryThird,query.getCateIds());
an.in(GoodsSpu::getCategoryFirst,query.getCateIds())
.or().in(GoodsSpu::getCategorySecond,query.getCateIds())
.or().in(GoodsSpu::getCategoryThird,query.getCateIds());
});
}
@ -438,6 +438,16 @@ public class GoodsSpuController {
return R.ok(goodsSpu);
}
/**
* 导出
* @param param
* @return
*/
@PostMapping("/export")
public R<List<GoodsSpuExportVo>> export4Post(@RequestBody GoodsSpu param){
return this.export(param);
}
/**
* 导出
* @param param
@ -450,17 +460,25 @@ public class GoodsSpuController {
}
List<GoodsSpu> list = goodsSpuService.selectSpuList(param);
List<GoodsSpuExportVo> exportVoList = list.stream().map(a->{
GoodsSpuExportVo vo = new GoodsSpuExportVo();
vo.setId(a.getId());
vo.setSpuCode(a.getSpuCode());
vo.setName(a.getName());
vo.setShelf(a.getShelf());
vo.setOrderFlag(a.getOrderFlag());
vo.setCostFlag(a.getCostFlag());
vo.setGoodsSaleType(a.getGoodsSaleType());
vo.setSpuCunhuoFlag(a.getSpuCunhuoFlag());
GoodsSpuExportVo vo = CopierUtil.copy(a,new GoodsSpuExportVo());
// vo.setId(a.getId());
// vo.setSpuCode(a.getSpuCode());
// vo.setName(a.getName());
// vo.setShelf(a.getShelf());
// vo.setOrderFlag(a.getOrderFlag());
// vo.setCostFlag(a.getCostFlag());
// vo.setGoodsSaleType(a.getGoodsSaleType());
// vo.setSpuCunhuoFlag(a.getSpuCunhuoFlag());
vo.setCateCode(a.getCateThirdCode());
vo.setCateName(a.getCateThirdLabel());
// vo.setSaleNum(a.getSaleNum());
// vo.setTasteValue(a.getTasteValue());
// vo.setSkuNumVal(a.getSkuNumVal());
// vo.setBookBelong(a.getBookBelong());
// vo.setBookName(a.getBookName());
// vo.setCateFirstLabel(a.getCateFirstLabel());
// vo.setCateSecondLabel(a.getCateSecondLabel());
// vo.setCateThirdLabel(a.getCateThirdLabel());
return vo;
}).collect(Collectors.toList());
return R.ok(exportVoList);

13
src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuOptionController.java

@ -29,9 +29,10 @@ import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.*;
import java.util.stream.Collectors;
/**
* 商品 spu
* 商品SPU 操作层接口
* @author YenHex
* @since 2022-10-09
*/
@ -82,7 +83,7 @@ public class GoodsSpuOptionController {
* @param param
* @return
*/
@GetMapping("/updateStateBatch")
@PostMapping("/updateStateBatch")
@SysLog(module = SystemModule.GOODS, title = "spu", biz = BizType.UPDATE)
public R<?> updateShelfBatch(@RequestBody GoodsSpuStateBo param){
param.initProp();
@ -201,6 +202,14 @@ public class GoodsSpuOptionController {
final String SAVE = "1";
final String NONE = "4";
Set<String> spuCodeSet = param.getSpuList().stream()
.map(GoodsSpuImportBo.SpuItem::getSpuCode)
.collect(Collectors.toSet());
if(param.getSpuList().size()!=spuCodeSet.size()){
Assert.throwEx("SKU编码不可重复");
}
//导入
List<String> spuCodes = new ArrayList<>();
List<String> cateCodes = new ArrayList<>();

17
src/main/java/com/qs/serve/modules/goods/entity/GoodsSku.java

@ -192,6 +192,23 @@ public class GoodsSku implements Serializable {
@TableField(exist = false)
private String seriesName;
/**
* 品牌
*/
@TableField(exist = false)
private String brandCode;
/**
* 分类
*/
@TableField(exist = false)
private String categoryCode;
/**
* 系列
*/
@TableField(exist = false)
private String seriesCode;
/**
* spuCode
*/

10
src/main/java/com/qs/serve/modules/goods/entity/GoodsSpu.java

@ -160,6 +160,14 @@ public class GoodsSpu implements Serializable {
@TableField(exist = false)
private String cateThirdLabel;
/** 一级类目:品牌名称 */
@TableField(exist = false)
private String cateFirstCode;
/** 二级类目:类目名称 */
@TableField(exist = false)
private String cateSecondCode;
/** 三级类目:系列名称 */
@TableField(exist = false)
private String cateThirdCode;
@ -281,6 +289,8 @@ public class GoodsSpu implements Serializable {
this.setWeight(goodsSku.getWeight()==null?"0":goodsSku.getWeight().toString());
this.setVolume(goodsSku.getVolume()==null?"0":goodsSku.getVolume().toString());
this.setUuid(goodsSku.getSpuId()+"_"+goodsSku.getId());
this.setSkuBelong(goodsSku.getBelong());
}
}

45
src/main/java/com/qs/serve/modules/goods/entity/vo/GoodsSkuExportVo.java

@ -21,7 +21,6 @@ import java.util.List;
* @since 2022-10-09
*/
@Data
@TableName("goods_sku")
public class GoodsSkuExportVo implements Serializable {
private static final long serialVersionUID = 1L;
@ -80,6 +79,8 @@ public class GoodsSkuExportVo implements Serializable {
@NotNull(message = "产地不能为空")
private String belong;
/** 账套名称 */
private String bookName;
/** 包装 */
@NotNull(message = "包装不能为空")
private String wrapVal;
@ -91,5 +92,47 @@ public class GoodsSkuExportVo implements Serializable {
/** 可投放费用标识 */
private Integer costFlag;
private String skuAddCode;
/** 规格值 */
private String specInfos;
/** 净重 */
private BigDecimal invUnitWeight;
/** 单位id */
private Long unitId;
/** 单位 */
private String unitName;
/**
* 品牌
*/
@TableField(exist = false)
private String brandName;
/**
* 分类
*/
@TableField(exist = false)
private String categoryName;
/**
* 系列
*/
@TableField(exist = false)
private String seriesName;
/**
* 品牌
*/
@TableField(exist = false)
private String brandCode;
/**
* 分类
*/
@TableField(exist = false)
private String categoryCode;
/**
* 系列
*/
@TableField(exist = false)
private String seriesCode;
}

38
src/main/java/com/qs/serve/modules/goods/entity/vo/GoodsSpuExportVo.java

@ -60,5 +60,43 @@ public class GoodsSpuExportVo implements Serializable {
private String cateName;
/** 账套名称 */
private String bookName;
/** 销量 */
private Integer saleNum;
/** 产品口味(非sku规格值) */
private String tasteValue;
/** 可下单/特殊品/未启用数量 */
private String skuNumVal;
/** 账套编码 */
private String bookBelong;
/** 一级类目:品牌名称 */
@TableField(exist = false)
private String cateFirstLabel;
/** 二级类目:类目名称 */
@TableField(exist = false)
private String cateSecondLabel;
/** 三级类目:系列名称 */
@TableField(exist = false)
private String cateThirdLabel;
/** 一级类目:品牌名称 */
@TableField(exist = false)
private String cateFirstCode;
/** 二级类目:类目名称 */
@TableField(exist = false)
private String cateSecondCode;
/** 三级类目:系列名称 */
@TableField(exist = false)
private String cateThirdCode;
}

23
src/main/java/com/qs/serve/modules/wx/api/WxSvcUserApi.java

@ -11,10 +11,7 @@ import com.qs.serve.common.model.consts.RedisCacheKeys;
import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.model.enums.BizType;
import com.qs.serve.common.model.enums.InterType;
import com.qs.serve.common.util.AuthContextUtils;
import com.qs.serve.common.util.IdUtil;
import com.qs.serve.common.util.JwtUtils;
import com.qs.serve.common.util.StringUtils;
import com.qs.serve.common.util.*;
import com.qs.serve.modules.base.TencentYunSmsService;
import com.qs.serve.modules.base.TianYiYunSmsService;
import com.qs.serve.modules.sys.entity.SysDept;
@ -67,6 +64,7 @@ public class WxSvcUserApi {
@GetMapping("/info")
public R<?> info(){
WxUser wxUser = wxUserService.getCurrentWxUser(true);
SysUserVo sysUserVo = null;
if(StringUtils.hasText(wxUser.getSysUserId())){
SysUser sysUser = sysUserService.getById(wxUser.getSysUserId());
if(sysUser!=null){
@ -80,9 +78,22 @@ public class WxSvcUserApi {
LoginUser userDetails = userDetailsService.buildLoginUser(sysUser);
sysUser.setAuthorIds(menuIds);
sysUser.setAuthorList(userDetails.getAuthorList());
SysUserVo sysUserVo = sysUser.toSysUserVo(false);
wxUser.setSysUserInfo(sysUserVo);
sysUserVo = sysUser.toSysUserVo(false);
}
}
if(wxUser.getAppType()!=null&&wxUser.getAppType().equals(3)){
//企业微信转化为公众号用户
WxUser wxUser1 = wxUserService.getOne(new LambdaQueryWrapper<WxUser>()
.eq(WxUser::getSysUserId,wxUser.getSysUserId())
.eq(WxUser::getAppType,2),false);
if(wxUser1==null){
Assert.throwEx("请前往公众号绑定信息");
}
wxUser1.setSysUserInfo(sysUserVo);
return R.ok(wxUser1);
}else {
wxUser.setSysUserInfo(sysUserVo);
}
return R.ok(wxUser);
}

3
src/main/java/com/qs/serve/modules/wx/service/impl/WxUserServiceImpl.java

@ -69,6 +69,7 @@ public class WxUserServiceImpl extends ServiceImpl<WxUserMapper, WxUser> impleme
@Autowired
private RedisService redisService;
@Autowired
private SysUserMapper sysUserMapper;
private List<String> getOpenIds(WxMpUserService wxMpUserService,String nextOpenId){
@ -216,7 +217,7 @@ public class WxUserServiceImpl extends ServiceImpl<WxUserMapper, WxUser> impleme
//if(StringUtils.hasText(wxCpUser.getMobile())){
//List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
// .eq(SysUser::getMobile,wxCpUser.getMobile()));
List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>().eq(SysUser::getName,userId));
List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>().eq(SysUser::getCode,userId));
if(sysUsers.size()>0){
if(sysUsers.size()>1){
//log.error("企业微信登录,一个号码被多人使用:{}",wxCpUser.getMobile());

3
src/main/resources/mapper/goods/GoodsSkuMapper.xml

@ -148,6 +148,9 @@
cate1.`name` as brandName,
cate2.`name` as categoryName,
cate3.`name` as seriesName,
cate1.`code` as brandCode,
cate2.`code` as categoryCode,
cate3.`code` as seriesCode,
<include refid="goodsSkuSql"/>
FROM `goods_sku` `goods_sku`
LEFT JOIN `goods_spu` ON `goods_sku`.`spu_id` = `goods_spu`.id

2
src/main/resources/mapper/goods/GoodsSpuMapper.xml

@ -249,6 +249,8 @@
`cate1`.`name` AS `cate_first_label`,
`cate2`.`name` AS `cate_second_label`,
`cate3`.`name` AS `cate_third_label`,
`cate1`.`code` AS `cate_first_code`,
`cate2`.`code` AS `cate_second_code`,
`cate3`.`code` AS `cate_third_code`,
<include refid="goodsSpuSql"/>
FROM `goods_spu` `goods_spu`

Loading…
Cancel
Save