Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
amos-boot-biz
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
项目统一框架
amos-boot-biz
Commits
c8e3f7b1
Commit
c8e3f7b1
authored
Aug 21, 2023
by
3533457856@qq.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
发货单
新增/编辑/详情接口 更新发货单状态接口
parent
0d3a6ec3
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
794 additions
and
9 deletions
+794
-9
PhoneRegisterTypeEum.java
.../amos/boot/module/hygf/api/Enum/PhoneRegisterTypeEum.java
+38
-0
MobileLoginParamDto.java
...in/amos/boot/module/hygf/api/dto/MobileLoginParamDto.java
+58
-0
PeasantHouseholdDto.java
...in/amos/boot/module/hygf/api/dto/PeasantHouseholdDto.java
+29
-0
PeasantHouseholdWxDto.java
.../amos/boot/module/hygf/api/dto/PeasantHouseholdWxDto.java
+59
-0
PeasantHousehold.java
...in/amos/boot/module/hygf/api/entity/PeasantHousehold.java
+46
-0
PeasantHouseholdWxController.java
...ule/hygf/biz/controller/PeasantHouseholdWxController.java
+245
-0
PeasantHouseholdServiceImpl.java
...le/hygf/biz/service/impl/PeasantHouseholdServiceImpl.java
+227
-0
WxServiceImpl.java
...amos/boot/module/hygf/biz/service/impl/WxServiceImpl.java
+76
-0
application-dev.properties
...le-hygf-biz/src/main/resources/application-dev.properties
+16
-9
No files found.
amos-boot-system-jxiop/amos-boot-module-hygf-api/src/main/java/com/yeejoin/amos/boot/module/hygf/api/Enum/PhoneRegisterTypeEum.java
0 → 100644
View file @
c8e3f7b1
package
com
.
yeejoin
.
amos
.
boot
.
module
.
hygf
.
api
.
Enum
;
/**
* @author DELL
* 手机登录类型: 2020年底 驻场开发
*/
public
enum
PhoneRegisterTypeEum
{
WX
(
"微信授权快捷登录"
,
1
),
PHONE_VERIFY
(
"手机验证登录"
,
2
);
private
String
name
;
private
int
code
;
PhoneRegisterTypeEum
(
String
name
,
int
code
){
this
.
name
=
name
;
this
.
code
=
code
;
}
public
String
getName
()
{
return
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
public
int
getCode
()
{
return
code
;
}
public
void
setCode
(
int
code
)
{
this
.
code
=
code
;
}
}
amos-boot-system-jxiop/amos-boot-module-hygf-api/src/main/java/com/yeejoin/amos/boot/module/hygf/api/dto/MobileLoginParamDto.java
0 → 100644
View file @
c8e3f7b1
package
com
.
yeejoin
.
amos
.
boot
.
module
.
hygf
.
api
.
dto
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
*
* @author Provence
* @version v1.0
* @date 2023/8/21 15:15
*/
@Data
public
class
MobileLoginParamDto
{
/**
* 注册类型:1-微信授权快捷登录;2-手机验证登录
*/
@ApiModelProperty
(
"注册类型:1-微信授权快捷登录;2-手机验证登录"
)
private
int
registerType
;
/**
* 是否需要需要短信验证: true-验证; false-不验证
*/
@ApiModelProperty
(
"是否需要需要短信验证: true-验证; false-不验证"
)
private
Boolean
isNeedVerify
;
/**
* 注册类型为1时使用:微信用户数据字段1,根据1、2进行数据解密,计算出手机号
*/
@ApiModelProperty
(
"注册类型为1时使用:微信用户数据字段1,根据1、2进行数据解密,计算出手机号"
)
private
String
encryptedData
;
/**
* 注册类型为1时使用:微信用户数据字段2,根据1、2进行数据解密,计算出手机号
*/
@ApiModelProperty
(
"注册类型为1时使用:微信用户数据字段1,根据1、2进行数据解密,计算出手机号"
)
private
String
iv
;
/**
*注册类型为1时使用:微信用户数据字段3,根据1、2、3进行数据解密,计算出手机号
*/
@ApiModelProperty
(
"注册类型为1时使用:微信用户数据字段3,根据1、2、3进行数据解密,计算出手机号"
)
private
String
code
;
/**
* 注册类型为2-手机验证登录时使用:手机号
*/
@ApiModelProperty
(
"注册类型为2-手机验证登录时使用:手机号"
)
private
String
phoneNo
;
/**
* 注册类型为2-手机验证登录时使用:验证码
*/
@ApiModelProperty
(
"注册类型为2-手机验证登录时使用:验证码"
)
private
String
verifyCode
;
private
PeasantHouseholdDto
peasantHouseholdDto
;
}
amos-boot-system-jxiop/amos-boot-module-hygf-api/src/main/java/com/yeejoin/amos/boot/module/hygf/api/dto/PeasantHouseholdDto.java
View file @
c8e3f7b1
...
@@ -103,4 +103,33 @@ public class PeasantHouseholdDto extends BaseDto {
...
@@ -103,4 +103,33 @@ public class PeasantHouseholdDto extends BaseDto {
@ApiModelProperty
(
value
=
"常住地址文字"
)
@ApiModelProperty
(
value
=
"常住地址文字"
)
@TableField
(
typeHandler
=
FastjsonTypeHandler
.
class
)
@TableField
(
typeHandler
=
FastjsonTypeHandler
.
class
)
private
List
<
String
>
permanentAddressText
;
private
List
<
String
>
permanentAddressText
;
@ApiModelProperty
(
value
=
"区域公司id"
)
private
String
companyId
;
@ApiModelProperty
(
value
=
"区域公司code"
)
private
String
companyCode
;
@ApiModelProperty
(
value
=
"区域公司名称"
)
private
String
companyName
;
@ApiModelProperty
(
value
=
"身份证正面"
)
@TableField
(
typeHandler
=
FastjsonTypeHandler
.
class
)
private
List
<
String
>
idCardFront
;
@ApiModelProperty
(
value
=
"身份证反面"
)
@TableField
(
typeHandler
=
FastjsonTypeHandler
.
class
)
private
List
<
String
>
idCardOpposite
;
@ApiModelProperty
(
value
=
"微信唯一id"
)
private
String
openId
;
@ApiModelProperty
(
value
=
"是否已认证(0-未认证,1-已认证)"
)
private
Integer
isCertified
;
@ApiModelProperty
(
value
=
"微信注册账号"
)
private
String
loginId
;
@ApiModelProperty
(
value
=
"微信注册密码"
)
private
String
loginPassword
;
}
}
amos-boot-system-jxiop/amos-boot-module-hygf-api/src/main/java/com/yeejoin/amos/boot/module/hygf/api/dto/PeasantHouseholdWxDto.java
0 → 100644
View file @
c8e3f7b1
package
com
.
yeejoin
.
amos
.
boot
.
module
.
hygf
.
api
.
dto
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler
;
import
com.yeejoin.amos.boot.module.hygf.api.entity.PeasantHousehold
;
import
com.yeejoin.amos.feign.privilege.model.AgencyUserModel
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
java.util.List
;
/**
*
* @author Provence
* @version v1.0
* @date 2023/8/21 13:16
*/
@Data
@ApiModel
(
value
=
"PeasantHouseholdWxDto"
,
description
=
"农户信息"
)
public
class
PeasantHouseholdWxDto
{
@ApiModelProperty
(
value
=
"登录方式"
)
private
String
loginType
;
@ApiModelProperty
(
value
=
"验证码登录code"
)
private
String
verifyCode
;
@ApiModelProperty
private
String
userState
;
@ApiModelProperty
private
AuthInfoDto
authInfo
;
@ApiModelProperty
(
value
=
"用户信息"
)
private
AgencyUserModel
userInfo
;
@ApiModelProperty
(
value
=
"农户信息"
)
private
PeasantHousehold
peasantHousehold
;
@Data
@ApiModel
(
value
=
"authInfo信息"
,
description
=
"authInfo信息"
)
public
static
class
AuthInfoDto
{
@ApiModelProperty
(
value
=
"登录token"
)
private
String
token
;
@ApiModelProperty
(
value
=
"用户id"
)
private
String
personId
;
@ApiModelProperty
(
value
=
"appKey"
)
private
String
appKey
;
@ApiModelProperty
(
value
=
"product"
)
private
String
product
;
}
}
amos-boot-system-jxiop/amos-boot-module-hygf-api/src/main/java/com/yeejoin/amos/boot/module/hygf/api/entity/PeasantHousehold.java
View file @
c8e3f7b1
...
@@ -140,4 +140,50 @@ public class PeasantHousehold extends BaseEntity {
...
@@ -140,4 +140,50 @@ public class PeasantHousehold extends BaseEntity {
* */
* */
@TableField
(
"developer"
)
@TableField
(
"developer"
)
private
String
developer
;
private
String
developer
;
/*
* 区域公司id
* */
@TableField
(
"company_id"
)
private
String
companyId
;
/*
* 区域公司code
* */
@TableField
(
"company_code"
)
private
String
companyCode
;
/*
* 区域公司名称
* */
@TableField
(
"company_name"
)
private
String
companyName
;
/*
* 身份证正面
* */
@TableField
(
value
=
"id_card_front"
,
typeHandler
=
FastjsonTypeHandler
.
class
)
private
List
<
String
>
idCardFront
;
/*
* 身份证反面
* */
@TableField
(
value
=
"id_card_opposite"
,
typeHandler
=
FastjsonTypeHandler
.
class
)
private
List
<
String
>
idCardOpposite
;
/*
* 微信唯一id
* */
@TableField
(
"open_id"
)
private
String
openId
;
/*
* 是否已认证(0-未认证,1-已认证)
* */
@TableField
(
"is_certified"
)
private
Integer
isCertified
;
/*
* 微信注册账号
* */
@TableField
(
"login_id"
)
private
String
loginId
;
/*
* 微信注册密码
* */
@TableField
(
"login_password"
)
private
String
loginPassword
;
}
}
amos-boot-system-jxiop/amos-boot-module-hygf-biz/src/main/java/com/yeejoin/amos/boot/module/hygf/biz/controller/PeasantHouseholdWxController.java
0 → 100644
View file @
c8e3f7b1
package
com
.
yeejoin
.
amos
.
boot
.
module
.
hygf
.
biz
.
controller
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONArray
;
import
com.yeejoin.amos.boot.biz.common.controller.BaseController
;
import
com.yeejoin.amos.boot.biz.common.utils.RedisUtils
;
import
com.yeejoin.amos.boot.module.hygf.api.dto.MobileLoginParamDto
;
import
com.yeejoin.amos.boot.module.hygf.api.dto.PeasantHouseholdDto
;
import
com.yeejoin.amos.boot.module.hygf.api.dto.PeasantHouseholdWxDto
;
import
com.yeejoin.amos.boot.module.hygf.api.dto.SurveyInformationDto
;
import
com.yeejoin.amos.boot.module.hygf.biz.service.impl.PeasantHouseholdServiceImpl
;
import
com.yeejoin.amos.boot.module.hygf.biz.service.impl.SurveyInformationServiceImpl
;
import
com.yeejoin.amos.component.feign.model.FeignClientResult
;
import
com.yeejoin.amos.feign.privilege.model.AgencyUserModel
;
import
com.yeejoin.amos.feign.systemctl.Systemctl
;
import
com.yeejoin.amos.feign.systemctl.model.RegionModel
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.DeleteMapping
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.PutMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.typroject.tyboot.core.foundation.enumeration.UserType
;
import
org.typroject.tyboot.core.restful.doc.TycloudOperation
;
import
org.typroject.tyboot.core.restful.utils.ResponseHelper
;
import
org.typroject.tyboot.core.restful.utils.ResponseModel
;
import
javax.servlet.http.HttpServletRequest
;
import
java.util.ArrayList
;
import
java.util.Collection
;
import
java.util.Date
;
import
java.util.List
;
/**
* 农户信息
*
* @author system_generator
* @date 2023-07-07
*/
@RestController
@Api
(
tags
=
"农户信息Api"
)
@RequestMapping
(
value
=
"/peasant-household/miniprogram"
)
public
class
PeasantHouseholdWxController
extends
BaseController
{
@Autowired
SurveyInformationServiceImpl
surveyInformationServiceImpl
;
@Autowired
PeasantHouseholdServiceImpl
peasantHouseholdServiceImpl
;
@Autowired
RedisUtils
redisUtils
;
private
static
final
String
regionRedis
=
"app_region_redis"
;
/**
* 新增农户信息
*
* @return
*/
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@PostMapping
(
value
=
"/save"
)
@ApiOperation
(
httpMethod
=
"POST"
,
value
=
"新增农户信息"
,
notes
=
"新增农户信息"
)
public
ResponseModel
<
PeasantHouseholdDto
>
save
(
@RequestBody
PeasantHouseholdDto
model
)
{
AgencyUserModel
userInfo
=
getUserInfo
();
SurveyInformationDto
surveyInformationDto
=
new
SurveyInformationDto
();
surveyInformationServiceImpl
.
createWithModel
(
surveyInformationDto
);
JSONArray
regionName
=
getRegionName
();
List
<
RegionModel
>
list
=
JSONArray
.
parseArray
(
regionName
.
toJSONString
(),
RegionModel
.
class
);
// 处理项目地址
String
area
=
""
;
if
(
model
.
getProjectAddress
().
size
()
!=
0
)
{
for
(
Integer
reg
:
model
.
getProjectAddress
())
for
(
RegionModel
re
:
list
)
{
if
(
re
.
getRegionCode
().
equals
(
Integer
.
valueOf
(
reg
)))
{
area
=
area
+
re
.
getRegionName
()
+
"/"
;
}
}
model
.
setProjectAddressName
(
area
.
substring
(
0
,
area
.
length
()
-
2
));
if
(
"1"
.
equals
(
model
.
getIsPermanent
()))
{
model
.
setPermanentAddress
(
model
.
getProjectAddress
());
model
.
setPermanentAddressDetail
(
model
.
getProjectAddressDetail
());
model
.
setPermanentAddressName
(
area
.
substring
(
0
,
area
.
length
()
-
2
));
}
else
{
// 处理常住地址
String
permanent
=
""
;
if
(
model
.
getPermanentAddress
().
size
()
!=
0
)
{
for
(
Integer
reg
:
model
.
getPermanentAddress
())
for
(
RegionModel
re
:
list
)
{
if
(
re
.
getRegionCode
().
equals
(
Integer
.
valueOf
(
reg
)))
{
permanent
=
permanent
+
re
.
getRegionName
()
+
"/"
;
}
}
model
.
setPermanentAddressName
(
permanent
.
substring
(
0
,
permanent
.
length
()
-
2
));
}
}
}
model
.
setSurveyInformationId
(
surveyInformationDto
.
getSequenceNbr
());
model
.
setSurveyOrNot
(
0
);
model
.
setReview
(
0
);
model
.
setDeveloperCode
(
userInfo
.
getCompanys
().
get
(
0
).
getOrgCode
());
model
.
setDeveloperId
(
userInfo
.
getCompanys
().
get
(
0
).
getSequenceNbr
());
model
.
setDeveloperName
(
userInfo
.
getOrgNamesWithoutRole
());
if
(
StringUtils
.
isEmpty
(
model
.
getDeveloper
())){
model
.
setDeveloper
(
userInfo
.
getRealName
());
}
if
(
model
.
getCreationTime
()
==
null
){
model
.
setCreationTime
(
new
Date
());
}
model
.
setIsCertified
(
0
);
// 未认证
PeasantHouseholdDto
householdDto
=
peasantHouseholdServiceImpl
.
createWithModel
(
model
);
return
ResponseHelper
.
buildResponse
(
householdDto
);
}
/**
* 根据sequenceNbr更新
*
* @param sequenceNbr 主键
* @return
*/
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@PutMapping
(
value
=
"/{sequenceNbr}"
)
@ApiOperation
(
httpMethod
=
"PUT"
,
value
=
"根据sequenceNbr更新农户信息"
,
notes
=
"根据sequenceNbr更新农户信息"
)
public
ResponseModel
<
PeasantHouseholdDto
>
updateBySequenceNbrPeasantHousehold
(
@RequestBody
PeasantHouseholdDto
model
,
@PathVariable
(
value
=
"sequenceNbr"
)
Long
sequenceNbr
)
{
model
.
setSequenceNbr
(
sequenceNbr
);
JSONArray
regionName
=
getRegionName
();
List
<
RegionModel
>
list
=
JSONArray
.
parseArray
(
regionName
.
toJSONString
(),
RegionModel
.
class
);
if
(
model
.
getProjectAddress
().
size
()>
0
){
// 处理项目地址
String
projectAddressName
=
""
;
for
(
Integer
reg
:
model
.
getProjectAddress
())
for
(
RegionModel
re
:
list
)
{
if
(
re
.
getRegionCode
().
equals
(
Integer
.
valueOf
(
reg
)))
{
projectAddressName
=
projectAddressName
+
re
.
getRegionName
()
+
"/"
;
}
}
model
.
setProjectAddressName
(
projectAddressName
.
substring
(
0
,
projectAddressName
.
length
()
-
2
));
}
if
(
"1"
.
equals
(
model
.
getIsPermanent
()))
{
model
.
setPermanentAddress
(
model
.
getProjectAddress
());
model
.
setPermanentAddressDetail
(
model
.
getProjectAddressDetail
());
}
if
(
model
.
getPermanentAddress
().
size
()>
0
){
// 处理常驻地址
String
permanentAddressName
=
""
;
for
(
Integer
reg
:
model
.
getPermanentAddress
())
for
(
RegionModel
re
:
list
)
{
if
(
re
.
getRegionCode
().
equals
(
Integer
.
valueOf
(
reg
)))
{
permanentAddressName
=
permanentAddressName
+
re
.
getRegionName
()
+
"/"
;
}
}
model
.
setPermanentAddressName
(
permanentAddressName
.
substring
(
0
,
permanentAddressName
.
length
()
-
2
));
}
PeasantHouseholdDto
peasantHouseholdDto
=
peasantHouseholdServiceImpl
.
queryBySeq
(
sequenceNbr
);
BeanUtils
.
copyProperties
(
model
,
peasantHouseholdDto
);
return
ResponseHelper
.
buildResponse
(
peasantHouseholdServiceImpl
.
updateWithModel
(
peasantHouseholdDto
));
}
/**
* 根据sequenceNbr删除
*
* @param sequenceNbr 主键
* @return
*/
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@DeleteMapping
(
value
=
"/{sequenceNbr}"
)
@ApiOperation
(
httpMethod
=
"DELETE"
,
value
=
"根据sequenceNbr删除农户信息"
,
notes
=
"根据sequenceNbr删除农户信息"
)
public
ResponseModel
<
Boolean
>
deleteBySequenceNbr
(
HttpServletRequest
request
,
@PathVariable
(
value
=
"sequenceNbr"
)
Long
sequenceNbr
){
return
ResponseHelper
.
buildResponse
(
peasantHouseholdServiceImpl
.
deletePeasantHouseholdBySequenceNbr
(
sequenceNbr
));
}
/**
* 根据sequenceNbr查询
*
* @param sequenceNbr 主键
* @return
*/
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@GetMapping
(
value
=
"/{sequenceNbr}"
)
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"根据sequenceNbr查询单个农户信息"
,
notes
=
"根据sequenceNbr查询单个农户信息"
)
public
ResponseModel
<
PeasantHouseholdDto
>
selectOne
(
@PathVariable
Long
sequenceNbr
)
{
PeasantHouseholdDto
peasantHouseholdDto
=
peasantHouseholdServiceImpl
.
queryBySeq
(
sequenceNbr
);
if
(
JSON
.
toJSONString
(
peasantHouseholdDto
.
getProjectAddress
()).
equals
(
JSON
.
toJSONString
(
peasantHouseholdDto
.
getPermanentAddress
()))){
peasantHouseholdDto
.
setIsPermanent
(
"1"
);
}
else
{
peasantHouseholdDto
.
setIsPermanent
(
"0"
);
}
return
ResponseHelper
.
buildResponse
(
peasantHouseholdDto
);
}
public
JSONArray
getRegionName
(){
JSONArray
jsonArray
=
new
JSONArray
();
if
(
redisUtils
.
hasKey
(
regionRedis
))
{
jsonArray
=
JSONArray
.
parseArray
(
redisUtils
.
get
(
regionRedis
).
toString
());
}
else
{
Collection
<
RegionModel
>
regionChild
=
new
ArrayList
<>();
RegionModel
regionModel1
=
new
RegionModel
();
regionChild
.
add
(
regionModel1
);
FeignClientResult
<
Collection
<
RegionModel
>>
collectionFeignClientResult
=
Systemctl
.
regionClient
.
queryForTreeParent
(
610000L
);
Collection
<
RegionModel
>
result
=
collectionFeignClientResult
.
getResult
();
for
(
RegionModel
regionModel
:
result
)
{
if
(
null
!=
regionModel
&&
null
!=
regionModel
.
getChildren
())
{
for
(
RegionModel
child
:
regionModel
.
getChildren
())
{
if
(
null
!=
child
&&
null
!=
child
.
getChildren
())
{
for
(
RegionModel
childChild
:
child
.
getChildren
())
{
jsonArray
.
add
(
childChild
);
}
child
.
setChildren
(
regionChild
);
jsonArray
.
add
(
child
);
}
}
regionModel
.
setChildren
(
regionChild
);
jsonArray
.
add
(
regionModel
);
}
}
redisUtils
.
set
(
regionRedis
,
jsonArray
);
}
return
jsonArray
;
}
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
,
needAuth
=
false
)
@RequestMapping
(
value
=
"/mobile/login"
,
method
=
RequestMethod
.
POST
)
@ApiOperation
(
httpMethod
=
"POST"
,
value
=
"微信授权登陆"
,
notes
=
"微信授权登陆"
)
public
ResponseModel
<
PeasantHouseholdWxDto
>
wxUserLogin
(
@RequestBody
MobileLoginParamDto
wx
)
{
return
ResponseHelper
.
buildResponse
(
peasantHouseholdServiceImpl
.
wxUserLogin
(
wx
));
}
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
,
needAuth
=
false
)
@RequestMapping
(
value
=
"/mobile/register"
,
method
=
RequestMethod
.
POST
)
@ApiOperation
(
httpMethod
=
"POST"
,
value
=
"微信农户注册"
,
notes
=
"微信农户注册"
)
public
ResponseModel
<
PeasantHouseholdWxDto
>
wxUserRegister
(
@RequestBody
MobileLoginParamDto
wx
)
{
return
ResponseHelper
.
buildResponse
(
peasantHouseholdServiceImpl
.
wxUserRegister
(
wx
));
}
}
amos-boot-system-jxiop/amos-boot-module-hygf-biz/src/main/java/com/yeejoin/amos/boot/module/hygf/biz/service/impl/PeasantHouseholdServiceImpl.java
View file @
c8e3f7b1
package
com
.
yeejoin
.
amos
.
boot
.
module
.
hygf
.
biz
.
service
.
impl
;
package
com
.
yeejoin
.
amos
.
boot
.
module
.
hygf
.
biz
.
service
.
impl
;
import
com.alibaba.fastjson.JSONObject
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.yeejoin.amos.boot.biz.common.utils.RedisUtils
;
import
com.yeejoin.amos.boot.module.hygf.api.Enum.PhoneRegisterTypeEum
;
import
com.yeejoin.amos.boot.module.hygf.api.dto.MobileLoginParamDto
;
import
com.yeejoin.amos.boot.module.hygf.api.dto.PeasantHouseholdWxDto
;
import
com.yeejoin.amos.boot.module.hygf.api.entity.Commercial
;
import
com.yeejoin.amos.boot.module.hygf.api.entity.Commercial
;
import
com.yeejoin.amos.boot.module.hygf.api.entity.ExtendedInformation
;
import
com.yeejoin.amos.boot.module.hygf.api.entity.ExtendedInformation
;
import
com.yeejoin.amos.boot.module.hygf.api.entity.Information
;
import
com.yeejoin.amos.boot.module.hygf.api.entity.Information
;
...
@@ -9,15 +14,34 @@ import com.yeejoin.amos.boot.module.hygf.api.entity.SurveyDetails;
...
@@ -9,15 +14,34 @@ import com.yeejoin.amos.boot.module.hygf.api.entity.SurveyDetails;
import
com.yeejoin.amos.boot.module.hygf.api.mapper.PeasantHouseholdMapper
;
import
com.yeejoin.amos.boot.module.hygf.api.mapper.PeasantHouseholdMapper
;
import
com.yeejoin.amos.boot.module.hygf.api.service.IPeasantHouseholdService
;
import
com.yeejoin.amos.boot.module.hygf.api.service.IPeasantHouseholdService
;
import
com.yeejoin.amos.boot.module.hygf.api.dto.PeasantHouseholdDto
;
import
com.yeejoin.amos.boot.module.hygf.api.dto.PeasantHouseholdDto
;
import
com.yeejoin.amos.boot.module.jxiop.api.util.HttpUtil
;
import
com.yeejoin.amos.component.feign.model.FeignClientResult
;
import
com.yeejoin.amos.feign.privilege.Privilege
;
import
com.yeejoin.amos.feign.privilege.model.AgencyUserModel
;
import
com.yeejoin.amos.feign.privilege.model.VerifyCodeAuthModel
;
import
com.yeejoin.amos.feign.privilege.util.DesUtil
;
import
lombok.Data
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.http.client.methods.CloseableHttpResponse
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.typroject.tyboot.core.foundation.context.RequestContext
;
import
org.typroject.tyboot.core.rdbms.annotation.Condition
;
import
org.typroject.tyboot.core.rdbms.annotation.Condition
;
import
org.typroject.tyboot.core.rdbms.annotation.Operator
;
import
org.typroject.tyboot.core.rdbms.annotation.Operator
;
import
org.typroject.tyboot.core.rdbms.service.BaseService
;
import
org.typroject.tyboot.core.rdbms.service.BaseService
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
org.typroject.tyboot.core.restful.exception.instance.BadRequest
;
import
javax.crypto.Cipher
;
import
javax.crypto.spec.IvParameterSpec
;
import
javax.crypto.spec.SecretKeySpec
;
import
java.io.InputStream
;
import
java.security.spec.AlgorithmParameterSpec
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.Arrays
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.List
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
...
@@ -109,4 +133,206 @@ public class PeasantHouseholdServiceImpl extends BaseService<PeasantHouseholdDto
...
@@ -109,4 +133,206 @@ public class PeasantHouseholdServiceImpl extends BaseService<PeasantHouseholdDto
public
List
<
PeasantHouseholdDto
>
queryForPeasantHouseholdList
()
{
public
List
<
PeasantHouseholdDto
>
queryForPeasantHouseholdList
()
{
return
this
.
queryForList
(
""
,
false
);
return
this
.
queryForList
(
""
,
false
);
}
}
@Value
(
"${security.productWeb}"
)
private
String
product
;
@Value
(
"${security.appKey}"
)
private
String
appKey
;
@Autowired
RedisUtils
redisUtils
;
@Value
(
"${login.environment}"
)
private
String
loginEnvironment
;
private
Long
TOKEN_TIME
=
1209600
l
;
@Autowired
private
WxServiceImpl
wxService
;
public
PeasantHouseholdWxDto
wxUserLogin
(
MobileLoginParamDto
wxDTO
)
{
// 判断是否注册过
/*boolean isUseVerifyCode = "2".equals(wxDTO.getRegisterType());
if (isUseVerifyCode) {
peasantHousehold = this.query().eq("telephone", wxDTO.getPhoneNo()).one();
} else {
peasantHousehold = this.query().eq("open_id", wxDTO.getOpenId()).one();
}*/
// 通过手机号和验证码调用平台接口进行验证
String
phoneNo
=
this
.
parsePhoneNo
(
wxDTO
);
if
(
phoneNo
==
null
)
{
throw
new
BadRequest
(
"获取手机号失败!"
);
}
PeasantHousehold
peasantHousehold
=
this
.
query
().
eq
(
"telephone"
,
phoneNo
).
one
();
// 在平台里注册过但是没有农户信息
/*String loginId;
String password;*/
if
(
null
==
peasantHousehold
)
{
// 没注册过,进行返回
PeasantHouseholdWxDto
peasantHouseholdWxDto
=
new
PeasantHouseholdWxDto
();
AgencyUserModel
agencyUserModel
=
new
AgencyUserModel
();
agencyUserModel
.
setMobile
(
phoneNo
);
peasantHouseholdWxDto
.
setUserInfo
(
agencyUserModel
);
peasantHouseholdWxDto
.
setUserState
(
"0"
);
return
peasantHouseholdWxDto
;
}
PeasantHouseholdWxDto
loginResult
=
doLogin
(
wxDTO
);
loginResult
.
setPeasantHousehold
(
peasantHousehold
);
return
loginResult
;
}
public
PeasantHouseholdWxDto
wxUserRegister
(
MobileLoginParamDto
wxDTO
)
{
// 注册用户
doRegister
(
wxDTO
);
// 创建一个农户信息
PeasantHouseholdDto
peasantHouseholdDto
=
wxDTO
.
getPeasantHouseholdDto
();
peasantHouseholdDto
=
this
.
createWithModel
(
peasantHouseholdDto
);
PeasantHouseholdWxDto
loginResult
=
doLogin
(
wxDTO
);
PeasantHousehold
peasantHousehold
=
new
PeasantHousehold
();
BeanUtils
.
copyProperties
(
peasantHouseholdDto
,
peasantHousehold
);
loginResult
.
setPeasantHousehold
(
peasantHousehold
);
return
loginResult
;
}
public
AgencyUserModel
doRegister
(
MobileLoginParamDto
mobileLoginParamDto
)
{
/*FeignClientResult<List<RoleModel>> roleListResult = Privilege.roleClient.queryRoleList(null, null);
List<RoleModel> allRoleList = roleListResult.getResult();
List<RoleModel> userRoleList = new ArrayList<>();
List<Long> roleIds = new ArrayList<>();
// 创建一个空的用户信息,等待认证
String custPassword = DesUtil.encode(password, "qaz");
List<String> split = Arrays.asList(StringUtils.split(appCodes, ','));
Map<Long, List<Long>> roleSeqMap = new HashMap<>();
Map<Long, List<RoleModel>> orgRoles = new HashMap<>();
userRoleList = allRoleList.stream().filter(r -> r.getRoleName().equals(regUnitInfo.getUnitTypeCode()))
.collect(Collectors.toList());
userRoleList.forEach(r -> {
if (!roleIds.contains(r.getSequenceNbr())) {
roleIds.add(r.getSequenceNbr());
}
});
roleSeqMap.put(companyInfo.getSequenceNbr(), roleIds);
orgRoles.put(companyInfo.getSequenceNbr(), userRoleList);*/
//
String
custPassword
=
DesUtil
.
encode
(
mobileLoginParamDto
.
getPhoneNo
(),
"qaz"
);
AgencyUserModel
agencyUserModel
=
new
AgencyUserModel
();
agencyUserModel
.
setUserName
(
mobileLoginParamDto
.
getPhoneNo
());
agencyUserModel
.
setRealName
(
mobileLoginParamDto
.
getPhoneNo
());
agencyUserModel
.
setPassword
(
custPassword
);
agencyUserModel
.
setRePassword
(
custPassword
);
agencyUserModel
.
setLockStatus
(
"LOCK"
);
agencyUserModel
.
setAgencyCode
(
"JXIOP"
);
agencyUserModel
.
setMobile
(
mobileLoginParamDto
.
getPhoneNo
());
/*agencyUserModel.setAppCodes(split);
agencyUserModel.setOrgRoles(orgRoles);
agencyUserModel.setOrgRoleSeqs(roleSeqMap);*/
FeignClientResult
<
AgencyUserModel
>
userResult
=
Privilege
.
agencyUserClient
.
create
(
agencyUserModel
);
if
(
userResult
==
null
||
userResult
.
getResult
()
==
null
)
{
throw
new
BadRequest
(
"单位注册失败"
);
}
return
userResult
.
getResult
();
}
public
PeasantHouseholdWxDto
doLogin
(
MobileLoginParamDto
param
)
{
RequestContext
.
setToken
(
""
);
RequestContext
.
setProduct
(
product
);
RequestContext
.
setAppKey
(
appKey
);
/*IdPasswordAuthModel idPasswordAuthModel = new IdPasswordAuthModel();
idPasswordAuthModel.setLoginId(loginId);
idPasswordAuthModel.setPassword(password);*/
String
phoneNo
=
this
.
parsePhoneNo
(
param
);
if
(
phoneNo
==
null
)
{
throw
new
BadRequest
(
"获取手机号失败!"
);
}
VerifyCodeAuthModel
model
=
new
VerifyCodeAuthModel
();
model
.
setLoginId
(
phoneNo
);
if
(!
param
.
getIsNeedVerify
()
||
(
"dev"
.
equals
(
loginEnvironment
)
&&
"666666"
.
equals
(
param
.
getVerifyCode
())))
{
model
.
setVerifyCode
(
com
.
yeejoin
.
precontrol
.
common
.
utils
.
DesUtil
.
encode
(
phoneNo
,
phoneNo
));
}
else
{
model
.
setVerifyCode
(
param
.
getVerifyCode
());
}
// FeignClientResult loginResult = Privilege.authClient.idpassword(idPasswordAuthModel);
FeignClientResult
loginResult
=
Privilege
.
authClient
.
mobileVerifyCode
(
model
);
if
(
loginResult
.
getStatus
()
!=
200
)
{
log
.
error
(
"远程调用Privilege服务失败: "
+
loginResult
.
getDevMessage
());
String
message
=
StringUtils
.
isEmpty
(
loginResult
.
getMessage
())
?
"账号或密码错误"
:
loginResult
.
getMessage
();
throw
new
BadRequest
(
message
);
}
HashMap
resultMap
=
(
HashMap
)
loginResult
.
getResult
();
String
token
=
resultMap
.
get
(
"token"
).
toString
();
RequestContext
.
setToken
(
token
);
// redisUtils.set(model.getPhone() + "_token", token, TOKEN_TIME);
// 设置登录信息
PeasantHouseholdWxDto
peasantHouseholdWxDto
=
new
PeasantHouseholdWxDto
();
// 设置authInfo信息
PeasantHouseholdWxDto
.
AuthInfoDto
authInfoDto
=
new
PeasantHouseholdWxDto
.
AuthInfoDto
();
authInfoDto
.
setToken
(
token
);
authInfoDto
.
setPersonId
((
String
)
resultMap
.
get
(
"userId"
));
authInfoDto
.
setAppKey
(
appKey
);
authInfoDto
.
setProduct
(
product
);
peasantHouseholdWxDto
.
setAuthInfo
(
authInfoDto
);
// 查询用户信息
FeignClientResult
<
AgencyUserModel
>
getme
=
Privilege
.
agencyUserClient
.
getme
();
getme
.
getResult
().
setPassword
(
""
);
getme
.
getResult
().
setAppCodes
(
new
ArrayList
());
AgencyUserModel
userModel
=
(
AgencyUserModel
)
getme
.
getResult
();
peasantHouseholdWxDto
.
setUserInfo
(
userModel
);
return
peasantHouseholdWxDto
;
}
/**
* 手机号解析
*
* @param param MobileLoginParam.class
* @return String phoneNo
*/
private
String
parsePhoneNo
(
MobileLoginParamDto
param
)
{
if
(
param
.
getRegisterType
()
==
PhoneRegisterTypeEum
.
WX
.
getCode
())
{
// 进行验证码解析
String
encryptedData
=
param
.
getEncryptedData
();
String
iv
=
param
.
getIv
();
String
code
=
param
.
getCode
();
return
getPhoneNumber
(
wxService
.
getSessionKey
(
code
),
encryptedData
,
iv
);
}
else
{
return
param
.
getPhoneNo
();
}
}
public
String
getPhoneNumber
(
String
sessionkey
,
String
encryptedData
,
String
iv
)
{
byte
[]
encrypData
=
java
.
util
.
Base64
.
getDecoder
().
decode
(
encryptedData
);
byte
[]
ivData
=
java
.
util
.
Base64
.
getDecoder
().
decode
(
iv
);
byte
[]
sessionKey
=
java
.
util
.
Base64
.
getDecoder
().
decode
(
sessionkey
);
String
resultString
=
null
;
AlgorithmParameterSpec
ivSpec
=
new
IvParameterSpec
(
ivData
);
SecretKeySpec
keySpec
=
new
SecretKeySpec
(
sessionKey
,
"AES"
);
try
{
Cipher
cipher
=
Cipher
.
getInstance
(
"AES/CBC/PKCS5Padding"
);
cipher
.
init
(
Cipher
.
DECRYPT_MODE
,
keySpec
,
ivSpec
);
resultString
=
new
String
(
cipher
.
doFinal
(
encrypData
),
"UTF-8"
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
JSONObject
object
=
JSONObject
.
parseObject
(
resultString
);
if
(
object
!=
null
)
{
// 拿到手机号码
String
phone
=
object
.
getString
(
"phoneNumber"
);
return
phone
;
}
return
null
;
}
}
}
\ No newline at end of file
amos-boot-system-jxiop/amos-boot-module-hygf-biz/src/main/java/com/yeejoin/amos/boot/module/hygf/biz/service/impl/WxServiceImpl.java
0 → 100644
View file @
c8e3f7b1
package
com
.
yeejoin
.
amos
.
boot
.
module
.
hygf
.
biz
.
service
.
impl
;
import
com.alibaba.fastjson.JSONObject
;
import
com.yeejoin.amos.boot.module.jxiop.api.util.HttpUtil
;
import
lombok.Data
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.http.client.methods.CloseableHttpResponse
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Service
;
import
org.typroject.tyboot.core.restful.exception.instance.BadRequest
;
import
java.io.InputStream
;
/**
* TODO(一句话描述该类的功能)
*
* @author Provence
* @version v1.0
* @date 2023/8/21 16:21
*/
@Slf4j
@Component
public
class
WxServiceImpl
{
@Value
(
"${hygfProgram.appid}"
)
private
String
appId
;
@Value
(
"${hygfProgram.secret}"
)
private
String
secret
;
public
String
getSessionKey
(
String
code
)
{
JSONObject
jsonObject
=
getCode2Session
(
code
);
String
sessionKey
=
null
;
if
(
jsonObject
!=
null
)
{
sessionKey
=
jsonObject
.
getString
(
"session_key"
);
}
return
sessionKey
;
}
public
JSONObject
getCode2Session
(
String
code
)
{
String
url
=
buildOpenIdUrl
(
appId
,
secret
,
code
);
String
resultStr
=
HttpUtil
.
sendHttpGet
(
url
);
ResponeVo
responeVo
=
JSONObject
.
parseObject
(
resultStr
,
ResponeVo
.
class
);
log
.
error
(
"手机号解析结果"
+
JSONObject
.
toJSONString
(
responeVo
));
System
.
out
.
println
(
"手机号解析结果"
+
JSONObject
.
toJSONString
(
responeVo
));
JSONObject
jsonObject
=
JSONObject
.
parseObject
(
responeVo
.
getContent
());
if
(
jsonObject
!=
null
)
{
int
errcode
=
jsonObject
.
getIntValue
(
"errcode"
);
if
(
errcode
==
0
)
{
// session_key 会话秘钥
// String openId = jsonObject.getString("openid");
return
jsonObject
;
}
else
{
throw
new
BadRequest
(
jsonObject
.
getString
(
"errmsg"
));
}
}
else
{
throw
new
BadRequest
(
"微信接口调用失败"
);
}
}
private
String
buildOpenIdUrl
(
String
appId
,
String
secret
,
String
code
)
{
String
url
=
"https://api.weixin.qq.com/sns/jscode2session?appid="
+
appId
+
"&secret="
+
secret
+
"&js_code="
+
code
+
"&grant_type=authorization_code"
;
return
url
;
}
@Data
public
static
class
ResponeVo
{
int
code
;
CloseableHttpResponse
response
;
String
content
;
byte
[]
inStream
;
InputStream
inputStream
;
}
}
amos-boot-system-jxiop/amos-boot-module-hygf-biz/src/main/resources/application-dev.properties
View file @
c8e3f7b1
...
@@ -85,30 +85,36 @@ spring.jms.pub-sub-domain=false
...
@@ -85,30 +85,36 @@ spring.jms.pub-sub-domain=false
myqueue
=
amos.privilege.v1.JXIOP.AQSC_FDGL.userBusiness
myqueue
=
amos.privilege.v1.JXIOP.AQSC_FDGL.userBusiness
regulator.unit.code
=
86*258
regulator.unit.code
=
86*258
#
经销商应用c
ode
#
经销商应用cod
e
dealer.appcode
=
studio_normalapp_5133538
dealer.appcode
=
studio_normalapp_5133538
hygf.sms.tempCode
=
SMS_HYGF_0001
hygf.sms.tempCode
=
SMS_HYGF_0001
#
华为短信相关配置
#
华为短信相关配置
sms.huawei.url
=
https://smsapi.cn-north-4.myhuaweicloud.com:443/sms/batchSendSms/v1
sms.huawei.url
=
https://smsapi.cn-north-4.myhuaweicloud.com:443/sms/batchSendSms/v1
sms.huawei.appKey
=
n3FYPWO7Heo1ze212QRBvF4VA2E2
sms.huawei.appKey
=
n3FYPWO7Heo1ze212QRBvF4VA2E2
sms.huawei.appSecret
=
IFhiMpWROi7w4Ei21ZbfIjKyt97b
sms.huawei.appSecret
=
IFhiMpWROi7w4Ei21ZbfIjKyt97b
#
模板
id
#
模板i
d
sms.huawei.templateId
=
6aaeb4bf916d4db0a1942c598912519e
sms.huawei.templateId
=
6aaeb4bf916d4db0a1942c598912519e
#
签名通道号
#
签名通道号
sms.huawei.sender
=
1069368924410006092
sms.huawei.sender
=
1069368924410006092
#
签名名称
#
签名名称
sms.huawei.signature
=
华为云短信测试
sms.huawei.signature
=
华为云短信测试
#
审核pageId确认
#
审核pageId确认
power.station.examine.pageId
=
1680853427061551106
power.station.examine.pageId
=
1680853427061551106
#
电站审核计划
id
#
电站审核计划id
power.station.examine.planId
=
c4ed1873-0dc6-4518-a7a9-dbc588ef35e5
power.station.examine.planId
=
c4ed1873-0dc6-4518-a7a9-dbc588ef35e5
#
用户组u
serGroupId
#
用户组us
erGroupId
hygf.user.group.id
=
1679755750924120066
hygf.user.group.id
=
1679755750924120066
unitInfo.station.examine.planId
=
51776087-a9cf-4a87-9a03-24fd24a8cf45
unitInfo.station.examine.planId
=
51776087-a9cf-4a87-9a03-24fd24a8cf45
hygf.sms.tempCodeJXS
=
SMS_HYGF_0002
hygf.sms.tempCodeJXS
=
SMS_HYGF_0002
login.environment
=
security.productWeb
=
security.appKey
=
hygfProgram.appid
=
wx2188769349b1ddeb
hygfProgram.secret
=
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment