Commit ff324a3a by giaogiao

包名修改. 日志修改

parent c307c58c
......@@ -39,9 +39,9 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
@EnableTransactionManagement
@EnableConfigurationProperties
@ServletComponentScan
@ConfigurationPropertiesScan("com.sien.common.config")
@MapperScan({"io.geekidea.springbootplus.**.mapper", "com.sien.**.mapper"})
@SpringBootApplication(scanBasePackages = {"io.geekidea.springbootplus", "com.sien", "com.sien.common", "com.sien.common.config"})
@ConfigurationPropertiesScan("com.wecloud.im.config")
@MapperScan({"io.geekidea.springbootplus.**.mapper", "com.wecloud.**.mapper"})
@SpringBootApplication(scanBasePackages = {"io.geekidea.springbootplus", "com.wecloud", "com.wecloud.im", "com.wecloud.im.config"})
public class SpringBootPlusApplication {
public static void main(String[] args) {
......
package io.geekidea.springbootplus;
import com.sien.common.tillo.netty.core.NettyStart;
import com.wecloud.im.tillo.netty.core.NettyStart;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
......
......@@ -17,9 +17,9 @@
package io.geekidea.springbootplus.config;
import com.alibaba.fastjson.JSON;
import com.sien.common.interceptor.DownloadInterceptor;
import com.sien.common.interceptor.ResourceInterceptor;
import com.sien.common.interceptor.UploadInterceptor;
import com.wecloud.im.interceptor.DownloadInterceptor;
import com.wecloud.im.interceptor.ResourceInterceptor;
import com.wecloud.im.interceptor.UploadInterceptor;
import io.geekidea.springbootplus.config.properties.SpringBootPlusFilterProperties;
import io.geekidea.springbootplus.config.properties.SpringBootPlusInterceptorProperties;
import io.geekidea.springbootplus.config.properties.SpringBootPlusProperties;
......
......@@ -18,8 +18,8 @@ package io.geekidea.springbootplus.handler;
import com.alibaba.fastjson.JSON;
import com.auth0.jwt.exceptions.JWTDecodeException;
import com.sien.common.exception.SysLoginException;
import com.sien.common.exception.VerificationCodeException;
import com.wecloud.im.exception.SysLoginException;
import com.wecloud.im.exception.VerificationCodeException;
import io.geekidea.springbootplus.framework.common.api.ApiCode;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.exception.BusinessException;
......
package io.geekidea.springbootplus.test;
import com.sien.common.factory.PushFactory;
import com.sien.common.service.DonationRecordService;
import com.sien.common.vo.DonationRankAndTotal;
import com.wecloud.im.factory.PushFactory;
import com.wecloud.im.service.DonationRecordService;
import com.wecloud.im.vo.DonationRankAndTotal;
import me.chanjar.weixin.common.bean.WxOAuth2UserInfo;
import me.chanjar.weixin.common.bean.oauth2.WxOAuth2AccessToken;
import me.chanjar.weixin.mp.api.WxMpService;
......
package com.sien.common.controller;
import com.sien.common.service.AppSmsService;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.controller.BaseController;
import io.geekidea.springbootplus.framework.log.annotation.OperationLog;
import io.geekidea.springbootplus.framework.log.enums.OperationLogType;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* APP用户 控制器
*
* @author wei
* @since 2020-09-23
*/
@Slf4j
@RestController
@Api(value = "短信验证码", tags = {"APP短信验证码相关"})
@RequestMapping("/sms")
public class AppSmsController extends BaseController {
@Autowired
private AppSmsService appSmsService;
/**
* 获取注册验证码
*/
@GetMapping("/registerOrLoginCode")
@OperationLog(name = "获取注册或登陆的验证码", type = OperationLogType.INFO)
@ApiOperation(value = "获取注册或登陆的验证码", response = Object.class, notes = "本地环境默认666666")
public ApiResult<Object> registerOrLoginCode(@RequestParam String phoneArea, @RequestParam String phone) throws Exception {
return appSmsService.registerOrLoginCode(phoneArea, phone);
}
/**
* 修改手机号,向旧手机号发验证码
*/
@GetMapping("/updatePhoneCode")
@OperationLog(name = "修改手机号,向旧手机号发验证码", type = OperationLogType.INFO)
@ApiOperation(value = "向旧手机号发验证码-修改手机号", response = Object.class, notes = "本地环境默认666666")
public ApiResult<Object> updatePhoneCode() throws Exception {
return appSmsService.updatePhoneCodeSendToOld();
}
/**
* 修改手机号,向旧手机号发验证码
*/
@GetMapping("/updatePhoneCodeToNew")
@OperationLog(name = "修改手机号,向新手机号发验证码", type = OperationLogType.INFO)
@ApiOperation(value = "向新手机号发验证码-修改手机号", response = Object.class, notes = "本地环境默认666666")
public ApiResult<Object> updatePhoneCodeSendToNew(@RequestParam String phoneArea, @RequestParam String phone) throws Exception {
return appSmsService.updatePhoneCodeSendToNew(phoneArea, phone);
}
/**
* 校验旧手机验证码
*/
@GetMapping("/checkPhoneCodeOld")
@OperationLog(name = "校验旧手机验证码", type = OperationLogType.INFO)
@ApiOperation(value = "校验旧手机验证码-修改手机号", response = Object.class, notes = "本地环境默认666666")
public ApiResult<Boolean> checkPhoneCodeOld(@RequestParam String code) throws Exception {
return appSmsService.checkPhoneCodeOld(code);
}
}
package com.sien.common.controller;
import com.sien.common.param.app.AppSmsRegisterParam;
import com.sien.common.param.app.AppUserInfoParam;
import com.sien.common.param.app.AppUserPhoneUpdateParam;
import com.sien.common.service.AppUserApiService;
import com.sien.common.service.AppUserService;
import com.sien.common.vo.AppUserQueryVo;
import com.sien.common.vo.app.LoginAppUserTokenVo;
import com.sien.common.vo.app.MyInfoVo;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.controller.BaseController;
import io.geekidea.springbootplus.framework.log.annotation.Module;
import io.geekidea.springbootplus.framework.log.annotation.OperationLog;
import io.geekidea.springbootplus.framework.log.enums.OperationLogType;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* APP用户 控制器
*
* @author wei
* @since 2020-09-23
*/
@Slf4j
@RestController
@Module("api-app")
@Api(value = "用户API", tags = {"APP用户相关"})
@RequestMapping("/user")
public class AppUserController extends BaseController {
@Autowired
private AppUserService appUserService;
@Autowired
private AppUserApiService appUserApiService;
/**
* 获取自己的信息详情
*/
@GetMapping("/myInfo/")
@OperationLog(name = "APP用户详情", type = OperationLogType.INFO)
@ApiOperation(value = "获取APP用户详情", response = AppUserQueryVo.class)
public ApiResult<MyInfoVo> getAppUser() throws Exception {
MyInfoVo appUserQueryVo = appUserService.getMyInfo();
return ApiResult.ok(appUserQueryVo);
}
@PostMapping("/registerOrLogin")
@Validated
@ApiOperation(value = "手机号注册+登陆", notes = "app用户注册+登陆", response = LoginAppUserTokenVo.class)
public ApiResult<LoginAppUserTokenVo> registerOrLogin(@Validated @RequestBody AppSmsRegisterParam appSmsRegisterParam, @RequestHeader(required = false) String language) throws Exception {
return appUserApiService.register(appSmsRegisterParam, language);
}
/**
* 补充或修改APP用户信息
*/
@PostMapping("/updateAppUserInfo")
@OperationLog(name = "补充或修改APP用户信息", type = OperationLogType.ADD)
@ApiOperation(value = "补充或修改APP用户信息", notes = "不需要修改的字段传入null或直接不传入该字段,如果传入空双引号的话会将数据置为空 ", response = ApiResult.class)
public ApiResult<Boolean> updateAppUserInfo(@RequestBody AppUserInfoParam appUserInfoParam) throws Exception {
boolean flag = appUserApiService.updateAppUser(appUserInfoParam);
return ApiResult.result(flag);
}
/**
* 修改手机号
*/
@PostMapping("/updatePhone")
@OperationLog(name = "修改手机号", type = OperationLogType.ADD)
@ApiOperation(value = "修改手机号", response = ApiResult.class)
public ApiResult<Boolean> updatePhone(@RequestBody AppUserPhoneUpdateParam userPhoneUpdateParam) throws Exception {
return appUserApiService.updatePhone(userPhoneUpdateParam.getPhoneArea(), userPhoneUpdateParam.getPhone(), userPhoneUpdateParam.getCode(), userPhoneUpdateParam.getCodeNew());
}
// @GetMapping("/userInfoList")
// @ApiOperation(value = "批量获取用户信息")
// public ApiResult<List<AppUser>> getUserInfoList(@RequestParam("uids") Set<Long> uids) {
// return appUserApiService.getAppUserList(uids);
// }
/**
* APP用户分页列表
*//*
@PostMapping("/getPageList")
@OperationLog(name = "APP用户分页列表", type = OperationLogType.PAGE)
@ApiOperation(value = "APP用户分页列表", response = AppUserQueryVo.class)
@RequiresRoles("sys:admin")
public ApiResult<Paging<AppUserQueryVo>> getAppUserPageList(@Validated @RequestBody AppUserPageParam appUserPageParam) throws Exception {
Paging<AppUserQueryVo> paging = appUserService.getAppUserPageList(appUserPageParam);
return ApiResult.ok(paging);
}*/
// @GetMapping("/userInfo")
// @ApiOperation(value = "根据token获取userInfo", notes = "客服模块调用")
// public AppUser getUserInfo() {
// return appUserApiService.getUserInfo(Long.valueOf(JwtUtil.getUsername(JwtTokenUtil.getToken())));
// }
// /**
// * 添加或修改推送token
// */
// @PostMapping("/addDeviceToken")
// @OperationLog(name = "添加或修改推送token", type = OperationLogType.ADD)
// @ApiOperation(value = "添加或修改推送token", notes = "添加和修改都调用此接口", response = ApiResult.class)
// public ApiResult<Boolean> addDeviceToken(@RequestBody DeviceTokenParam deviceTokenParam) throws Exception {
// boolean flag = appUserService.updateDeviceToken(deviceTokenParam, deviceTokenParam.getDeviceType());
// return ApiResult.result(flag);
// }
/* *//**
* 添加APP用户
*//*
@PostMapping("/add")
@OperationLog(name = "添加APP用户", type = OperationLogType.ADD)
@ApiOperation(value = "添加APP用户", response = ApiResult.class)
@RequiresRoles("sys:admin")
public ApiResult<Boolean> addAppUser(@Validated(Add.class) @RequestBody AppUser appUser) throws Exception {
boolean flag = appUserService.saveAppUser(appUser);
return ApiResult.result(flag);
}
*//**
* 修改APP用户
*//*
@PostMapping("/update")
@OperationLog(name = "修改APP用户", type = OperationLogType.UPDATE)
@ApiOperation(value = "修改APP用户", response = ApiResult.class)
@RequiresRoles("sys:admin")
public ApiResult<Boolean> updateAppUser(@Validated(Update.class) @RequestBody AppUser appUser) throws Exception {
boolean flag = appUserService.updateAppUser(appUser);
return ApiResult.result(flag);
}
*//**
* 删除APP用户
*//*
@PostMapping("/delete/{id}")
@OperationLog(name = "删除APP用户", type = OperationLogType.DELETE)
@ApiOperation(value = "删除APP用户", response = ApiResult.class)
@RequiresRoles("sys:admin")
public ApiResult<Boolean> deleteAppUser(@PathVariable("id") Long id) throws Exception {
boolean flag = appUserService.deleteAppUser(id);
return ApiResult.result(flag);
}
*/
/**
* 获取APP用户详情
*/
/*
@GetMapping("/info/{id}")
@OperationLog(name = "APP用户详情", type = OperationLogType.INFO)
@ApiOperation(value = "APP用户详情", response = AppUserQueryVo.class)
@RequiresRoles("sys:admin")
public ApiResult<AppUserQueryVo> getAppUser(@PathVariable("id") Long id) throws Exception {
AppUserQueryVo appUserQueryVo = appUserService.getAppUserById(id);
return ApiResult.ok(appUserQueryVo);
}
*/
}
package com.sien.common.controller;
import com.github.binarywang.wxpay.bean.order.WxPayMpOrderResult;
import com.sien.common.param.DonationRecordPageParam;
import com.sien.common.param.app.DonationRecordAdd;
import com.sien.common.service.DonationRecordService;
import com.sien.common.vo.DonationRecordQueryVo;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.controller.BaseController;
import io.geekidea.springbootplus.framework.core.pagination.Paging;
import io.geekidea.springbootplus.framework.core.validator.groups.Add;
import io.geekidea.springbootplus.framework.log.annotation.OperationLog;
import io.geekidea.springbootplus.framework.log.enums.OperationLogType;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 捐款记录 控制器
*
* @author hewei
* @since 2021-02-25
*/
@Slf4j
@RestController
@RequestMapping("/donationRecord")
@Api(value = "捐款记录API", tags = {"捐款记录"})
public class DonationRecordController extends BaseController {
@Autowired
private DonationRecordService donationRecordService;
/**
* 添加捐款记录
*/
@PostMapping("/add")
@OperationLog(name = "我要捐款", type = OperationLogType.ADD)
@ApiOperation(value = "我要捐款")
public ApiResult<WxPayMpOrderResult> addDonationRecord(@Validated(Add.class) @RequestBody DonationRecordAdd donationRecordAdd) throws Exception {
return donationRecordService.add(donationRecordAdd);
}
/**
* 我的捐款记录分页列表
*/
// @PostMapping("/getMyPageList")
// @OperationLog(name = "我的捐款记录分页列表", type = OperationLogType.PAGE)
// @ApiOperation(value = "我的捐款记录分页列表")
// public ApiResult<List<DonationRecord>> getDonationRecordPageList() throws Exception {
// return donationRecordService.getDonationRecordAllList();
// }
/**
* 我的捐款记录分页列表
*/
@PostMapping("/getMyPageList")
@OperationLog(name = "我的捐款记录分页列表", type = OperationLogType.PAGE)
@ApiOperation(value = "我的捐款记录分页列表")
public ApiResult<Paging<DonationRecordQueryVo>> getDonationRecordPageList(@Validated @RequestBody DonationRecordPageParam donationRecordPageParam) throws Exception {
Paging<DonationRecordQueryVo> paging = donationRecordService.getDonationRecordPageList(donationRecordPageParam);
return ApiResult.ok(paging);
}
// /**
// * 获取捐款记录详情
// */
// @GetMapping("/info/{id}")
// @OperationLog(name = "捐款记录详情", type = OperationLogType.INFO)
// @ApiOperation(value = "捐款记录详情")
// public ApiResult<DonationRecordQueryVo> getDonationRecord(@PathVariable("id") Long id)throws Exception{
// DonationRecordQueryVo donationRecordQueryVo = donationRecordService.getDonationRecordById(id);
// return ApiResult.ok(donationRecordQueryVo);
// }
// /**
// * 修改捐款记录
// */
// @PostMapping("/update")
// @OperationLog(name = "修改捐款记录", type = OperationLogType.UPDATE)
// @ApiOperation(value = "修改捐款记录")
// public ApiResult<Boolean> updateDonationRecord(@Validated(Update.class) @RequestBody DonationRecord donationRecord)throws Exception{
// boolean flag= donationRecordService.updateDonationRecord(donationRecord);
// return ApiResult.result(flag);
// }
//
// /**
// * 删除捐款记录
// */
// @PostMapping("/delete/{id}")
// @OperationLog(name = "删除捐款记录", type = OperationLogType.DELETE)
// @ApiOperation(value = "删除捐款记录")
// public ApiResult<Boolean> deleteDonationRecord(@PathVariable("id") Long id)throws Exception{
// boolean flag= donationRecordService.deleteDonationRecord(id);
// return ApiResult.result(flag);
// }
}
package com.sien.common.controller;
import com.github.binarywang.wxpay.bean.order.WxPayMpOrderResult;
import com.sien.common.param.VipOpenParam;
import com.sien.common.service.VipRecordService;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.controller.BaseController;
import io.geekidea.springbootplus.framework.core.validator.groups.Add;
import io.geekidea.springbootplus.framework.log.annotation.OperationLog;
import io.geekidea.springbootplus.framework.log.enums.OperationLogType;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* Vip开通记录 控制器
*
* @author hewei
* @since 2021-02-25
*/
@Slf4j
@RestController
@RequestMapping("/vipRecord")
@Api(value = "Vip开通API", tags = {"Vip开通"})
public class VipRecordController extends BaseController {
@Autowired
private VipRecordService vipRecordService;
/**
* Vip开通
*/
@PostMapping("/open")
@OperationLog(name = "开通Vip", type = OperationLogType.ADD)
@ApiOperation(value = "开通Vip")
public ApiResult<WxPayMpOrderResult> openVip(@Validated(Add.class) @RequestBody VipOpenParam vipOpenParam) throws Exception {
return vipRecordService.openVip(vipOpenParam);
}
// /**
// * 添加Vip开通记录
// */
// @PostMapping("/add")
// @OperationLog(name = "添加Vip开通记录", type = OperationLogType.ADD)
// @ApiOperation(value = "添加Vip开通记录")
// public ApiResult<Boolean> addVipRecord(@Validated(Add.class) @RequestBody VipRecord vipRecord)throws Exception{
// boolean flag= vipRecordService.saveVipRecord(vipRecord);
// return ApiResult.result(flag);
// }
//
// /**
// * 修改Vip开通记录
// */
// @PostMapping("/update")
// @OperationLog(name = "修改Vip开通记录", type = OperationLogType.UPDATE)
// @ApiOperation(value = "修改Vip开通记录")
// public ApiResult<Boolean> updateVipRecord(@Validated(Update.class) @RequestBody VipRecord vipRecord)throws Exception{
// boolean flag= vipRecordService.updateVipRecord(vipRecord);
// return ApiResult.result(flag);
// }
//
// /**
// * 删除Vip开通记录
// */
// @PostMapping("/delete/{id}")
// @OperationLog(name = "删除Vip开通记录", type = OperationLogType.DELETE)
// @ApiOperation(value = "删除Vip开通记录")
// public ApiResult<Boolean> deleteVipRecord(@PathVariable("id") Long id)throws Exception{
// boolean flag= vipRecordService.deleteVipRecord(id);
// return ApiResult.result(flag);
// }
//
// /**
// * 获取Vip开通记录详情
// */
// @GetMapping("/info/{id}")
// @OperationLog(name = "Vip开通记录详情", type = OperationLogType.INFO)
// @ApiOperation(value = "Vip开通记录详情")
// public ApiResult<VipRecordQueryVo> getVipRecord(@PathVariable("id") Long id)throws Exception{
// VipRecordQueryVo vipRecordQueryVo = vipRecordService.getVipRecordById(id);
// return ApiResult.ok(vipRecordQueryVo);
// }
//
// /**
// * Vip开通记录分页列表
// */
// @PostMapping("/getPageList")
// @OperationLog(name = "Vip开通记录分页列表", type = OperationLogType.PAGE)
// @ApiOperation(value = "Vip开通记录分页列表")
// public ApiResult<Paging<VipRecordQueryVo>>getVipRecordPageList(@Validated @RequestBody VipRecordPageParam vipRecordPageParam)throws Exception{
// Paging<VipRecordQueryVo> paging = vipRecordService.getVipRecordPageList(vipRecordPageParam);
// return ApiResult.ok(paging);
// }
}
package com.sien.common.controller;
import com.sien.common.service.AppUserService;
import com.sien.common.vo.app.LoginAppUserTokenVo;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.controller.BaseController;
import io.geekidea.springbootplus.framework.log.annotation.Module;
import io.geekidea.springbootplus.framework.log.annotation.OperationLog;
import io.geekidea.springbootplus.framework.log.enums.OperationLogType;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* APP用户 控制器
*
* @author wei
* @since 2020-09-23
*/
@Slf4j
@RestController
@Module("api-app")
@Api(value = "微信登陆相关", tags = {"微信登陆相关"})
@RequestMapping("/wechatUser")
public class WechatUserController extends BaseController {
@Autowired
private AppUserService appUserService;
/**
* 根据微信重定向code查询用户是否绑定
*/
@GetMapping("/check/")
@OperationLog(name = "根据微信重定向code查询用户是否绑定", type = OperationLogType.INFO)
@ApiOperation(value = "根据微信重定向code查询用户是否绑定", notes = "用户每次从微信公众号菜单页跳转,都必须调用此接口,来判断用户是否已经绑定用户," +
" 如果已经绑定就直接返回绑定用户的token,如没有绑定则需要用户进行注册,", response = LoginAppUserTokenVo.class)
public ApiResult<LoginAppUserTokenVo> checkAppUser(@RequestParam("code") String code) throws Exception {
return appUserService.checkWechatUserBinding(code);
}
}
package com.sien.common.service;
import com.sien.common.entity.AppUser;
import com.sien.common.param.AppUserPageParam;
import com.sien.common.param.app.AppSmsRegisterParam;
import com.sien.common.param.app.DeviceTokenParam;
import com.sien.common.vo.AppUserQueryVo;
import com.sien.common.vo.app.LoginAppUserTokenVo;
import com.sien.common.vo.app.MyInfoVo;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.service.BaseService;
import io.geekidea.springbootplus.framework.core.pagination.Paging;
import me.chanjar.weixin.common.error.WxErrorException;
;
/**
* APP用户 服务类
*
* @author wei
* @since 2020-09-23
*/
public interface AppUserService extends BaseService<AppUser> {
/**
* 根据手机号判断用户是否存在
* @param phoneArea
* @param phone
* @return
*/
boolean hasUserByPhoneNumer(String phoneArea,String phone);
// /**
// * 注册
// *
// * @param appSmsRegisterParam
// * @param language
// * @return
// */
// ApiResult<LoginAppUserTokenVo> register(AppSmsRegisterParam appSmsRegisterParam, String language);
/**
* 登陆
*
* @param loginParam
* @param language
* @return
*/
ApiResult<LoginAppUserTokenVo> login(AppSmsRegisterParam loginParam, String language,Boolean hasRegister);
/**
* 保存
*
* @param appUser
* @return
* @throws Exception
*/
boolean saveAppUser(AppUser appUser) throws Exception;
/**
* 修改
*
* @param appUser
* @return
* @throws Exception
*/
boolean updateAppUser(AppUser appUser) throws Exception;
/**
* 添加或修改推送token
*
* @param deviceTokenParam
* @param deviceType
* @return
* @throws Exception
*/
boolean updateDeviceToken(DeviceTokenParam deviceTokenParam, int deviceType) throws Exception;
/**
* 删除
*
* @param id
* @return
* @throws Exception
*/
boolean deleteAppUser(Long id) throws Exception;
/**
* 根据ID获取查询对象
*
* @param id
* @return
* @throws Exception
*/
AppUserQueryVo getAppUserById(Long id) throws Exception;
/**
* 获取自己的信息详情
*/
MyInfoVo getMyInfo() throws Exception;
/**
* 查询用户是否绑定微信
*/
ApiResult<LoginAppUserTokenVo> checkWechatUserBinding(String code) throws WxErrorException;
/**
* 获取分页对象
*
* @param appUserPageParam
* @return
* @throws Exception
*/
Paging<AppUserQueryVo> getAppUserPageList(AppUserPageParam appUserPageParam) throws Exception;
}
package com.sien.common.service.impl;
import cn.hutool.core.util.RandomUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.sien.common.entity.AppUser;
import com.sien.common.service.AppSmsService;
import com.sien.common.service.AppUserService;
import com.sien.common.sms.SendSms;
import com.sien.common.vo.AppUserQueryVo;
import com.sien.common.vo.SmsCode;
import io.geekidea.springbootplus.framework.common.api.ApiCode;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.shiro.jwt.JwtToken;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import java.time.Duration;
@Service
@Slf4j
public class AppSmsServiceImpl implements AppSmsService {
@Autowired
private AppUserService appUserService;
/**
* 获取当前环境
*/
@Value("${spring.profiles.active}")
private String profiles;
@Autowired
private RedisTemplate redisTemplate;
/**
* 测试环境
*/
private static final String DEV_PROFILE = "dev";
/**
* 测试环境默认短信验证码
*/
private static final String DEFAULT_DEV_SMS_CODE = "666666";
/**
* 注册 短信验证码redis的key值
*/
private static final String SMS_REGIEST = "sms:app:register:%s_%s";
/**
* 修改 短信验证码redis的key值
*/
private static final String SMS_UPDATE = "sms:app:update:%s_%s";
/**
* 修改 短信验证码redis的key值,新手机
*/
private static final String SMS_UPDATE_NEW = "sms:app:updateNew:%s_%s";
/**
* 短信验证码redis的key值
*/
private static final String SMS_LOGIN = "sms:app:login:%s_%s";
@Override
public void deleteRegisterCode(String area, String number) {
redisTemplate.delete(String.format(SMS_REGIEST, area, number));
}
@Override
public void deleteUpdatePhoneCode(String area, String number) {
redisTemplate.delete(String.format(SMS_UPDATE, area, number));
}
@Override
public void deleteUpdatePhoneCodeNew(String area, String number) {
redisTemplate.delete(String.format(SMS_UPDATE_NEW, area, number));
}
@Override
public ApiResult<Object> registerOrLoginCode(String area, String number) {
return getSmsCodeApiResult(String.format(SMS_REGIEST, area, number), area, number);
}
@Override
public ApiResult<Object> updatePhoneCodeSendToOld() throws Exception {
JwtToken jwtToken = (JwtToken) SecurityUtils.getSubject().getPrincipal();
AppUserQueryVo appUserById = appUserService.getAppUserById(jwtToken.getUserId());
// 向旧手机发送验证码
String key = String.format(SMS_UPDATE, appUserById.getPhoneArea(), appUserById.getPhone());
ApiResult<Object> smsCodeApiResult = getSmsCodeApiResult(key, appUserById.getPhoneArea(), appUserById.getPhone());
return smsCodeApiResult;
}
@Override
public ApiResult<Object> updatePhoneCodeSendToNew(String phoneArea, String phone) {
// 判断手机号是否已经注册
AppUser one = appUserService.getOne(new QueryWrapper<AppUser>().lambda()
.eq(AppUser::getPhoneArea, phoneArea)
.eq(AppUser::getPhone, phone));
if (one != null) {
return ApiResult.fail(ApiCode.UPDATA_PHONE_USE, null);
}
// 向新手机发送验证码
String key = String.format(SMS_UPDATE_NEW, phoneArea, phone);
ApiResult<Object> smsCodeApiResult = getSmsCodeApiResult(key, phoneArea, phone);
return smsCodeApiResult;
}
@Override
public ApiResult<Boolean> checkPhoneCodeOld(String code) throws Exception {
JwtToken jwtToken = (JwtToken) SecurityUtils.getSubject().getPrincipal();
AppUserQueryVo appUserById = appUserService.getAppUserById(jwtToken.getUserId());
boolean equalsRegisterCode = this.equalsUpdatePhoneCodeOld(appUserById.getPhoneArea(), appUserById.getPhone(), code);
if (!equalsRegisterCode) {
return ApiResult.fail(ApiCode.SMS_CODE_ERROR);
}
return ApiResult.ok();
}
/**
* 获取短信验证码
*
* @param key
* @param area
* @param number
* @return
*/
private ApiResult<Object> getSmsCodeApiResult(String key, String area, String number) {
// 生成验证码code
String randomCode = getRandomCode();
// 过期时间(秒)
long expire = 120L;
Duration expireDuration = Duration.ofSeconds(expire);
// 存至redis
redisTemplate.opsForValue().set(key, randomCode, expireDuration);
SmsCode smsCode = new SmsCode();
smsCode.setSmsCode(randomCode);
log.info(area + "," + number + ":" + randomCode);
// 调用短信平台发送短信代码
try {
SendSms.send("+" + area + number, randomCode);
} catch (Exception e) {
e.printStackTrace();
log.error(e.getMessage());
return ApiResult.fail(ApiCode.FAIL, null);
}
return ApiResult.ok(null);
}
@Override
public ApiResult LoginType(String area, String number) {
return getSmsCodeApiResult(String.format(SMS_LOGIN, area, number), area, number);
}
@Override
public boolean equalsRegisterCode(String area, String number, String code) {
return equalsSms(SMS_REGIEST, area, number, code);
}
@Override
public boolean equalsUpdatePhoneCodeOld(String area, String number, String code) {
return equalsSms(SMS_UPDATE, area, number, code);
}
@Override
public boolean equalsUpdatePhoneCodeNew(String area, String number, String code) {
return equalsSms(SMS_UPDATE_NEW, area, number, code);
}
private boolean equalsSms(String type, String area, String number, String code) {
String formatKey = String.format(type, area, number);
Object key = redisTemplate.opsForValue().get(formatKey);
if (key == null) {
return false;
}
return String.valueOf(key).equals(code);
}
@Override
public boolean equalsLoginCode(String area, String number, String code) {
return equalsSms(SMS_LOGIN, area, number, code);
}
/**
* 生成验证码code
*
* @return
*/
String getRandomCode() {
// 如果为测试环境则生成默认
if (profiles.equals(DEV_PROFILE) || profiles.equals("test")) {
return DEFAULT_DEV_SMS_CODE;
} else {
return RandomUtil.randomNumbers(6);
}
}
}
package com.sien.common.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.sien.common.entity.AppUser;
import com.sien.common.param.app.AppSmsRegisterParam;
import com.sien.common.param.app.AppUserInfoParam;
import com.sien.common.service.AppSmsService;
import com.sien.common.service.AppUserApiService;
import com.sien.common.service.AppUserService;
import com.sien.common.vo.AppUserQueryVo;
import com.sien.common.vo.app.LoginAppUserTokenVo;
import io.geekidea.springbootplus.config.properties.WxMpProperties;
import io.geekidea.springbootplus.framework.common.api.ApiCode;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.shiro.jwt.JwtToken;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
import me.chanjar.weixin.mp.config.impl.WxMpDefaultConfigImpl;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
@Service
public class AppUserApiServiceImpl implements AppUserApiService {
@Autowired
private AppSmsService appSmsService;
@Autowired
private AppUserService appUserService;
// @Autowired
// private WxMpService wxMpService;
@Autowired
private WxMpProperties properties;
private WxMpService getWxMpService() {
// 代码里 getConfigs()处报错的同学,请注意仔细阅读项目说明,你的IDE需要引入lombok插件!!!!
final List<WxMpProperties.MpConfig> configs = this.properties.getConfigs();
if (configs == null) {
throw new RuntimeException("添加下相关配置,注意别配错了!");
}
WxMpService service = new WxMpServiceImpl();
service.setMultiConfigStorages(configs
.stream().map(a -> {
WxMpDefaultConfigImpl configStorage;
//
configStorage = new WxMpDefaultConfigImpl();
configStorage.setAppId(a.getAppId());
configStorage.setSecret(a.getSecret());
configStorage.setToken(a.getToken());
configStorage.setAesKey(a.getAesKey());
return configStorage;
}).collect(Collectors.toMap(WxMpDefaultConfigImpl::getAppId, a -> a, (o, n) -> o)));
return service;
}
@Override
public ApiResult<Boolean> updatePhone(String phoneArea, String phone, String code, String codeNew) throws Exception {
JwtToken jwtToken = (JwtToken) SecurityUtils.getSubject().getPrincipal();
AppUserQueryVo appUserById = appUserService.getAppUserById(jwtToken.getUserId());
// 校验旧手机验证码
boolean equalsRegisterCode = appSmsService.equalsUpdatePhoneCodeOld(appUserById.getPhoneArea(), appUserById.getPhone(), code);
if (!equalsRegisterCode) {
return ApiResult.fail(ApiCode.SMS_CODE_ERROR);
}
// 校验新手机验证码
boolean equalsRegisterCodeNew = appSmsService.equalsUpdatePhoneCodeNew(phoneArea, phone, codeNew);
if (!equalsRegisterCodeNew) {
return ApiResult.fail(ApiCode.SMS_CODE_ERROR_NEW);
}
// 删除已使用的旧手机验证码
appSmsService.deleteUpdatePhoneCode(appUserById.getPhoneArea(), appUserById.getPhone());
// 删除已使用的新手机验证码
appSmsService.deleteUpdatePhoneCodeNew(phoneArea, phone);
// 判断手机号是否已经注册
AppUser one = appUserService.getOne(new QueryWrapper<AppUser>().lambda()
.eq(AppUser::getPhoneArea, phoneArea)
.eq(AppUser::getPhone, phone));
if (one != null) {
return ApiResult.fail(ApiCode.BUSINESS_EXCEPTION);
}
AppUser appUser = new AppUser();
appUser.setPhoneArea(phoneArea);
appUser.setPhone(phone);
appUser.setId(jwtToken.getUserId());
boolean b = appUserService.updateById(appUser);
if (b) {
return ApiResult.ok();
}
return ApiResult.fail();
}
@Override
public AppUser getUserInfo(Long userId) {
return appUserService.getOne(new QueryWrapper<AppUser>().lambda().eq(AppUser::getId, userId));
}
@Override
public ApiResult<List<AppUser>> getAppUserList(Set<Long> uids) {
return ApiResult.ok(appUserService.list(new QueryWrapper<AppUser>().lambda().in(AppUser::getId, uids)));
}
@Override
public ApiResult<LoginAppUserTokenVo> register(AppSmsRegisterParam loginParam, String language) throws Exception {
// 校验验证码
boolean equalsRegisterCode = appSmsService.equalsRegisterCode(loginParam.getPhoneArea(), loginParam.getPhone(), loginParam.getSmsCode());
if (!equalsRegisterCode) {
return ApiResult.fail(ApiCode.SMS_CODE_REGIST_ERROR, new LoginAppUserTokenVo());
}
// 删除已使用的验证码
appSmsService.deleteRegisterCode(loginParam.getPhoneArea(), loginParam.getPhone());
// 判断是否已经注册
if (appUserService.hasUserByPhoneNumer(loginParam.getPhoneArea(), loginParam.getPhone())) {
// 如果已经注册直接走登陆的代码
return appUserService.login(loginParam, language, true);
}
// 没注册则保存到数据库
AppUser appUserByOpenId = appUserService.getOne(new QueryWrapper<AppUser>().lambda().eq(AppUser::getWechatOpenId, loginParam.getOpenId()));
appUserByOpenId.setPhoneArea(loginParam.getPhoneArea());
appUserByOpenId.setPhone(loginParam.getPhone());
appUserByOpenId.setUsername(loginParam.getUserName());
boolean isDbOk = appUserService.updateById(appUserByOpenId);
if (!isDbOk) {
return ApiResult.fail(ApiCode.SPRING_BOOT_PLUS_EXCEPTION, new LoginAppUserTokenVo());
}
// 走登陆的代码
return appUserService.login(loginParam, language, false);
}
// @Override
// public ApiResult<LoginAppUserTokenVo> login(AppSmsRegisterParam loginParam, String language) throws Exception {
// return null;
// }
@Override
public boolean updateAppUser(AppUserInfoParam appUserInfoParam) throws Exception {
AppUser appUser = new AppUser();
BeanUtils.copyProperties(appUserInfoParam, appUser);
JwtToken jwtToken = (JwtToken) SecurityUtils.getSubject().getPrincipal();
appUser.setId(jwtToken.getUserId());
return appUserService.updateAppUser(appUser);
}
}
package com.sien.common.service.impl;
import cn.hutool.captcha.generator.RandomGenerator;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.binarywang.wxpay.bean.notify.WxPayNotifyResponse;
import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult;
import com.github.binarywang.wxpay.bean.order.WxPayMpOrderResult;
import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest;
import com.github.binarywang.wxpay.exception.WxPayException;
import com.github.binarywang.wxpay.service.WxPayService;
import com.sien.common.entity.AppUser;
import com.sien.common.entity.VipRecord;
import com.sien.common.mapper.VipRecordMapper;
import com.sien.common.param.VipOpenParam;
import com.sien.common.param.VipRecordPageParam;
import com.sien.common.service.AppUserService;
import com.sien.common.service.VipPriceService;
import com.sien.common.service.VipRecordService;
import com.sien.common.vo.AppUserQueryVo;
import com.sien.common.vo.VipRecordQueryVo;
import com.sien.common.vo.app.VipPriceQueryVo;
import io.geekidea.springbootplus.framework.common.api.ApiCode;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl;
import io.geekidea.springbootplus.framework.core.pagination.PageInfo;
import io.geekidea.springbootplus.framework.core.pagination.Paging;
import io.geekidea.springbootplus.framework.shiro.jwt.JwtToken;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.util.Calendar;
import java.util.Date;
/**
* Vip开通记录 服务实现类
*
* @author hewei
* @since 2021-02-25
*/
@Slf4j
@Service
public class VipRecordServiceImpl extends BaseServiceImpl<VipRecordMapper, VipRecord> implements VipRecordService {
private static final String BODY = "厦门市四恩慈善会开通会员";
private static final String NOTIFY_URL = "/api/pay/notify/vipOrder";
@Autowired
private VipRecordMapper vipRecordMapper;
@Autowired
private WxPayService wxService;
@Autowired
private AppUserService appUserService;
@Resource
HttpServletRequest httpServletRequest;
@Autowired
private VipPriceService vipPriceService;
@Value("${spring-boot-plus.domain}")
private String domain;
@Override
public String vipOrderNotifyResult(String xmlData) {
WxPayOrderNotifyResult notifyResult;
try {
notifyResult = this.wxService.parseOrderNotifyResult(xmlData);
} catch (WxPayException e) {
// 是否能解密成功
e.printStackTrace();
return WxPayNotifyResponse.fail("错误");
}
VipRecord vipRecord = super.getOne(new QueryWrapper<VipRecord>().lambda().eq(VipRecord::getWxMerPayId, notifyResult.getOutTradeNo()));
// 如果已经支付 直接响应成功
if (vipRecord.getPayStatus() == 1) {
return WxPayNotifyResponse.successResp("成功");
}
vipRecord.setPayStatus(1);
vipRecord.setPayTime(new Date());
super.updateById(vipRecord);
return WxPayNotifyResponse.successResp("成功");
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean saveVipRecord(VipRecord vipRecord) throws Exception {
return super.save(vipRecord);
}
private WxPayMpOrderResult getWxPayMpOrderResult(String outTradeNo, String openid, String spbillCreateIp, int totalFee) throws WxPayException {
WxPayUnifiedOrderRequest wxPayUnifiedOrderRequest = new WxPayUnifiedOrderRequest();
wxPayUnifiedOrderRequest.setBody(VipRecordServiceImpl.BODY);
// 商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号
wxPayUnifiedOrderRequest.setOutTradeNo(outTradeNo);
//订单总金额,单位为分,详见支付金额
wxPayUnifiedOrderRequest.setTotalFee(totalFee);
// APP和网页支付提交用户端ip
wxPayUnifiedOrderRequest.setSpbillCreateIp(spbillCreateIp);
// 接收微信支付异步通知回调地址,通知url必须为直接可访问的url,不能携带参数。
wxPayUnifiedOrderRequest.setNotifyUrl(domain + VipRecordServiceImpl.NOTIFY_URL);
wxPayUnifiedOrderRequest.setOpenid(openid);
String jsapi = "JSAPI";
wxPayUnifiedOrderRequest.setTradeType(jsapi);
WxPayMpOrderResult order = null;
// try {
order = this.wxService.createOrder(wxPayUnifiedOrderRequest);
// } catch (WxPayException e) {
// e.printStackTrace();
// }
return order;
}
@Override
public ApiResult<WxPayMpOrderResult> openVip(VipOpenParam vipOpenParam) throws Exception {
JwtToken jwtToken = (JwtToken) SecurityUtils.getSubject().getPrincipal();
AppUserQueryVo appUserById = appUserService.getAppUserById(jwtToken.getUserId());
// 获取vip价格表
VipPriceQueryVo vipPriceById = vipPriceService.getVipPriceById(vipOpenParam.getVipLevelId());
if (vipPriceById == null) {
return ApiResult.fail(ApiCode.FAIL, null);
}
// 应付金额
BigDecimal money = vipPriceById.getPrice().multiply(new BigDecimal(vipOpenParam.getYears()));
// 设置到期时间
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.YEAR, vipOpenParam.getYears());
Date expiredAt = calendar.getTime();
// 商家订单号
String outTradeNo = new RandomGenerator(32).generate();
VipRecord vipRecord = new VipRecord();
vipRecord.setMoney(money);
vipRecord.setExpiredAt(expiredAt);
vipRecord.setYears(vipOpenParam.getYears());
vipRecord.setPayStatus(0);
vipRecord.setWxMerPayId(outTradeNo);
// // 判断是否为替他人
if (vipOpenParam.getIsReplace() == 1) {
// 判断接收人不能为自己
if (appUserById.getPhoneArea().equals(vipOpenParam.getPhoneArea()) &&
appUserById.getPhone().equals(vipOpenParam.getUserPhone())) {
return ApiResult.fail(ApiCode.PHONE_IS_ME, new WxPayMpOrderResult());
}
AppUser user = appUserService.getOne(new QueryWrapper<AppUser>().lambda()
.eq(AppUser::getPhone, vipOpenParam.getUserPhone())
.eq(AppUser::getPhoneArea, vipOpenParam.getPhoneArea()));
//判断接收方是否存在
if (user == null) {
return ApiResult.fail(ApiCode.USER_NOT_FOUND, new WxPayMpOrderResult());
}
vipRecord.setFkUserId(user.getId());
vipRecord.setFkRechargeUser(jwtToken.getUserId());
} else {
vipRecord.setFkUserId(jwtToken.getUserId());
vipRecord.setFkRechargeUser(-1L);
}
// 保存数据库
boolean save = super.save(vipRecord);
if (save) {
// 保存成功调用微信支付
String ip = httpServletRequest.getRemoteAddr();
BigDecimal num2 = new BigDecimal(100);
int totalFee = money.multiply(num2).intValue();
WxPayMpOrderResult wxPayMpOrderResult = getWxPayMpOrderResult(outTradeNo, appUserById.getWechatOpenId(), ip, totalFee);
return ApiResult.ok(wxPayMpOrderResult);
} else {
return ApiResult.fail(ApiCode.FAIL, null);
}
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean updateVipRecord(VipRecord vipRecord) throws Exception {
return super.updateById(vipRecord);
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean deleteVipRecord(Long id) throws Exception {
return super.removeById(id);
}
@Override
public VipRecordQueryVo getVipRecordById(Long id) throws Exception {
return vipRecordMapper.getVipRecordById(id);
}
@Override
public Paging<VipRecordQueryVo> getVipRecordPageList(VipRecordPageParam vipRecordPageParam) throws Exception {
Page<VipRecordQueryVo> page = new PageInfo<>(vipRecordPageParam, OrderItem.desc(getLambdaColumn(VipRecord::getCreateTime)));
IPage<VipRecordQueryVo> iPage = vipRecordMapper.getVipRecordPageList(page, vipRecordPageParam);
return new Paging<VipRecordQueryVo>(iPage);
}
}
package com.sien.common.campusstore;
package com.wecloud.im.campusstore;
import com.alibaba.fastjson.JSONArray;
import org.apache.ibatis.type.BaseTypeHandler;
......
package com.sien.common.campusstore;
package com.wecloud.im.campusstore;
import com.alibaba.fastjson.JSONObject;
import org.apache.ibatis.type.BaseTypeHandler;
......
package com.sien.common.config;
package com.wecloud.im.config;
import io.geekidea.springbootplus.config.properties.WxMpProperties;
import me.chanjar.weixin.mp.api.WxMpService;
......
package com.sien.common.config;
package com.wecloud.im.config;
import com.github.binarywang.wxpay.config.WxPayConfig;
import com.github.binarywang.wxpay.service.WxPayService;
......
package com.sien.common.constant;
package com.wecloud.im.constant;
/**
* @ClassName Constant
......
package com.sien.common.controller;
package com.wecloud.im.controller;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.log.annotation.OperationLog;
......
package com.sien.common.controller;
package com.wecloud.im.controller;
import com.sien.common.entity.VipPrice;
import com.sien.common.service.VipPriceService;
import com.wecloud.im.entity.VipPrice;
import com.wecloud.im.service.VipPriceService;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.controller.BaseController;
import io.geekidea.springbootplus.framework.log.annotation.OperationLog;
......
......@@ -14,9 +14,9 @@
* limitations under the License.
*/
package com.sien.common.convert;
package com.wecloud.im.convert;
import com.sien.common.entity.SysUser;
import com.wecloud.im.entity.SysUser;
import io.geekidea.springbootplus.framework.shiro.vo.LoginUserVo;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
......
package com.sien.common.entity;
package com.wecloud.im.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
......
package com.sien.common.entity;
package com.wecloud.im.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
......
package com.sien.common.entity;
package com.wecloud.im.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
......
package com.sien.common.entity;
package com.wecloud.im.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
......
......@@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.sien.common.entity;
package com.wecloud.im.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
......
package com.sien.common.entity;
package com.wecloud.im.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
......
package com.sien.common.entity;
package com.wecloud.im.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
......
......@@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.sien.common.entity;
package com.wecloud.im.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
......
......@@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.sien.common.entity;
package com.wecloud.im.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
......
......@@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.sien.common.entity;
package com.wecloud.im.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
......
......@@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.sien.common.entity;
package com.wecloud.im.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
......
package com.sien.common.entity;
package com.wecloud.im.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
......
package com.sien.common.entity;
package com.wecloud.im.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
......
package com.sien.common.entity;
package com.wecloud.im.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
......
package com.sien.common.entity;
package com.wecloud.im.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
......
package com.sien.common.entity.base;
package com.wecloud.im.entity.base;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
......
......@@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.sien.common.enums;
package com.wecloud.im.enums;
import io.geekidea.springbootplus.framework.common.enums.BaseEnum;
......
package com.sien.common.enums;
package com.wecloud.im.enums;
import io.geekidea.springbootplus.framework.common.enums.BaseEnum;
import lombok.AllArgsConstructor;
......
package com.sien.common.enums;
package com.wecloud.im.enums;
import io.geekidea.springbootplus.framework.common.enums.BaseEnum;
import lombok.AllArgsConstructor;
......
......@@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.sien.common.enums;
package com.wecloud.im.enums;
import io.geekidea.springbootplus.framework.common.enums.BaseEnum;
import lombok.AllArgsConstructor;
......
package com.sien.common.enums;
package com.wecloud.im.enums;
import io.geekidea.springbootplus.framework.common.enums.BaseEnum;
import lombok.AllArgsConstructor;
......
package com.sien.common.enums;
package com.wecloud.im.enums;
import io.geekidea.springbootplus.framework.common.enums.BaseEnum;
import lombok.AllArgsConstructor;
......
package com.sien.common.enums;
package com.wecloud.im.enums;
import io.geekidea.springbootplus.framework.common.enums.BaseEnum;
import lombok.AllArgsConstructor;
......
package com.sien.common.enums;
package com.wecloud.im.enums;
import io.geekidea.springbootplus.framework.common.enums.BaseEnum;
import lombok.AllArgsConstructor;
......
package com.sien.common.enums;
package com.wecloud.im.enums;
import io.geekidea.springbootplus.framework.common.enums.BaseEnum;
import lombok.AllArgsConstructor;
......
......@@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.sien.common.exception;
package com.wecloud.im.exception;
import io.geekidea.springbootplus.framework.common.api.ApiCode;
import io.geekidea.springbootplus.framework.common.exception.SpringBootPlusException;
......
......@@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.sien.common.exception;
package com.wecloud.im.exception;
import io.geekidea.springbootplus.framework.common.api.ApiCode;
import io.geekidea.springbootplus.framework.common.exception.SpringBootPlusException;
......
package com.sien.common.factory;
package com.wecloud.im.factory;
import io.geekidea.springbootplus.config.properties.WxMpProperties;
import me.chanjar.weixin.mp.api.WxMpService;
......
package com.sien.common.factory;
package com.wecloud.im.factory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
......
......@@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.sien.common.interceptor;
package com.wecloud.im.interceptor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
......
......@@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.sien.common.interceptor;
package com.wecloud.im.interceptor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
......
......@@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.sien.common.interceptor;
package com.wecloud.im.interceptor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
......
package com.sien.common.mapper;
package com.wecloud.im.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sien.common.entity.AppUser;
import com.sien.common.param.AppUserPageParam;
import com.sien.common.vo.AppUserQueryVo;
import com.wecloud.im.entity.AppUser;
import com.wecloud.im.param.AppUserPageParam;
import com.wecloud.im.vo.AppUserQueryVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
......
package com.sien.common.mapper;
package com.wecloud.im.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.sien.common.entity.DonationAgent;
import com.sien.common.param.DonationAgentPageParam;
import com.sien.common.vo.DonationAgentQueryVo;
import com.wecloud.im.entity.DonationAgent;
import com.wecloud.im.param.DonationAgentPageParam;
import com.wecloud.im.vo.DonationAgentQueryVo;
import org.springframework.stereotype.Repository;
......
package com.sien.common.mapper;
package com.wecloud.im.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sien.common.entity.DonationRecord;
import com.sien.common.param.DonationRecordPageParam;
import com.sien.common.vo.DonationRankAndTotal;
import com.sien.common.vo.DonationRecordQueryVo;
import com.wecloud.im.entity.DonationRecord;
import com.wecloud.im.param.DonationRecordPageParam;
import com.wecloud.im.vo.DonationRankAndTotal;
import com.wecloud.im.vo.DonationRecordQueryVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
......
package com.sien.common.mapper;
package com.wecloud.im.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sien.common.entity.VipPrice;
import com.sien.common.param.VipPricePageParam;
import com.sien.common.vo.app.VipPriceQueryVo;
import com.wecloud.im.entity.VipPrice;
import com.wecloud.im.param.VipPricePageParam;
import com.wecloud.im.vo.app.VipPriceQueryVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
......
package com.sien.common.mapper;
package com.wecloud.im.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sien.common.entity.VipRecord;
import com.sien.common.param.VipRecordPageParam;
import com.sien.common.vo.VipRecordQueryVo;
import com.wecloud.im.entity.VipRecord;
import com.wecloud.im.param.VipRecordPageParam;
import com.wecloud.im.vo.VipRecordQueryVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
......
package com.sien.common.param;
package com.wecloud.im.param;
import io.swagger.annotations.ApiModel;
import lombok.Data;
......
package com.sien.common.param;
package com.wecloud.im.param;
import io.swagger.annotations.ApiModel;
import lombok.Data;
......
package com.sien.common.param;
package com.wecloud.im.param;
import io.geekidea.springbootplus.framework.core.pagination.BasePageOrderParam;
import io.swagger.annotations.ApiModel;
......
......@@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.sien.common.param;
package com.wecloud.im.param;
import io.geekidea.springbootplus.framework.shiro.service.LoginUsername;
import io.swagger.annotations.ApiModel;
......
......@@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.sien.common.param;
package com.wecloud.im.param;
import io.geekidea.springbootplus.framework.shiro.service.LoginUsername;
import io.swagger.annotations.ApiModel;
......
package com.sien.common.param;
package com.wecloud.im.param;
import io.swagger.annotations.ApiModel;
import lombok.Data;
......
......@@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.sien.common.param;
package com.wecloud.im.param;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
......
package com.sien.common.param;
package com.wecloud.im.param;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
......
package com.sien.common.param;
package com.wecloud.im.param;
import io.geekidea.springbootplus.framework.core.pagination.BasePageOrderParam;
import io.swagger.annotations.ApiModel;
......
package com.sien.common.param;
package com.wecloud.im.param;
import io.geekidea.springbootplus.framework.core.pagination.BasePageOrderParam;
import io.swagger.annotations.ApiModel;
......
package com.sien.common.param;
package com.wecloud.im.param;
import io.geekidea.springbootplus.framework.core.pagination.BasePageOrderParam;
import io.swagger.annotations.ApiModel;
......
......@@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.sien.common.param.app;
package com.wecloud.im.param.app;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
......
......@@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.sien.common.param.app;
package com.wecloud.im.param.app;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
......
package com.sien.common.param.app;
package com.wecloud.im.param.app;
import io.geekidea.springbootplus.framework.common.entity.BaseEntity;
import io.swagger.annotations.ApiModel;
......
package com.sien.common.param.app;
package com.wecloud.im.param.app;
import io.geekidea.springbootplus.framework.common.entity.BaseEntity;
import io.swagger.annotations.ApiModel;
......
package com.sien.common.param.app;
package com.wecloud.im.param.app;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
......
package com.sien.common.param.app;
package com.wecloud.im.param.app;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
......
package com.sien.common.push.jiguang;
package com.wecloud.im.push.jiguang;
import cn.jiguang.common.ClientConfig;
import cn.jiguang.common.ServiceHelper;
......
package com.sien.common.push.umeng;
package com.wecloud.im.push.umeng;
public class App {
......
package com.sien.common.push.umeng;
package com.wecloud.im.push.umeng;
import com.sien.common.push.umeng.android.AndroidBroadcast;
import com.sien.common.push.umeng.android.AndroidCustomizedcast;
import com.sien.common.push.umeng.android.AndroidFilecast;
import com.sien.common.push.umeng.android.AndroidGroupcast;
import com.sien.common.push.umeng.android.AndroidUnicast;
import com.sien.common.push.umeng.ios.IOSBroadcast;
import com.sien.common.push.umeng.ios.IOSCustomizedcast;
import com.sien.common.push.umeng.ios.IOSFilecast;
import com.sien.common.push.umeng.ios.IOSGroupcast;
import com.sien.common.push.umeng.ios.IOSUnicast;
import com.wecloud.im.push.umeng.android.AndroidBroadcast;
import com.wecloud.im.push.umeng.android.AndroidCustomizedcast;
import com.wecloud.im.push.umeng.android.AndroidFilecast;
import com.wecloud.im.push.umeng.android.AndroidGroupcast;
import com.wecloud.im.push.umeng.android.AndroidUnicast;
import com.wecloud.im.push.umeng.ios.IOSBroadcast;
import com.wecloud.im.push.umeng.ios.IOSCustomizedcast;
import com.wecloud.im.push.umeng.ios.IOSFilecast;
import com.wecloud.im.push.umeng.ios.IOSGroupcast;
import com.wecloud.im.push.umeng.ios.IOSUnicast;
import org.json.JSONArray;
import org.json.JSONObject;
......
package com.sien.common.push.umeng;
package com.wecloud.im.push.umeng;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.http.HttpResponse;
......
package com.sien.common.push.umeng;
package com.wecloud.im.push.umeng;
import com.sien.common.factory.PushService;
import com.sien.common.push.umeng.android.AndroidNotification;
import com.wecloud.im.factory.PushService;
import com.wecloud.im.push.umeng.android.AndroidNotification;
import lombok.SneakyThrows;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
......
package com.sien.common.push.umeng;
package com.wecloud.im.push.umeng;
import com.sien.common.factory.PushService;
import com.sien.common.push.umeng.ios.IOSNotification;
import com.wecloud.im.factory.PushService;
import com.wecloud.im.push.umeng.ios.IOSNotification;
import lombok.SneakyThrows;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
......
package com.sien.common.push.umeng;
package com.wecloud.im.push.umeng;
import org.json.JSONObject;
import org.springframework.stereotype.Component;
......
package com.sien.common.push.umeng.android;
package com.wecloud.im.push.umeng.android;
import com.sien.common.push.umeng.AndroidNotification;
import com.wecloud.im.push.umeng.AndroidNotification;
public class AndroidBroadcast extends AndroidNotification {
public AndroidBroadcast(String appkey, String appMasterSecret) throws Exception {
......
package com.sien.common.push.umeng.android;
package com.wecloud.im.push.umeng.android;
import com.sien.common.push.umeng.AndroidNotification;
import com.wecloud.im.push.umeng.AndroidNotification;
public class AndroidCustomizedcast extends AndroidNotification {
public AndroidCustomizedcast(String appkey, String appMasterSecret) throws Exception {
......
package com.sien.common.push.umeng.android;
package com.wecloud.im.push.umeng.android;
import com.sien.common.push.umeng.AndroidNotification;
import com.wecloud.im.push.umeng.AndroidNotification;
public class AndroidFilecast extends AndroidNotification {
public AndroidFilecast(String appkey, String appMasterSecret) throws Exception {
......
package com.sien.common.push.umeng.android;
package com.wecloud.im.push.umeng.android;
import com.sien.common.push.umeng.AndroidNotification;
import com.wecloud.im.push.umeng.AndroidNotification;
import org.json.JSONObject;
public class AndroidGroupcast extends AndroidNotification {
......
package com.sien.common.push.umeng.android;
package com.wecloud.im.push.umeng.android;
import com.sien.common.push.umeng.UmengNotification;
import com.wecloud.im.push.umeng.UmengNotification;
import org.json.JSONObject;
import java.util.Arrays;
......
package com.sien.common.push.umeng.android;
package com.wecloud.im.push.umeng.android;
import com.sien.common.push.umeng.AndroidNotification;
import com.wecloud.im.push.umeng.AndroidNotification;
public class AndroidUnicast extends AndroidNotification {
public AndroidUnicast(String appkey, String appMasterSecret) throws Exception {
......
package com.sien.common.push.umeng.ios;
package com.wecloud.im.push.umeng.ios;
import com.sien.common.push.umeng.IOSNotification;
import com.wecloud.im.push.umeng.IOSNotification;
public class IOSBroadcast extends IOSNotification {
public IOSBroadcast(String appkey, String appMasterSecret) throws Exception {
......
package com.sien.common.push.umeng.ios;
package com.wecloud.im.push.umeng.ios;
import com.sien.common.push.umeng.IOSNotification;
import com.wecloud.im.push.umeng.IOSNotification;
public class IOSCustomizedcast extends IOSNotification {
public IOSCustomizedcast(String appkey, String appMasterSecret) throws Exception {
......
package com.sien.common.push.umeng.ios;
package com.wecloud.im.push.umeng.ios;
import com.sien.common.push.umeng.IOSNotification;
import com.wecloud.im.push.umeng.IOSNotification;
public class IOSFilecast extends IOSNotification {
public IOSFilecast(String appkey, String appMasterSecret) throws Exception {
......
package com.sien.common.push.umeng.ios;
package com.wecloud.im.push.umeng.ios;
import com.sien.common.push.umeng.IOSNotification;
import com.wecloud.im.push.umeng.IOSNotification;
import org.json.JSONObject;
public class IOSGroupcast extends IOSNotification {
......
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